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>