[Groonga-commit] groonga/groonga at fa566d7 [master] sharding: move cache key related code to DynamicColumns

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Oct 31 16:20:23 JST 2017


Kouhei Sutou	2017-10-31 16:20:23 +0900 (Tue, 31 Oct 2017)

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

  Message:
    sharding: move cache key related code to DynamicColumns

  Modified files:
    plugins/sharding/dynamic_columns.rb
    plugins/sharding/logical_select.rb

  Modified: plugins/sharding/dynamic_columns.rb (+26 -6)
===================================================================
--- plugins/sharding/dynamic_columns.rb    2017-10-31 16:14:59 +0900 (7dcac791e)
+++ plugins/sharding/dynamic_columns.rb    2017-10-31 16:20:23 +0900 (35fdae585)
@@ -48,16 +48,36 @@ module Groonga
         @output_contexts.each(&block)
       end
 
+      def each(&block)
+        each_initial(&block)
+        each_filtered(&block)
+        each_output(&block)
+      end
+
       def close
-        @initial_contexts.each do |context|
-          context.close
-        end
-        @filtered_contexts.each do |context|
+        each do |context|
           context.close
         end
-        @output_contexts.each do |context|
-          context.close
+      end
+
+      def cache_key
+        key = ""
+        [
+          @initial_contexts,
+          @filtered_contexts,
+          @output_contexts,
+        ].each do |contexts|
+          contexts.sort_by(&:label).each do |context|
+            key << "#{context.label}\0"
+            key << "#{context.stage}\0"
+            key << "#{context.type}\0"
+            key << "#{context.flags}\0"
+            key << "#{context.value}\0"
+            key << "#{context.window_sort_keys.join(',')}\0"
+            key << "#{context.window_group_keys.join(',')}\0"
+          end
         end
+        key
       end
     end
 

  Modified: plugins/sharding/logical_select.rb (+2 -21)
===================================================================
--- plugins/sharding/logical_select.rb    2017-10-31 16:14:59 +0900 (b9a6f442f)
+++ plugins/sharding/logical_select.rb    2017-10-31 16:20:23 +0900 (b96a8eedd)
@@ -97,32 +97,13 @@ module Groonga
           key << "#{drilldown.calc_types}\0"
           key << "#{drilldown.calc_target_name}\0"
           key << "#{drilldown.filter}\0"
-          cache_key_dynamic_columns(key, drilldown.dynamic_columns)
+          key << drilldown.dynamic_columns.cache_key
         end
         dynamic_columns = DynamicColumns.parse(input)
-        cache_key_dynamic_columns(key, dynamic_columns)
+        key << dynamic_columns.cache_key
         key
       end
 
-      def cache_key_dynamic_columns(key, dynamic_columns)
-        [
-          :initial,
-          :filtered,
-          :output
-        ].each do |stage|
-          target_dynamic_columns = dynamic_columns.__send__("each_#{stage}").to_a
-          target_dynamic_columns.sort_by(&:label).each do |dynamic_column|
-            key << "#{dynamic_column.label}\0"
-            key << "#{dynamic_column.stage}\0"
-            key << "#{dynamic_column.type}\0"
-            key << "#{dynamic_column.flags}\0"
-            key << "#{dynamic_column.value}\0"
-            key << "#{dynamic_column.window_sort_keys.join(',')}\0"
-            key << "#{dynamic_column.window_group_keys.join(',')}\0"
-          end
-        end
-      end
-
       def write_records(writer, context)
         result_sets = context.result_sets
 
-------------- next part --------------
HTML����������������������������...
URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20171031/8af9e079/attachment-0001.htm 



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