[Groonga-commit] groonga/groonga [master] updated to support grn_table_truncate() for grn_dat-based tables.

Back to archive index

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




Groonga-commit メーリングリストの案内
Back to archive index