[Groonga-commit] groonga/groonga at fbdcde2 [master] object_remove: support force removing indexed column

Back to archive index

Kouhei Sutou null+****@clear*****
Sun Feb 21 23:22:20 JST 2016


Kouhei Sutou	2016-02-21 23:22:20 +0900 (Sun, 21 Feb 2016)

  New Revision: fbdcde210215e893e2e684984c9963060ac31442
  https://github.com/groonga/groonga/commit/fbdcde210215e893e2e684984c9963060ac31442

  Message:
    object_remove: support force removing indexed column

  Added files:
    test/command/suite/object_remove/broken/indexed_column_force.expected
    test/command/suite/object_remove/broken/indexed_column_force.test
  Modified files:
    lib/proc/proc_object.c

  Modified: lib/proc/proc_object.c (+8 -4)
===================================================================
--- lib/proc/proc_object.c    2016-02-21 23:21:13 +0900 (cafb254)
+++ lib/proc/proc_object.c    2016-02-21 23:22:20 +0900 (132f7ae)
@@ -91,12 +91,16 @@ command_object_remove(grn_ctx *ctx,
                        GRN_TEXT_LEN(name));
   if (target) {
     grn_obj_remove(ctx, target);
-    grn_ctx_output_bool(ctx, ctx->rc == GRN_SUCCESS);
-    return NULL;
+    if (!force || ctx->rc == GRN_SUCCESS) {
+      grn_ctx_output_bool(ctx, ctx->rc == GRN_SUCCESS);
+      return NULL;
+    }
+    grn_obj_close(ctx, target);
+    failed_to_open = GRN_TRUE;
+  } else {
+    failed_to_open = (ctx->rc != GRN_SUCCESS);
   }
 
-  failed_to_open = (ctx->rc != GRN_SUCCESS);
-
   if (force) {
     grn_id id;
     id = grn_table_get(ctx, db,

  Added: test/command/suite/object_remove/broken/indexed_column_force.expected (+26 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/object_remove/broken/indexed_column_force.expected    2016-02-21 23:22:20 +0900 (4688442)
@@ -0,0 +1,26 @@
+table_create Users TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Users name COLUMN_SCALAR ShortText
+[[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 Users name
+[[0,0.0,0.0],true]
+database_unmap
+[[0,0.0,0.0],true]
+object_remove Users.name --force yes
+[
+  [
+    [
+      -1,
+      0.0,
+      0.0
+    ],
+    "[column][remove][index] hook has a dangling reference: Users.name"
+  ],
+  false
+]
+#|e| [io][open] file size is too small: <8>(required: >= 64): <db/db.0000103>
+#|e| [column][remove][index] hook has a dangling reference: Users.name
+column_create Users name COLUMN_SCALAR ShortText
+[[0,0.0,0.0],true]

  Added: test/command/suite/object_remove/broken/indexed_column_force.test (+16 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/object_remove/broken/indexed_column_force.test    2016-02-21 23:22:20 +0900 (52ea71a)
@@ -0,0 +1,16 @@
+table_create Users TABLE_NO_KEY
+column_create Users name COLUMN_SCALAR ShortText
+
+table_create Terms TABLE_PAT_KEY ShortText \
+  --default_tokenizer TokenBigram \
+  --normalizer NormalizerAuto
+column_create Terms index COLUMN_INDEX|WITH_POSITION Users name
+
+#@disable-logging
+thread_limit 1
+#@enable-logging
+database_unmap
+#@copy-path fixture/object_remove/too_small #{db_path}.0000103
+
+object_remove Users.name --force yes
+column_create Users name COLUMN_SCALAR ShortText
-------------- next part --------------
HTML����������������������������...
Download 



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