Support #373
grn_table_cursor_openについて、GRN_CURSOR_PREFIX flagについての解説がない。
| Status: | 完了 | Start: | 06/30/2010 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assigned to: | % Done: | 0% |
||
| Category: | - | Spent time: | - | |
| Target version: | 1.0 |
Description
grn_table_cursor_openについて、GRN_CURSOR_PREFIX flagについての解説がない。
解説のサンプルを記述し、添付した。
History
Updated by Tasuku SUENAGA 2 months ago
- Status changed from 新規 to 担当者作業中
- Assigned to set to Tasuku SUENAGA
GRN_CURSOR_PREFIXを指定した場合には、
GRN_CURSOR_BY_IDは無視される、ではなく、
両者は同時に指定できない、とする。
Updated by Tasuku SUENAGA 2 months ago
- Status changed from 担当者作業中 to 完了チェック待ち
commit a4ce6662116ec2c6aefae0131446fa165ee52b94
にて説明を追加。
Updated by Tasuku SUENAGA 2 months ago
- Status changed from 完了チェック待ち to 要仕様議論
prefix検索モードと、近傍/common prefix検索モードを分かつ条件について、
commit 771102563c5264845aff0e3a0d0803194516a87eにおいて、groonga.hでの解説は誤っている。
「maxが非NULLである(指定されている)場合」ではなく、
「max_sizeが非0である場合」が条件となる。
pat.cの2022行目は以下のようになっているためである。
if (max_size) {
ドキュメントどおり、maxが非NULLであるかどうかを分岐条件とする、と仕様変更する手もある。
なぜなら、set_cursor_common_prefix()もset_cursor_near()もmaxは非NULLであることを要求しているからである。
set_cursor_near()ではmax_sizeは結局捨てている。
このような仕様変更を行っても、例えばgrn_table_sort_geo()など既存の実装には影響しない。
maxが非NULLかつmax_sizeが非0であることをチェックするのもよい。
さらに、max_sizeがtableの主キーのサイズと一致していることをチェックできれば、一番安全ではある。
if (max && max_size) {
... or ...
if (max && key_size(table) == max_size) { /* 擬似コード */
これらの場合には、groonga.hでの解説において、
「max_sizeはmaxのサイズを指定し、主キーのサイズと同一でなければならない」ということを追記する。
Updated by Tasuku SUENAGA about 1 month ago
if (max && max_size) {
にして、groonga.hの解説もそれにあわせる
Updated by Tasuku SUENAGA about 1 month ago
- Target version set to 1.0
Updated by Tasuku SUENAGA about 1 month ago
- Status changed from 要仕様議論 to 完了チェック待ち
commit d0631f50f8f227d09571d4799ea1d801c335a2ea
にて、max && max_sizeと、min && min_sizeをチェックするようになった。
commit 6ebb4c519036b292710337c0e1f7be43596c89e0
にて、groonga.hの説明の修正を行った。
Updated by daijiro MORI 16 days ago
- Status changed from 完了チェック待ち to 完了