[Groonga-commit] ranguba/groonga-client at 05795ca [master] Ignore no values in_values()

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Apr 13 13:29:23 JST 2017


Kouhei Sutou	2017-04-13 13:29:23 +0900 (Thu, 13 Apr 2017)

  New Revision: 05795caa6e16061835f9dc07684b73d386bff347
  https://github.com/ranguba/groonga-client/commit/05795caa6e16061835f9dc07684b73d386bff347

  Message:
    Ignore no values in_values()

  Modified files:
    lib/groonga/client/request/select.rb
    test/request/test-select.rb

  Modified: lib/groonga/client/request/select.rb (+15 -12)
===================================================================
--- lib/groonga/client/request/select.rb    2017-04-13 13:25:54 +0900 (f6f561b)
+++ lib/groonga/client/request/select.rb    2017-04-13 13:29:23 +0900 (810098c)
@@ -178,29 +178,30 @@ module Groonga
             @request = request
           end
 
-          # @example: Use in_values function
+          # Adds a `in_values` condition then return a new `select`
+          # request object.
+          #
+          # @example: Multiple conditions
           #    request.
           #      filter.in_values("tags", "tag1", "tag2").
           #        # -> --filter 'in_values(tags, "tag1", "tag2")'
           #      filter("user", "alice")
           #        # -> --filter '(in_values(tags, "tag1", "tag2")) && (user == "alice")'
           #
+          # @example: Ignore no values case
+          #    request.
+          #      filter.in_values("tags")
+          #        # -> --filter ''
+          #
           # @param [String, Symbol] column_name The target column name.
           #
-          # @param [Object] value A column value that cover target
+          # @param [Object] values The column values that cover target
           #   column values.
           #
-          # @param [Object] values The rest column values that cover
-          #   target column values.
-          #
-          # Adds a `in_values` condition then return a new `select`
-          # request object.
-          #
           # @return [Groonga::Client::Request::Select]
           #   The new request with the given condition.
-          def in_values(column_name, value, *values)
-            parameters =
-              FilterInValuesParameters.new(column_name, value, *values)
+          def in_values(column_name, *values)
+            parameters = FilterInValuesParameters.new(column_name, *values)
             add_parameter(FilterMerger, parameters)
           end
 
@@ -359,7 +360,7 @@ module Groonga
             filter2 = params2[:filter]
             if filter1 and filter2
               params[:filter] = "(#{filter1}) && (#{filter2})"
-            else
+            elsif filter1 or filter2
               params[:filter] = (filter1 || filter2)
             end
             params
@@ -462,6 +463,8 @@ module Groonga
           end
 
           def to_parameters
+            return {} if****@value*****?
+
             escaped_values =****@value***** do |value|
               escape_script_syntax_value(value)
             end

  Modified: test/request/test-select.rb (+4 -3)
===================================================================
--- test/request/test-select.rb    2017-04-13 13:25:54 +0900 (1a9358e)
+++ test/request/test-select.rb    2017-04-13 13:29:23 +0900 (e282f00)
@@ -114,9 +114,10 @@ class TestRequestSelect < Test::Unit::TestCase
       end
 
       test("no values") do
-        assert_raise(ArgumentError) do
-          in_values("tags")
-        end
+        assert_equal({
+                       :table => "posts",
+                     },
+                     in_values("tags"))
       end
     end
   end
-------------- next part --------------
HTML����������������������������...
Download 



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