[Groonga-commit] groonga/groonga at 8a449e3 [master] truncate: ensure truncating all tables that refer the target table

Back to archive index
Kouhei Sutou null+****@clear*****
Wed Dec 26 10:48:10 JST 2018


Kouhei Sutou	2018-12-26 10:48:10 +0900 (Wed, 26 Dec 2018)

  Revision: 8a449e306bf5d77226672181b97ca41ad8307aee
  https://github.com/groonga/groonga/commit/8a449e306bf5d77226672181b97ca41ad8307aee

  Message:
    truncate: ensure truncating all tables that refer the target table

  Added files:
    test/command/suite/truncate/table/referenced/data_column_dat.expected
    test/command/suite/truncate/table/referenced/data_column_dat.test
    test/command/suite/truncate/table/referenced/data_column_hash.expected
    test/command/suite/truncate/table/referenced/data_column_hash.test
    test/command/suite/truncate/table/referenced/data_column_pat.expected
    test/command/suite/truncate/table/referenced/data_column_pat.test
    test/command/suite/truncate/table/referenced/table_dat.expected
    test/command/suite/truncate/table/referenced/table_dat.test
    test/command/suite/truncate/table/referenced/table_hash.expected
    test/command/suite/truncate/table/referenced/table_hash.test
    test/command/suite/truncate/table/referenced/table_pat.expected
    test/command/suite/truncate/table/referenced/table_pat.test
  Modified files:
    lib/db.c
  Renamed files:
    test/command/suite/truncate/table/referenced/index_column_dat.expected
      (from test/command/suite/truncate/table/referenced_dat.expected)
    test/command/suite/truncate/table/referenced/index_column_dat.test
      (from test/command/suite/truncate/table/referenced_dat.test)
    test/command/suite/truncate/table/referenced/index_column_hash.expected
      (from test/command/suite/truncate/table/referenced_hash.expected)
    test/command/suite/truncate/table/referenced/index_column_hash.test
      (from test/command/suite/truncate/table/referenced_hash.test)
    test/command/suite/truncate/table/referenced/index_column_pat.expected
      (from test/command/suite/truncate/table/referenced_pat.expected)
    test/command/suite/truncate/table/referenced/index_column_pat.test
      (from test/command/suite/truncate/table/referenced_pat.test)

  Modified: lib/db.c (+10 -6)
===================================================================
--- lib/db.c    2018-12-26 10:21:15 +0900 (c58be7955)
+++ lib/db.c    2018-12-26 10:48:10 +0900 (56e5b88b3)
@@ -2358,7 +2358,7 @@ exit :
 }
 
 static grn_rc
-grn_table_truncate_reference_columns(grn_ctx *ctx, grn_obj *table)
+grn_table_truncate_reference_objects(grn_ctx *ctx, grn_obj *table)
 {
   grn_bool is_close_opened_object_mode;
   grn_table_cursor *cursor;
@@ -2384,9 +2384,14 @@ grn_table_truncate_reference_columns(grn_ctx *ctx, grn_obj *table)
     }
 
     object = grn_ctx_at(ctx, id);
-    if (grn_obj_is_column(ctx, object) &&
-        grn_obj_get_range(ctx, object) == table_id) {
-      grn_column_truncate(ctx, object);
+    if (grn_obj_is_column(ctx, object)) {
+      if (grn_obj_get_range(ctx, object) == table_id) {
+        grn_column_truncate(ctx, object);
+      }
+    } else if (grn_obj_is_lexicon(ctx, object)) {
+      if (object->header.domain == table_id) {
+        grn_table_truncate(ctx, object);
+      }
     }
 
     if (is_close_opened_object_mode) {
@@ -2408,7 +2413,6 @@ grn_table_truncate(grn_ctx *ctx, grn_obj *table)
   grn_rc rc = GRN_INVALID_ARGUMENT;
   GRN_API_ENTER;
   if (table) {
-    grn_hook *hooks;
     grn_hash *cols;
     grn_obj tokenizer;
     grn_obj normalizer;
@@ -2432,7 +2436,7 @@ grn_table_truncate(grn_ctx *ctx, grn_obj *table)
       GRN_TEXT_INIT(&token_filters, 0);
       grn_table_get_token_filters_string(ctx, table, &token_filters);
 
-      rc = grn_table_truncate_reference_columns(ctx, table);
+      rc = grn_table_truncate_reference_objects(ctx, table);
       if (rc != GRN_SUCCESS) {
         goto exit;
       }

  Added: test/command/suite/truncate/table/referenced/data_column_dat.expected (+17 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/truncate/table/referenced/data_column_dat.expected    2018-12-26 10:48:10 +0900 (6cb220ec7)
@@ -0,0 +1,17 @@
+table_create Tags TABLE_DAT_KEY ShortText
+[[0,0.0,0.0],true]
+table_create Memos TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Memos tags COLUMN_VECTOR Tags
+[[0,0.0,0.0],true]
+load --table Memos
+[
+{"tags": ["Great"]}
+]
+[[0,0.0,0.0],1]
+select Memos --output_columns tags
+[[0,0.0,0.0],[[[1],[["tags","Tags"]],[["Great"]]]]]
+truncate Tags
+[[0,0.0,0.0],true]
+select Memos --output_columns tags
+[[0,0.0,0.0],[[[1],[["tags","Tags"]],[[]]]]]

  Added: test/command/suite/truncate/table/referenced/data_column_dat.test (+14 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/truncate/table/referenced/data_column_dat.test    2018-12-26 10:48:10 +0900 (ac5bd34cb)
@@ -0,0 +1,14 @@
+table_create Tags TABLE_DAT_KEY ShortText
+
+table_create Memos TABLE_NO_KEY
+column_create Memos tags COLUMN_VECTOR Tags
+load --table Memos
+[
+{"tags": ["Great"]}
+]
+
+select Memos --output_columns tags
+
+truncate Tags
+
+select Memos --output_columns tags

  Added: test/command/suite/truncate/table/referenced/data_column_hash.expected (+17 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/truncate/table/referenced/data_column_hash.expected    2018-12-26 10:48:10 +0900 (d18273da1)
@@ -0,0 +1,17 @@
+table_create Tags TABLE_HASH_KEY ShortText
+[[0,0.0,0.0],true]
+table_create Memos TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Memos tags COLUMN_VECTOR Tags
+[[0,0.0,0.0],true]
+load --table Memos
+[
+{"tags": ["Great"]}
+]
+[[0,0.0,0.0],1]
+select Memos --output_columns tags
+[[0,0.0,0.0],[[[1],[["tags","Tags"]],[["Great"]]]]]
+truncate Tags
+[[0,0.0,0.0],true]
+select Memos --output_columns tags
+[[0,0.0,0.0],[[[1],[["tags","Tags"]],[[]]]]]

  Added: test/command/suite/truncate/table/referenced/data_column_hash.test (+14 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/truncate/table/referenced/data_column_hash.test    2018-12-26 10:48:10 +0900 (8c31d2b08)
@@ -0,0 +1,14 @@
+table_create Tags TABLE_HASH_KEY ShortText
+
+table_create Memos TABLE_NO_KEY
+column_create Memos tags COLUMN_VECTOR Tags
+load --table Memos
+[
+{"tags": ["Great"]}
+]
+
+select Memos --output_columns tags
+
+truncate Tags
+
+select Memos --output_columns tags

  Added: test/command/suite/truncate/table/referenced/data_column_pat.expected (+17 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/truncate/table/referenced/data_column_pat.expected    2018-12-26 10:48:10 +0900 (7b493953f)
@@ -0,0 +1,17 @@
+table_create Tags TABLE_PAT_KEY ShortText
+[[0,0.0,0.0],true]
+table_create Memos TABLE_NO_KEY
+[[0,0.0,0.0],true]
+column_create Memos tags COLUMN_VECTOR Tags
+[[0,0.0,0.0],true]
+load --table Memos
+[
+{"tags": ["Great"]}
+]
+[[0,0.0,0.0],1]
+select Memos --output_columns tags
+[[0,0.0,0.0],[[[1],[["tags","Tags"]],[["Great"]]]]]
+truncate Tags
+[[0,0.0,0.0],true]
+select Memos --output_columns tags
+[[0,0.0,0.0],[[[1],[["tags","Tags"]],[[]]]]]

  Added: test/command/suite/truncate/table/referenced/data_column_pat.test (+14 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/truncate/table/referenced/data_column_pat.test    2018-12-26 10:48:10 +0900 (980eaa76c)
@@ -0,0 +1,14 @@
+table_create Tags TABLE_PAT_KEY ShortText
+
+table_create Memos TABLE_NO_KEY
+column_create Memos tags COLUMN_VECTOR Tags
+load --table Memos
+[
+{"tags": ["Great"]}
+]
+
+select Memos --output_columns tags
+
+truncate Tags
+
+select Memos --output_columns tags

  Renamed: test/command/suite/truncate/table/referenced/index_column_dat.expected (+2 -12) 69%
===================================================================
--- test/command/suite/truncate/table/referenced_dat.expected    2018-12-26 10:21:15 +0900 (4b123bb82)
+++ test/command/suite/truncate/table/referenced/index_column_dat.expected    2018-12-26 10:48:10 +0900 (3206b280e)
@@ -4,19 +4,11 @@ table_create Terms TABLE_PAT_KEY ShortText   --default_tokenizer TokenBigram   -
 [[0,0.0,0.0],true]
 column_create Terms tags_key COLUMN_INDEX|WITH_POSITION Tags _key
 [[0,0.0,0.0],true]
-table_create Memos TABLE_NO_KEY
-[[0,0.0,0.0],true]
-column_create Memos tags COLUMN_VECTOR Tags
-[[0,0.0,0.0],true]
-load --table Memos
+load --table Tags
 [
-{"tags": ["Great"]}
+{"_key": "Great"}
 ]
 [[0,0.0,0.0],1]
-select Tags   --match_columns '_key'   --query 'Great'
-[[0,0.0,0.0],[[[1],[["_id","UInt32"],["_key","ShortText"]],[1,"Great"]]]]
-select Memos --output_columns tags
-[[0,0.0,0.0],[[[1],[["tags","Tags"]],[["Great"]]]]]
 select Terms
 [
   [
@@ -53,8 +45,6 @@ select Terms
 ]
 truncate Tags
 [[0,0.0,0.0],true]
-select Memos --output_columns tags
-[[0,0.0,0.0],[[[1],[["tags","Tags"]],[[]]]]]
 select Terms
 [
   [

  Renamed: test/command/suite/truncate/table/referenced/index_column_dat.test (+2 -10) 52%
===================================================================
--- test/command/suite/truncate/table/referenced_dat.test    2018-12-26 10:21:15 +0900 (4320cd616)
+++ test/command/suite/truncate/table/referenced/index_column_dat.test    2018-12-26 10:48:10 +0900 (0398fad5b)
@@ -5,21 +5,13 @@ table_create Terms TABLE_PAT_KEY ShortText \
   --normalizer NormalizerAuto
 column_create Terms tags_key COLUMN_INDEX|WITH_POSITION Tags _key
 
-table_create Memos TABLE_NO_KEY
-column_create Memos tags COLUMN_VECTOR Tags
-load --table Memos
+load --table Tags
 [
-{"tags": ["Great"]}
+{"_key": "Great"}
 ]
 
-select Tags \
-  --match_columns '_key' \
-  --query 'Great'
-
-select Memos --output_columns tags
 select Terms
 
 truncate Tags
 
-select Memos --output_columns tags
 select Terms

  Renamed: test/command/suite/truncate/table/referenced/index_column_hash.expected (+2 -12) 69%
===================================================================
--- test/command/suite/truncate/table/referenced_hash.expected    2018-12-26 10:21:15 +0900 (aa8dee3e1)
+++ test/command/suite/truncate/table/referenced/index_column_hash.expected    2018-12-26 10:48:10 +0900 (fc4824f72)
@@ -4,19 +4,11 @@ table_create Terms TABLE_PAT_KEY ShortText   --default_tokenizer TokenBigram   -
 [[0,0.0,0.0],true]
 column_create Terms tags_key COLUMN_INDEX|WITH_POSITION Tags _key
 [[0,0.0,0.0],true]
-table_create Memos TABLE_NO_KEY
-[[0,0.0,0.0],true]
-column_create Memos tags COLUMN_VECTOR Tags
-[[0,0.0,0.0],true]
-load --table Memos
+load --table Tags
 [
-{"tags": ["Great"]}
+{"_key": "Great"}
 ]
 [[0,0.0,0.0],1]
-select Tags   --match_columns '_key'   --query 'Great'
-[[0,0.0,0.0],[[[1],[["_id","UInt32"],["_key","ShortText"]],[1,"Great"]]]]
-select Memos --output_columns tags
-[[0,0.0,0.0],[[[1],[["tags","Tags"]],[["Great"]]]]]
 select Terms
 [
   [
@@ -53,8 +45,6 @@ select Terms
 ]
 truncate Tags
 [[0,0.0,0.0],true]
-select Memos --output_columns tags
-[[0,0.0,0.0],[[[1],[["tags","Tags"]],[[]]]]]
 select Terms
 [
   [

  Renamed: test/command/suite/truncate/table/referenced/index_column_hash.test (+2 -10) 52%
===================================================================
--- test/command/suite/truncate/table/referenced_hash.test    2018-12-26 10:21:15 +0900 (a4b2b8211)
+++ test/command/suite/truncate/table/referenced/index_column_hash.test    2018-12-26 10:48:10 +0900 (fb412d306)
@@ -5,21 +5,13 @@ table_create Terms TABLE_PAT_KEY ShortText \
   --normalizer NormalizerAuto
 column_create Terms tags_key COLUMN_INDEX|WITH_POSITION Tags _key
 
-table_create Memos TABLE_NO_KEY
-column_create Memos tags COLUMN_VECTOR Tags
-load --table Memos
+load --table Tags
 [
-{"tags": ["Great"]}
+{"_key": "Great"}
 ]
 
-select Tags \
-  --match_columns '_key' \
-  --query 'Great'
-
-select Memos --output_columns tags
 select Terms
 
 truncate Tags
 
-select Memos --output_columns tags
 select Terms

  Renamed: test/command/suite/truncate/table/referenced/index_column_pat.expected (+2 -12) 69%
===================================================================
--- test/command/suite/truncate/table/referenced_pat.expected    2018-12-26 10:21:15 +0900 (a2b7df969)
+++ test/command/suite/truncate/table/referenced/index_column_pat.expected    2018-12-26 10:48:10 +0900 (92f2d9128)
@@ -4,19 +4,11 @@ table_create Terms TABLE_PAT_KEY ShortText   --default_tokenizer TokenBigram   -
 [[0,0.0,0.0],true]
 column_create Terms tags_key COLUMN_INDEX|WITH_POSITION Tags _key
 [[0,0.0,0.0],true]
-table_create Memos TABLE_NO_KEY
-[[0,0.0,0.0],true]
-column_create Memos tags COLUMN_VECTOR Tags
-[[0,0.0,0.0],true]
-load --table Memos
+load --table Tags
 [
-{"tags": ["Great"]}
+{"_key": "Great"}
 ]
 [[0,0.0,0.0],1]
-select Tags   --match_columns '_key'   --query 'Great'
-[[0,0.0,0.0],[[[1],[["_id","UInt32"],["_key","ShortText"]],[1,"Great"]]]]
-select Memos --output_columns tags
-[[0,0.0,0.0],[[[1],[["tags","Tags"]],[["Great"]]]]]
 select Terms
 [
   [
@@ -53,8 +45,6 @@ select Terms
 ]
 truncate Tags
 [[0,0.0,0.0],true]
-select Memos --output_columns tags
-[[0,0.0,0.0],[[[1],[["tags","Tags"]],[[]]]]]
 select Terms
 [
   [

  Renamed: test/command/suite/truncate/table/referenced/index_column_pat.test (+2 -10) 52%
===================================================================
--- test/command/suite/truncate/table/referenced_pat.test    2018-12-26 10:21:15 +0900 (208544fe9)
+++ test/command/suite/truncate/table/referenced/index_column_pat.test    2018-12-26 10:48:10 +0900 (c6b8b705d)
@@ -5,21 +5,13 @@ table_create Terms TABLE_PAT_KEY ShortText \
   --normalizer NormalizerAuto
 column_create Terms tags_key COLUMN_INDEX|WITH_POSITION Tags _key
 
-table_create Memos TABLE_NO_KEY
-column_create Memos tags COLUMN_VECTOR Tags
-load --table Memos
+load --table Tags
 [
-{"tags": ["Great"]}
+{"_key": "Great"}
 ]
 
-select Tags \
-  --match_columns '_key' \
-  --query 'Great'
-
-select Memos --output_columns tags
 select Terms
 
 truncate Tags
 
-select Memos --output_columns tags
 select Terms

  Added: test/command/suite/truncate/table/referenced/table_dat.expected (+15 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/truncate/table/referenced/table_dat.expected    2018-12-26 10:48:10 +0900 (0ef15465e)
@@ -0,0 +1,15 @@
+table_create Tags TABLE_DAT_KEY ShortText
+[[0,0.0,0.0],true]
+table_create TagReferences TABLE_HASH_KEY Tags
+[[0,0.0,0.0],true]
+load --table TagReferences
+[
+{"_key": "Great"}
+]
+[[0,0.0,0.0],1]
+select TagReferences
+[[0,0.0,0.0],[[[1],[["_id","UInt32"],["_key","ShortText"]],[1,"Great"]]]]
+truncate Tags
+[[0,0.0,0.0],true]
+select TagReferences
+[[0,0.0,0.0],[[[0],[["_id","UInt32"],["_key","ShortText"]]]]]

  Added: test/command/suite/truncate/table/referenced/table_dat.test (+13 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/truncate/table/referenced/table_dat.test    2018-12-26 10:48:10 +0900 (37ef04c44)
@@ -0,0 +1,13 @@
+table_create Tags TABLE_DAT_KEY ShortText
+
+table_create TagReferences TABLE_HASH_KEY Tags
+load --table TagReferences
+[
+{"_key": "Great"}
+]
+
+select TagReferences
+
+truncate Tags
+
+select TagReferences

  Added: test/command/suite/truncate/table/referenced/table_hash.expected (+15 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/truncate/table/referenced/table_hash.expected    2018-12-26 10:48:10 +0900 (44faf2afd)
@@ -0,0 +1,15 @@
+table_create Tags TABLE_HASH_KEY ShortText
+[[0,0.0,0.0],true]
+table_create TagReferences TABLE_HASH_KEY Tags
+[[0,0.0,0.0],true]
+load --table TagReferences
+[
+{"_key": "Great"}
+]
+[[0,0.0,0.0],1]
+select TagReferences
+[[0,0.0,0.0],[[[1],[["_id","UInt32"],["_key","ShortText"]],[1,"Great"]]]]
+truncate Tags
+[[0,0.0,0.0],true]
+select TagReferences
+[[0,0.0,0.0],[[[0],[["_id","UInt32"],["_key","ShortText"]]]]]

  Added: test/command/suite/truncate/table/referenced/table_hash.test (+13 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/truncate/table/referenced/table_hash.test    2018-12-26 10:48:10 +0900 (b9638a9fc)
@@ -0,0 +1,13 @@
+table_create Tags TABLE_HASH_KEY ShortText
+
+table_create TagReferences TABLE_HASH_KEY Tags
+load --table TagReferences
+[
+{"_key": "Great"}
+]
+
+select TagReferences
+
+truncate Tags
+
+select TagReferences

  Added: test/command/suite/truncate/table/referenced/table_pat.expected (+15 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/truncate/table/referenced/table_pat.expected    2018-12-26 10:48:10 +0900 (6ba58b683)
@@ -0,0 +1,15 @@
+table_create Tags TABLE_PAT_KEY ShortText
+[[0,0.0,0.0],true]
+table_create TagReferences TABLE_HASH_KEY Tags
+[[0,0.0,0.0],true]
+load --table TagReferences
+[
+{"_key": "Great"}
+]
+[[0,0.0,0.0],1]
+select TagReferences
+[[0,0.0,0.0],[[[1],[["_id","UInt32"],["_key","ShortText"]],[1,"Great"]]]]
+truncate Tags
+[[0,0.0,0.0],true]
+select TagReferences
+[[0,0.0,0.0],[[[0],[["_id","UInt32"],["_key","ShortText"]]]]]

  Added: test/command/suite/truncate/table/referenced/table_pat.test (+13 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/truncate/table/referenced/table_pat.test    2018-12-26 10:48:10 +0900 (8c20ea683)
@@ -0,0 +1,13 @@
+table_create Tags TABLE_PAT_KEY ShortText
+
+table_create TagReferences TABLE_HASH_KEY Tags
+load --table TagReferences
+[
+{"_key": "Great"}
+]
+
+select TagReferences
+
+truncate Tags
+
+select TagReferences
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20181226/051a9806/attachment-0001.html>


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