7.25.23. grn_table_cursor¶
7.25.23.1. Summary¶
TODO…
7.25.23.2. Example¶
TODO…
7.25.23.3. Reference¶
- 
grn_table_cursor¶
- TODO… 
- 
grn_table_cursor *grn_table_cursor_open(grn_ctx *ctx, grn_obj *table, const void *min, unsigned int min_size, const void *max, unsigned int max_size, int offset, int limit, int flags)¶
- tableに登録されているレコードを順番に取り出すためのカーソルを生成して返します。 - Parameters
- table – 対象tableを指定します。 
- min – keyの下限を指定します。(NULLは下限なしと見なします。) - GRN_CURSOR_PREFIXについては後述。
- min_size – minのsizeを指定します。 - GRN_CURSOR_PREFIXについては後述。
- max – keyの上限を指定します。(NULLは上限なしと見なします。) - GRN_CURSOR_PREFIXについては後述。
- max_size – maxのsizeを指定します。 - GRN_CURSOR_PREFIXについては無視される場合があります。
- flags – - GRN_CURSOR_ASCENDINGを指定すると昇順にレコードを取り出します。- GRN_CURSOR_DESCENDINGを指定すると降順にレコードを取り出します。(下記- GRN_CURSOR_PREFIXを指定し、keyが近いレコードを取得する場合、もしくは、common prefix searchを行う場合には、- GRN_CURSOR_ASCENDING/- GRN_CURSOR_DESCENDINGは無視されます。)- GRN_CURSOR_GTを指定するとminに一致したkeyをcursorの範囲に含みません。(minがNULLの場合もしくは、下記- GRN_CURSOR_PREFIXを指定し、keyが近いレコードを取得する場合、もしくは、common prefix searchを行う場合には、- GRN_CURSOR_GTは無視されます。)- GRN_CURSOR_LTを指定するとmaxに一致したkeyをcursorの範囲に含みません。(maxがNULLの場合もしくは、下記- GRN_CURSOR_PREFIXを指定した場合には、- GRN_CURSOR_LTは無視されます。)- GRN_CURSOR_BY_IDを指定するとID順にレコードを取り出します。(下記- GRN_CURSOR_PREFIXを指定した場合には、- GRN_CURSOR_BY_IDは無視されます。)- GRN_OBJ_TABLE_PAT_KEYを指定したtableについては、- GRN_CURSOR_BY_KEYを指定するとkey順にレコードを取り出します。(- GRN_OBJ_TABLE_HASH_KEY,- GRN_OBJ_TABLE_NO_KEYを指定したテーブルでは- GRN_CURSOR_BY_KEYは無視されます。)- GRN_CURSOR_PREFIXを指定すると、- GRN_OBJ_TABLE_PAT_KEYを指定したテーブルに関する下記のレコードを取り出すカーソルが作成されます。maxがNULLの場合には、keyがminと前方一致するレコードを取り出します。max_sizeパラメータは無視されます。- maxとmax_sizeが指定され、かつ、テーブルのkeyがShortText型である場合、maxとcommon prefix searchを行い、common prefixがmin_sizeバイト以上のレコードを取り出します。minは無視されます。 - maxとmax_sizeが指定され、かつ、テーブルのkeyが固定長型の場合、maxとPAT木上で近い位置にあるノードから順番にレコードを取り出します。ただし、keyのパトリシア木で、min_sizeバイト未満のビットに対するノードで、maxと異なった方向にあるノードに対応するレコードについては取り出しません。PAT木上で位置が近いこととkeyの値が近いことは同一ではありません。この場合、maxで与えられるポインタが指す値は、対象テーブルのkeyサイズと同じか超える幅である必要があります。minは無視されます。 - GRN_CURSOR_BY_ID/- GRN_CURSOR_BY_KEY/- GRN_CURSOR_PREFIXの3フラグは、同時に指定することができません。- GRN_OBJ_TABLE_PAT_KEYを指定して作ったテーブルで、- GRN_CURSOR_PREFIXと- GRN_CURSOR_RKを指定すると、半角小文字のアルファベット文字列から、それを旧JIS X 4063:2000規格に従って全角カタカナに変換した文字列に前方一致する値をkeyとするレコードを取り出します。- GRN_ENC_UTF8のみをサポートしています。- GRN_CURSOR_ASCENDING/- GRN_CURSOR_DESCENDINGは無効であり、レコードをkey値の昇降順で取り出すことはできません。
- offset – - 該当する範囲のレコードのうち、(0ベースで)offset番目からレコードを取り出します。 - GRN_CURSOR_PREFIXを指定したときは負の数を指定することはできません。
- limit – - 該当する範囲のレコードのうち、limit件のみを取り出します。-1が指定された場合は、全件が指定されたものとみなします。 - GRN_CURSOR_PREFIXを指定したときは-1より小さい負の数を指定することはできません。
 
 
- 
grn_rc grn_table_cursor_close(grn_ctx *ctx, grn_table_cursor *tc)¶
- grn_table_cursor_open()で生成したcursorを解放します。- Parameters
- tc – 対象cursorを指定します。 
 
 
- 
grn_id grn_table_cursor_next(grn_ctx *ctx, grn_table_cursor *tc)¶
- cursorのカレントレコードを一件進めてそのIDを返します。cursorの対象範囲の末尾に達すると - GRN_ID_NILを返します。- Parameters
- tc – 対象cursorを指定します。 
 
 
- 
int grn_table_cursor_get_key(grn_ctx *ctx, grn_table_cursor *tc, void **key)¶
- cursorのカレントレコードのkeyをkeyパラメータにセットし、その長さを返します。 - Parameters
- tc – 対象cursorを指定します。 
- key – カレントレコードのkeyへのポインタがセットされます。 
 
 
- 
int grn_table_cursor_get_value(grn_ctx *ctx, grn_table_cursor *tc, void **value)¶
- cursorパラメータのカレントレコードのvalueをvalueパラメータにセットし、その長さを返します。 - Parameters
- tc – 対象cursorを指定します。 
- value – カレントレコードのvalueへのポインタがセットされます。 
 
 
- 
grn_rc grn_table_cursor_set_value(grn_ctx *ctx, grn_table_cursor *tc, const void *value, int flags)¶
- cursorのカレントレコードのvalueを引数の内容に置き換えます。cursorのカレントレコードが存在しない場合は - GRN_INVALID_ARGUMENTを返します。- Parameters
- tc – 対象cursorを指定します。 
- value – 新しいvalueの値を指定します。 
- flags – - grn_obj_set_value()のflagsと同様の値を指定できます。
 
 
- 
grn_rc grn_table_cursor_delete(grn_ctx *ctx, grn_table_cursor *tc)¶
- cursorのカレントレコードを削除します。cursorのカレントレコードが存在しない場合は - GRN_INVALID_ARGUMENTを返します。- Parameters
- tc – 対象cursorを指定します。 
 
 
- 
grn_obj *grn_table_cursor_table(grn_ctx *ctx, grn_table_cursor *tc)¶
- cursorが属するtableを返します。 - Parameters
- tc – 対象cursorを指定します。