Support #373

grn_table_cursor_openについて、GRN_CURSOR_PREFIX flagについての解説がない。

Added by Tasuku SUENAGA 2 months ago. Updated 16 days ago.

Status:完了 Start:06/30/2010
Priority:Normal Due date:
Assigned to:Tasuku SUENAGA % Done:

0%

Category:- Spent time: -
Target version:1.0

Description

grn_table_cursor_openについて、GRN_CURSOR_PREFIX flagについての解説がない。
解説のサンプルを記述し、添付した。

0001-Added-parameter-descriptions-on-grn_table_cursor_ope.patch - 解説のサンプル初版 (4.6 KB) Tasuku SUENAGA, 06/30/2010 07:16 pm

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 完了

Also available in: Atom PDF