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