[Groonga-commit] groonga/groonga at 656c1e7 [master] grn_obj_reindex: support data column

Back to archive index

Kouhei Sutou null+****@clear*****
Sat Nov 7 22:15:08 JST 2015


Kouhei Sutou	2015-11-07 22:15:08 +0900 (Sat, 07 Nov 2015)

  New Revision: 656c1e7bf05edc3196aa1b81d1b15d7ee65659a9
  https://github.com/groonga/groonga/commit/656c1e7bf05edc3196aa1b81d1b15d7ee65659a9

  Message:
    grn_obj_reindex: support data column

  Added files:
    test/command/suite/reindex/data_column.expected
    test/command/suite/reindex/data_column.test
  Modified files:
    lib/grn_db.h
    lib/obj.c

  Modified: lib/grn_db.h (+5 -0)
===================================================================
--- lib/grn_db.h    2015-11-07 22:14:40 +0900 (38a2292)
+++ lib/grn_db.h    2015-11-07 22:15:08 +0900 (5aad617)
@@ -426,6 +426,11 @@ grn_rc grn_accessor_resolve(grn_ctx *ctx, grn_obj *accessor, int deep,
                             grn_obj *base_res, grn_obj **res,
                             grn_search_optarg *optarg);
 
+typedef struct {
+  grn_id target;
+  unsigned int section;
+} grn_obj_default_set_value_hook_data;
+
 grn_obj *grn_obj_default_set_value_hook(grn_ctx *ctx,
                                         int nargs,
                                         grn_obj **args,

  Modified: lib/obj.c (+24 -0)
===================================================================
--- lib/obj.c    2015-11-07 22:14:40 +0900 (a460dc0)
+++ lib/obj.c    2015-11-07 22:15:08 +0900 (55fe4d7)
@@ -246,6 +246,26 @@ grn_table_reindex(grn_ctx *ctx, grn_obj *table)
   grn_hash_close(ctx, columns);
 }
 
+static void
+grn_data_column_reindex(grn_ctx *ctx, grn_obj *data_column)
+{
+  grn_hook *hooks;
+
+  for (hooks = DB_OBJ(data_column)->hooks[GRN_HOOK_SET];
+       hooks;
+       hooks = hooks->next) {
+    grn_obj_default_set_value_hook_data *data = (void *)GRN_NEXT_ADDR(hooks);
+    grn_obj *target = grn_ctx_at(ctx, data->target);
+    if (target->header.type != GRN_COLUMN_INDEX) {
+      continue;
+    }
+    grn_obj_reindex(ctx, target);
+    if (ctx->rc != GRN_SUCCESS) {
+      break;
+    }
+  }
+}
+
 grn_rc
 grn_obj_reindex(grn_ctx *ctx, grn_obj *obj)
 {
@@ -265,6 +285,10 @@ grn_obj_reindex(grn_ctx *ctx, grn_obj *obj)
   case GRN_TABLE_DAT_KEY :
     grn_table_reindex(ctx, obj);
     break;
+  case GRN_COLUMN_FIX_SIZE :
+  case GRN_COLUMN_VAR_SIZE :
+    grn_data_column_reindex(ctx, obj);
+    break;
   case GRN_COLUMN_INDEX :
     grn_index_column_rebuild(ctx, obj);
     break;

  Added: test/command/suite/reindex/data_column.expected (+21 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/reindex/data_column.expected    2015-11-07 22:15:08 +0900 (13eb656)
@@ -0,0 +1,21 @@
+table_create Memos TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Memos content COLUMN_SCALAR Text
+[[0,0.0,0.0],true]
+table_create Terms TABLE_PAT_KEY ShortText   --default_tokenizer TokenBigram   --normalizer NormalizerAuto
+[[0,0.0,0.0],true]
+column_create Terms index COLUMN_INDEX|WITH_POSITION Memos content
+[[0,0.0,0.0],true]
+load --table Memos
+[
+{"content": "This is a memo"}
+]
+[[0,0.0,0.0],1]
+delete Terms --key this
+[[0,0.0,0.0],true]
+select Terms --output_columns _key, --sortby _key
+[[0,0.0,0.0],[[[3],[["_key","ShortText"]],["a"],["is"],["memo"]]]]
+reindex Memos.content
+[[0,0.0,0.0],true]
+select Terms --output_columns _key, --sortby _key
+[[0,0.0,0.0],[[[4],[["_key","ShortText"]],["a"],["is"],["memo"],["this"]]]]

  Added: test/command/suite/reindex/data_column.test (+19 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/reindex/data_column.test    2015-11-07 22:15:08 +0900 (7b7972e)
@@ -0,0 +1,19 @@
+table_create Memos TABLE_NO_KEY
+column_create Memos content COLUMN_SCALAR Text
+
+table_create Terms TABLE_PAT_KEY ShortText \
+  --default_tokenizer TokenBigram \
+  --normalizer NormalizerAuto
+column_create Terms index COLUMN_INDEX|WITH_POSITION Memos content
+
+load --table Memos
+[
+{"content": "This is a memo"}
+]
+
+delete Terms --key this
+select Terms --output_columns _key, --sortby _key
+
+reindex Memos.content
+
+select Terms --output_columns _key, --sortby _key
-------------- next part --------------
HTML����������������������������...
다운로드 



More information about the Groonga-commit mailing list
Back to archive index