Kouhei Sutou
null+****@clear*****
Wed Jul 15 17:41:11 JST 2015
Kouhei Sutou 2015-07-15 17:41:11 +0900 (Wed, 15 Jul 2015) New Revision: c34a05411656d841736eadc8a562af3f336d7d97 https://github.com/groonga/groonga/commit/c34a05411656d841736eadc8a562af3f336d7d97 Message: logical_range_filter: extract as a method Modified files: plugins/sharding/logical_range_filter.rb Modified: plugins/sharding/logical_range_filter.rb (+23 -27) =================================================================== --- plugins/sharding/logical_range_filter.rb 2015-07-14 19:07:43 +0900 (775e45d) +++ plugins/sharding/logical_range_filter.rb 2015-07-15 17:41:11 +0900 (904a21f) @@ -295,21 +295,15 @@ module Groonga __LINE__, __method__) end - selector_only_procedure_reason = - "selector only procedure can't be used" estimated_n_records = 0 case @cover_type when :all if @filter create_expression(@table) do |expression| @expression_builder.build_all(expression) - selector_only_procedure = - find_selector_only_procedure(expression) - if selector_only_procedure - reason = "#{selector_only_procedure_reason}: " - reason << "<#{selector_only_procedure.name}>" - return decide_use_range_index(false, reason, - __LINE__, __method__) + unless range_index_available_expression?(expression, + __LINE__, __method__) + return false end estimated_n_records = expression.estimate_size(@table) end @@ -319,36 +313,27 @@ module Groonga when :partial_min create_expression(@table) do |expression| @expression_builder.build_partial_min(expression) - selector_only_procedure = find_selector_only_procedure(expression) - if selector_only_procedure - reason = "#{selector_only_procedure_reason}: " - reason << "<#{selector_only_procedure.name}>" - return decide_use_range_index(false, reason, - __LINE__, __method__) + unless range_index_available_expression?(expression, + __LINE__, __method__) + return false end estimated_n_records = expression.estimate_size(@table) end when :partial_max create_expression(@table) do |expression| @expression_builder.build_partial_max(expression) - selector_only_procedure = find_selector_only_procedure(expression) - if selector_only_procedure - reason = "#{selector_only_procedure_reason}: " - reason << "<#{selector_only_procedure.name}>" - return decide_use_range_index(false, reason, - __LINE__, __method__) + unless range_index_available_expression?(expression, + __LINE__, __method__) + return false end estimated_n_records = expression.estimate_size(@table) end when :partial_min_and_max create_expression(@table) do |expression| @expression_builder.build_partial_min_and_max(expression) - selector_only_procedure = find_selector_only_procedure(expression) - if selector_only_procedure - reason = "#{selector_only_procedure_reason}: " - reason << "<#{selector_only_procedure.name}>" - return decide_use_range_index(false, reason, - __LINE__, __method__) + unless range_index_available_expression?(expression, + __LINE__, __method__) + return false end estimated_n_records = expression.estimate_size(@table) end @@ -376,6 +361,17 @@ module Groonga __LINE__, __method__) end + def range_index_available_expression?(expression, line, method_name) + selector_only_procedure = find_selector_only_procedure(expression) + if selector_only_procedure + reason = "selector only procedure can't be used: " + reason << "<#{selector_only_procedure.name}>" + return decide_use_range_index(false, reason, line, method_name) + end + + true + end + def find_selector_only_procedure(expression) expression.codes.each do |code| value = code.value -------------- next part -------------- HTML����������������������������...Download