Kouhei Sutou
null+****@clear*****
Fri Jul 17 12:23:53 JST 2015
Kouhei Sutou 2015-07-17 12:23:53 +0900 (Fri, 17 Jul 2015) New Revision: 93ae00cb727273eb4be6e76099a7456537b6521d https://github.com/groonga/groonga/commit/93ae00cb727273eb4be6e76099a7456537b6521d Message: Remove path before unregister object ID from DB It may solve the situation that path of table or column exists but the table or column doesn't exist in DB. Modified files: lib/db.c Modified: lib/db.c (+19 -19) =================================================================== --- lib/db.c 2015-07-17 12:17:15 +0900 (f45b5d3) +++ lib/db.c 2015-07-17 12:23:53 +0900 (b1f9867) @@ -8446,12 +8446,12 @@ _grn_obj_remove_pat(grn_ctx *ctx, grn_obj *obj, grn_obj *db, grn_id id, if (rc != GRN_SUCCESS) { return rc; } if (path) { + rc = grn_pat_remove(ctx, path); + if (rc != GRN_SUCCESS) { return rc; } rc = grn_ja_put(ctx, ((grn_db *)db)->specs, id, NULL, 0, GRN_OBJ_SET, NULL); if (rc != GRN_SUCCESS) { return rc; } rc = grn_obj_delete_by_id(ctx, db, id, GRN_TRUE); if (rc != GRN_SUCCESS) { return rc; } - rc = grn_pat_remove(ctx, path); - if (rc != GRN_SUCCESS) { return rc; } } grn_obj_touch(ctx, db, NULL); @@ -8478,12 +8478,12 @@ _grn_obj_remove_dat(grn_ctx *ctx, grn_obj *obj, grn_obj *db, grn_id id, if (rc != GRN_SUCCESS) { return rc; } if (path) { + rc = grn_dat_remove(ctx, path); + if (rc != GRN_SUCCESS) { return rc; } rc = grn_ja_put(ctx, ((grn_db *)db)->specs, id, NULL, 0, GRN_OBJ_SET, NULL); if (rc != GRN_SUCCESS) { return rc; } rc = grn_obj_delete_by_id(ctx, db, id, GRN_TRUE); if (rc != GRN_SUCCESS) { return rc; } - rc = grn_dat_remove(ctx, path); - if (rc != GRN_SUCCESS) { return rc; } } grn_obj_touch(ctx, db, NULL); @@ -8510,12 +8510,12 @@ _grn_obj_remove_hash(grn_ctx *ctx, grn_obj *obj, grn_obj *db, grn_id id, if (rc != GRN_SUCCESS) { return rc; } if (path) { + rc = grn_hash_remove(ctx, path); + if (rc != GRN_SUCCESS) { return rc; } rc = grn_ja_put(ctx, ((grn_db *)db)->specs, id, NULL, 0, GRN_OBJ_SET, NULL); if (rc != GRN_SUCCESS) { return rc; } rc = grn_obj_delete_by_id(ctx, db, id, GRN_TRUE); if (rc != GRN_SUCCESS) { return rc; } - rc = grn_hash_remove(ctx, path); - if (rc != GRN_SUCCESS) { return rc; } } grn_obj_touch(ctx, db, NULL); @@ -8540,12 +8540,12 @@ _grn_obj_remove_array(grn_ctx *ctx, grn_obj *obj, grn_obj *db, grn_id id, if (rc != GRN_SUCCESS) { return rc; } if (path) { + rc = grn_array_remove(ctx, path); + if (rc != GRN_SUCCESS) { return rc; } rc = grn_ja_put(ctx, ((grn_db *)db)->specs, id, NULL, 0, GRN_OBJ_SET, NULL); if (rc != GRN_SUCCESS) { return rc; } rc = grn_obj_delete_by_id(ctx, db, id, GRN_TRUE); if (rc != GRN_SUCCESS) { return rc; } - rc = grn_array_remove(ctx, path); - if (rc != GRN_SUCCESS) { return rc; } } grn_obj_touch(ctx, db, NULL); @@ -8565,12 +8565,12 @@ _grn_obj_remove_ja(grn_ctx *ctx, grn_obj *obj, grn_obj *db, grn_id id, if (rc != GRN_SUCCESS) { return rc; } if (path) { + rc = grn_ja_remove(ctx, path); + if (rc != GRN_SUCCESS) { return rc; } rc = grn_ja_put(ctx, ((grn_db *)db)->specs, id, NULL, 0, GRN_OBJ_SET, NULL); if (rc != GRN_SUCCESS) { return rc; } rc = grn_obj_delete_by_id(ctx, db, id, GRN_TRUE); if (rc != GRN_SUCCESS) { return rc; } - rc = grn_ja_remove(ctx, path); - if (rc != GRN_SUCCESS) { return rc; } } grn_obj_touch(ctx, db, NULL); @@ -8590,12 +8590,12 @@ _grn_obj_remove_ra(grn_ctx *ctx, grn_obj *obj, grn_obj *db, grn_id id, if (rc != GRN_SUCCESS) { return rc; } if (path) { + rc = grn_ra_remove(ctx, path); + if (rc != GRN_SUCCESS) { return rc; } rc = grn_ja_put(ctx, ((grn_db *)db)->specs, id, NULL, 0, GRN_OBJ_SET, NULL); if (rc != GRN_SUCCESS) { return rc; } rc = grn_obj_delete_by_id(ctx, db, id, GRN_TRUE); if (rc != GRN_SUCCESS) { return rc; } - rc = grn_ra_remove(ctx, path); - if (rc != GRN_SUCCESS) { return rc; } } grn_obj_touch(ctx, db, NULL); @@ -8613,12 +8613,12 @@ _grn_obj_remove_index(grn_ctx *ctx, grn_obj *obj, grn_obj *db, grn_id id, if (rc != GRN_SUCCESS) { return rc; } if (path) { + rc = grn_ii_remove(ctx, path); + if (rc != GRN_SUCCESS) { return rc; } rc = grn_ja_put(ctx, ((grn_db *)db)->specs, id, NULL, 0, GRN_OBJ_SET, NULL); if (rc != GRN_SUCCESS) { return rc; } rc = grn_obj_delete_by_id(ctx, db, id, GRN_TRUE); if (rc != GRN_SUCCESS) { return rc; } - rc = grn_ii_remove(ctx, path); - if (rc != GRN_SUCCESS) { return rc; } } grn_obj_touch(ctx, db, NULL); @@ -8635,6 +8635,11 @@ _grn_obj_remove_db_obj(grn_ctx *ctx, grn_obj *obj, grn_obj *db, grn_id id, rc = grn_obj_close(ctx, obj); if (rc != GRN_SUCCESS) { return rc; } + if (path) { + rc = grn_io_remove(ctx, path); + if (rc != GRN_SUCCESS) { return rc; } + } + if (!(id & GRN_OBJ_TMP_OBJECT)) { rc = grn_ja_put(ctx, ((grn_db *)db)->specs, id, NULL, 0, GRN_OBJ_SET, NULL); if (rc != GRN_SUCCESS) { return rc; } @@ -8642,11 +8647,6 @@ _grn_obj_remove_db_obj(grn_ctx *ctx, grn_obj *obj, grn_obj *db, grn_id id, if (rc != GRN_SUCCESS) { return rc; } } - if (path) { - rc = grn_io_remove(ctx, path); - if (rc != GRN_SUCCESS) { return rc; } - } - grn_obj_touch(ctx, db, NULL); return rc; -------------- next part -------------- HTML����������������������������...Download