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) {