[Groonga-commit] droonga/fluent-plugin-droonga at faf5b94 [master] Extract final_limit method

Back to archive index

Yoji Shidara null+****@clear*****
Thu Dec 5 19:30:47 JST 2013


Yoji Shidara	2013-12-05 19:30:47 +0900 (Thu, 05 Dec 2013)

  New Revision: faf5b94c3db7543f4a3997a0c4da69247137443a
  https://github.com/droonga/fluent-plugin-droonga/commit/faf5b94c3db7543f4a3997a0c4da69247137443a

  Message:
    Extract final_limit method

  Modified files:
    lib/droonga/plugin/distributor/distributed_search_plan.rb

  Modified: lib/droonga/plugin/distributor/distributed_search_plan.rb (+20 -10)
===================================================================
--- lib/droonga/plugin/distributor/distributed_search_plan.rb    2013-12-05 19:22:44 +0900 (b6bcbdb)
+++ lib/droonga/plugin/distributor/distributed_search_plan.rb    2013-12-05 19:30:47 +0900 (41237e4)
@@ -141,6 +141,8 @@ module Droonga
       def calculate_offset_and_limit!
         @original_sort_offset = sort_offset
         @original_output_offset = output_offset
+        @original_sort_limit = sort_limit
+        @original_output_limit = output_limit
 
         calculate_sort_offset!
         calculate_output_offset!
@@ -153,18 +155,12 @@ module Droonga
         # | UNLIMITED  | B            | => | final_offset + B         | final_offset + B        | B           |
         # | A          | UNLIMITED    | => | final_offset + A         | final_offset + A        | A           |
         # | A          | B            | => | final_offset + min(A, B) | final_offset + min(A, B)| min(A, B)   |
-        final_limit = 0
-        if sort_limit == UNLIMITED && output_limit == UNLIMITED
-          final_limit = UNLIMITED
+
+        # XXX final_limit and final_offset calculated in many times
+
+        if final_limit == UNLIMITED
           @output["limit"] = UNLIMITED
         else
-          if sort_limit == UNLIMITED
-            final_limit = output_limit
-          elsif output_limit == UNLIMITED
-            final_limit = sort_limit
-          else
-            final_limit = [sort_limit, output_limit].min
-          end
           @query["sortBy"]["limit"] = final_offset + final_limit if rich_sort?
           @output["limit"] = final_offset + final_limit
         end
@@ -213,6 +209,20 @@ module Droonga
         @original_sort_offset + @original_output_offset
       end
 
+      def final_limit
+        if @original_sort_limit == UNLIMITED && @original_output_limit == UNLIMITED
+          UNLIMITED
+        else
+          if @original_sort_limit == UNLIMITED
+            @original_output_limit
+          elsif @original_output_limit == UNLIMITED
+            @original_sort_limit
+          else
+            [@original_sort_limit, @original_output_limit].min
+          end
+        end
+      end
+
       def has_records?
         @output["elements"].include?("records")
       end
-------------- next part --------------
HTML����������������������������...
下载 



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