null+****@clear*****
null+****@clear*****
2011年 12月 27日 (火) 16:05:43 JST
Susumu Yata 2011-12-27 16:05:43 +0900 (Tue, 27 Dec 2011) New Revision: 97ff50a6956ed946963077eb87f447dd2b2c0922 Log: updated to support grn_table_truncate() for grn_dat-based tables. Modified files: lib/db.c Modified: lib/db.c (+7 -1) =================================================================== --- lib/db.c 2011-12-27 15:50:08 +0900 (bb00462) +++ lib/db.c 2011-12-27 16:05:43 +0900 (1778acf) @@ -1740,7 +1740,13 @@ grn_table_truncate(grn_ctx *ctx, grn_obj *table) rc = grn_pat_truncate(ctx, (grn_pat *)table); break; case GRN_TABLE_DAT_KEY : - rc = GRN_OPERATION_NOT_SUPPORTED; + for (hooks = DB_OBJ(table)->hooks[GRN_HOOK_INSERT]; hooks; hooks = hooks->next) { + default_set_value_hook_data *data = (void *)NEXT_ADDR(hooks); + grn_obj *target = grn_ctx_at(ctx, data->target); + if (target->header.type != GRN_COLUMN_INDEX) { continue; } + if ((rc = grn_ii_truncate(ctx, (grn_ii *)target))) { goto exit; } + } + rc = grn_dat_truncate(ctx, (grn_dat *)table); break; case GRN_TABLE_HASH_KEY : for (hooks = DB_OBJ(table)->hooks[GRN_HOOK_INSERT]; hooks; hooks = hooks->next) {