[Groonga-commit] groonga/groonga at c34a054 [master] logical_range_filter: extract as a method

Back to archive index

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 



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