7.25.22. grn_table#

7.25.22.1. Summary#

TODO…

7.25.22.2. Example#

TODO…

7.25.22.3. Reference#

tableが GRN_TABLE_PAT_KEY もしくは GRN_TABLE_DAT_KEY を指定して作ったtableなら、longest common prefix searchを行い、対応するIDを返します。

tableが GRN_TABLE_HASH_KEY を指定して作ったtableなら、完全に一致するキーを検索し、対応するIDを返します。

Parameters:
  • table – 対象tableを指定します。

  • key – 検索keyを指定します。

int grn_table_get_key(grn_ctx *ctx, grn_obj *table, grn_id id, void *keybuf, int buf_size)#

tableのIDに対応するレコードのkeyを取得します。

対応するレコードが存在する場合はkey長を返します。見つからない場合は0を返します。対応するキーの検索に成功し、またbuf_sizeの長さがkey長以上であった場合は、keybufに該当するkeyをコピーします。

Parameters:
  • table – 対象tableを指定します。

  • id – 対象レコードのIDを指定します。

  • keybuf – keyを格納するバッファ(呼出側で準備する)を指定します。

  • buf_size – keybufのサイズ(byte長)を指定します。

grn_rc grn_table_update_by_id(grn_ctx *ctx, grn_obj *table, grn_id id, const void *dest_key, unsigned int dest_key_size)#

tableのidに対応するレコードのkeyを変更します。新しいkeyとそのbyte長をdest_keyとdest_key_sizeに指定します。

この操作は、GRN_TABLE_DAT_KEY 型のテーブルのみ使用できます。

Parameters:
  • table – 対象tableを指定します。

  • id – レコードIDを指定します。

grn_rc grn_table_truncate(grn_ctx *ctx, grn_obj *table)#

tableの全レコードを一括して削除します。

注意: multithread環境では他のthreadのアクセスによって、存在しないアドレスへアクセスし、SIGSEGVが発生する可能性があります。

Parameters:
  • table – 対象tableを指定します。

type grn_table_sort_key#

TODO…

type grn_table_sort_flags#

TODO…

type grn_table_group_result#

TODO…

type grn_table_group_flags#

TODO…

grn_rc grn_table_group(grn_ctx *ctx, grn_obj *table, grn_table_sort_key *keys, int n_keys, grn_table_group_result *results, int n_results)#

tableのレコードを特定の条件でグループ化します。

Parameters:
  • table – 対象tableを指定します。

  • keys – group化キー構造体の配列へのポインタを指定します。

  • n_keys – group化キー構造体の配列のサイズを指定します。

  • results – group化の結果を格納する構造体の配列へのポインタを指定します。

  • n_results – group化の結果を格納する構造体の配列のサイズを指定します。

grn_rc grn_table_setoperation(grn_ctx *ctx, grn_obj *table1, grn_obj *table2, grn_obj *res, grn_operator op)#

table1とtable2をopの指定に従って集合演算した結果をresに格納します。

resにtable1あるいはtable2そのものを指定した場合を除けば、table1, table2は破壊されません。

Parameters:
  • table1 – 対象table1を指定します。

  • table2 – 対象table2を指定します。

  • res – 結果を格納するtableを指定します。

  • op – 実行する演算の種類を指定します。

grn_rc grn_table_difference(grn_ctx *ctx, grn_obj *table1, grn_obj *table2, grn_obj *res1, grn_obj *res2)#

table1とtable2から重複するレコードを取り除いた結果をそれぞれres1, res2に格納します。

Parameters:
  • table1 – 対象table1を指定します。

  • table2 – 対象table2を指定します。

  • res1 – 結果を格納するtableを指定します。

  • res2 – 結果を格納するtableを指定します。

int grn_table_columns(grn_ctx *ctx, grn_obj *table, const char *name, unsigned int name_size, grn_obj *res)#

nameパラメータから始まるtableのカラムIDをresパラメータに格納します。name_sizeパラメータが0の場合はすべてのカラムIDを格納します。

Parameters:
  • table – 対象tableを指定します。

  • name – 取得したいカラム名のprefixを指定します。

  • name_size – nameパラメータの長さを指定します。

  • res – 結果を格納する GRN_TABLE_HASH_KEY のtableを指定します。

Returns:

格納したカラムIDの数を返します。