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