[Groonga-commit] groonga/groonga at 18d6445 [master] select: extract preparing drilldowns code

Zurück zum Archiv-Index

Kouhei Sutou null+****@clear*****
Sat May 21 17:06:07 JST 2016


Kouhei Sutou	2016-05-21 17:06:07 +0900 (Sat, 21 May 2016)

  New Revision: 18d6445ec3970a8bc0cff64b68bc95363a18e28e
  https://github.com/groonga/groonga/commit/18d6445ec3970a8bc0cff64b68bc95363a18e28e

  Message:
    select: extract preparing drilldowns code

  Modified files:
    lib/proc/proc_select.c

  Modified: lib/proc/proc_select.c (+43 -28)
===================================================================
--- lib/proc/proc_select.c    2016-05-21 16:56:00 +0900 (854e921)
+++ lib/proc/proc_select.c    2016-05-21 17:06:07 +0900 (0fab902)
@@ -1426,6 +1426,47 @@ grn_select_slices(grn_ctx *ctx,
 }
 
 static grn_bool
+grn_select_prepare_drilldowns(grn_ctx *ctx,
+                              grn_select_data *data)
+{
+  grn_drilldown_data *anonymous_drilldown = NULL;
+
+  if (!data->drilldowns) {
+    return GRN_TRUE;
+  }
+
+  if (grn_hash_size(ctx, data->drilldowns) == 1) {
+    grn_id first_id = 1;
+    anonymous_drilldown =
+      (grn_drilldown_data *)grn_hash_get_value_(ctx,
+                                                data->drilldowns,
+                                                first_id,
+                                                NULL);
+    if (anonymous_drilldown) {
+      if (anonymous_drilldown->label.length > 0) {
+        anonymous_drilldown = NULL;
+      }
+    }
+  }
+
+  if (anonymous_drilldown) {
+    data->drilldown.keys =
+      grn_table_sort_key_from_str(ctx,
+                                  anonymous_drilldown->keys.value,
+                                  anonymous_drilldown->keys.length,
+                                  data->tables.result,
+                                  &(data->drilldown.n_keys));
+    if (data->drilldown.keys) {
+      data->output.n_elements += data->drilldown.n_keys;
+    }
+  } else {
+    data->output.n_elements += 1;
+  }
+
+  return GRN_TRUE;
+}
+
+static grn_bool
 grn_select_drilldown_execute(grn_ctx *ctx,
                              grn_select_data *data,
                              grn_obj *table,
@@ -2193,34 +2234,8 @@ grn_select(grn_ctx *ctx, grn_select_data *data)
         goto exit;
       }
 
-      if (data->drilldowns) {
-        grn_drilldown_data *anonymous_drilldown = NULL;
-        if (grn_hash_size(ctx, data->drilldowns) == 1) {
-          grn_id first_id = 1;
-          anonymous_drilldown =
-            (grn_drilldown_data *)grn_hash_get_value_(ctx,
-                                                      data->drilldowns,
-                                                      first_id,
-                                                      NULL);
-          if (anonymous_drilldown) {
-            if (anonymous_drilldown->label.length > 0) {
-              anonymous_drilldown = NULL;
-            }
-          }
-        }
-        if (anonymous_drilldown) {
-          data->drilldown.keys =
-            grn_table_sort_key_from_str(ctx,
-                                        anonymous_drilldown->keys.value,
-                                        anonymous_drilldown->keys.length,
-                                        data->tables.result,
-                                        &(data->drilldown.n_keys));
-          if (data->drilldown.keys) {
-            data->output.n_elements += data->drilldown.n_keys;
-          }
-        } else {
-          data->output.n_elements += 1;
-        }
+      if (!grn_select_prepare_drilldowns(ctx, data)) {
+        goto exit;
       }
 
       if (data->adjuster.length > 0) {
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Zurück zum Archiv-Index