[Groonga-commit] groonga/groonga at c7db9f9 [master] Add `--sort_hash_table` option in dump command.

Back to archive index

HorimotoYasuhiro null+****@clear*****
Wed Jul 12 18:56:32 JST 2017


HorimotoYasuhiro	2017-07-12 18:56:32 +0900 (Wed, 12 Jul 2017)

  New Revision: c7db9f902a337f3e44a0456d2dd1e9702c992292
  https://github.com/groonga/groonga/commit/c7db9f902a337f3e44a0456d2dd1e9702c992292

  Merged 88adb62: Merge pull request #736 from komainu8/feature/add_sort_hash_table

  Message:
    Add `--sort_hash_table` option in dump command.

  Modified files:
    lib/proc/proc_dump.c

  Modified: lib/proc/proc_dump.c (+15 -10)
===================================================================
--- lib/proc/proc_dump.c    2017-07-10 19:35:47 +0900 (5f57001)
+++ lib/proc/proc_dump.c    2017-07-12 18:56:32 +0900 (db6aab1)
@@ -497,7 +497,7 @@ dump_records_internal(grn_ctx *ctx, grn_dumper *dumper,
   }
 }
 static void
-dump_records(grn_ctx *ctx, grn_dumper *dumper, grn_obj *table)
+dump_records(grn_ctx *ctx, grn_dumper *dumper, grn_obj *table, grn_bool is_sort_hash_table)
 {
   grn_id old_id = 0, id;
   grn_table_cursor *cursor;
@@ -613,7 +613,7 @@ dump_records(grn_ctx *ctx, grn_dumper *dumper, grn_obj *table)
 
   GRN_TEXT_INIT(&delete_commands, 0);
 
-  if (table->header.type == GRN_TABLE_HASH_KEY) {
+  if (table->header.type == GRN_TABLE_HASH_KEY && is_sort_hash_table) {
     grn_obj *sorted;
     grn_table_sort_key *sort_keys;
     uint32_t n_sort_keys;
@@ -881,7 +881,7 @@ dump_schema(grn_ctx *ctx, grn_dumper *dumper)
 }
 
 static void
-dump_selected_tables_records(grn_ctx *ctx, grn_dumper *dumper, grn_obj *tables)
+dump_selected_tables_records(grn_ctx *ctx, grn_dumper *dumper, grn_obj *tables, grn_bool is_sort_hash_table)
 {
   const char *p, *e;
 
@@ -933,14 +933,14 @@ dump_selected_tables_records(grn_ctx *ctx, grn_dumper *dumper, grn_obj *tables)
     }
 
     if (grn_obj_is_table(ctx, table)) {
-      dump_records(ctx, dumper, table);
+      dump_records(ctx, dumper, table, is_sort_hash_table);
     }
     grn_obj_unlink(ctx, table);
   }
 }
 
 static void
-dump_all_records(grn_ctx *ctx, grn_dumper *dumper)
+dump_all_records(grn_ctx *ctx, grn_dumper *dumper, grn_bool is_sort_hash_table)
 {
   GRN_DB_EACH_BEGIN_BY_KEY(ctx, cursor, id) {
     void *name;
@@ -971,7 +971,7 @@ dump_all_records(grn_ctx *ctx, grn_dumper *dumper)
     }
 
     if (grn_obj_is_table(ctx, table)) {
-      dump_records(ctx, dumper, table);
+      dump_records(ctx, dumper, table, is_sort_hash_table);
     }
 
   next_loop :
@@ -1041,6 +1041,7 @@ command_dump(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
   grn_bool is_dump_records;
   grn_bool is_dump_indexes;
   grn_bool is_dump_configs;
+  grn_bool is_sort_hash_table;
 
   dumper.output = ctx->impl->output.buf;
   if (grn_thread_get_limit() == 1) {
@@ -1067,6 +1068,9 @@ command_dump(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
   is_dump_configs = grn_plugin_proc_get_var_bool(ctx, user_data,
                                                  "dump_configs", -1,
                                                  GRN_TRUE);
+  is_sort_hash_table = grn_plugin_proc_get_var_bool(ctx, user_data,
+                                                 "sort_hash_table", -1,
+                                                 GRN_FALSE);
 
   grn_ctx_set_output_type(ctx, GRN_CONTENT_GROONGA_COMMAND_LIST);
 
@@ -1086,9 +1090,9 @@ command_dump(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
        load non-derivative records, while skipping records of index columns. That
        way, Groonga will silently do the job of updating index columns for us. */
     if (GRN_TEXT_LEN(tables) > 0) {
-      dump_selected_tables_records(ctx, &dumper, tables);
+      dump_selected_tables_records(ctx, &dumper, tables, is_sort_hash_table);
     } else {
-      dump_all_records(ctx, &dumper);
+      dump_all_records(ctx, &dumper, is_sort_hash_table);
     }
   }
   if (is_dump_indexes) {
@@ -1106,7 +1110,7 @@ command_dump(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
 void
 grn_proc_init_dump(grn_ctx *ctx)
 {
-  grn_expr_var vars[6];
+  grn_expr_var vars[7];
 
   grn_plugin_expr_var_init(ctx, &(vars[0]), "tables", -1);
   grn_plugin_expr_var_init(ctx, &(vars[1]), "dump_plugins", -1);
@@ -1114,9 +1118,10 @@ grn_proc_init_dump(grn_ctx *ctx)
   grn_plugin_expr_var_init(ctx, &(vars[3]), "dump_records", -1);
   grn_plugin_expr_var_init(ctx, &(vars[4]), "dump_indexes", -1);
   grn_plugin_expr_var_init(ctx, &(vars[5]), "dump_configs", -1);
+  grn_plugin_expr_var_init(ctx, &(vars[6]), "dump_hash_table_sort", -1);
   grn_plugin_command_create(ctx,
                             "dump", -1,
                             command_dump,
-                            6,
+                            sizeof(vars) / sizeof(vars[0]),
                             vars);
 }
-------------- next part --------------
HTML����������������������������...
下载 



More information about the Groonga-commit mailing list
Back to archive index