[Groonga-commit] groonga/groonga-query-log at 95f6cc7 [master] Support vector column after reference column case

Back to archive index
Kouhei Sutou null+****@clear*****
Mon Oct 29 13:50:04 JST 2018


Kouhei Sutou	2018-10-29 13:50:04 +0900 (Mon, 29 Oct 2018)

  Revision: 95f6cc794c097486f92b10c02dea22a37046f99b
  https://github.com/groonga/groonga-query-log/commit/95f6cc794c097486f92b10c02dea22a37046f99b

  Merged 0602138: Merge pull request #31 from komainu8/add_new_rewrite_filter

  Message:
    Support vector column after reference column case

  Modified files:
    lib/groonga-query-log/filter-rewriter.rb
    test/test-filter-rewriter.rb

  Modified: lib/groonga-query-log/filter-rewriter.rb (+11 -10)
===================================================================
--- lib/groonga-query-log/filter-rewriter.rb    2018-10-29 13:44:28 +0900 (eaabc0d)
+++ lib/groonga-query-log/filter-rewriter.rb    2018-10-29 13:50:04 +0900 (e413150)
@@ -46,17 +46,18 @@ module GroongaQueryLog
     end
 
     def rewrite_vector_not_equal_empty_string(filter)
-      filter.gsub(/(?:([a-zA-Z0-9_.]+)\.[a-zA-Z0-9_.]+|([a-zA-Z0-9_.]+)) *!= *(?:''|"")/) do |matched|
-        if $1
-          variable = $1
-        else
-          variable = $2
-        end
-        if @vector_accessors.include?(variable)
-          "vector_size(#{variable}) > 0"
-        else
-          matched
+      filter.gsub(/([a-zA-Z0-9_.]+) *!= *(?:''|"")/) do |matched|
+        variable = $1
+        path = variable.split(".")
+        replaced = matched
+        path.size.downto(1) do |i|
+          sub_path = path[0, i].join(".")
+          if @vector_accessors.include?(sub_path)
+            replaced = "vector_size(#{sub_path}) > 0"
+            break
+          end
         end
+        replaced
       end
     end
   end

  Modified: test/test-filter-rewriter.rb (+7 -1)
===================================================================
--- test/test-filter-rewriter.rb    2018-10-29 13:44:28 +0900 (4f77fd2)
+++ test/test-filter-rewriter.rb    2018-10-29 13:50:04 +0900 (d3885d4)
@@ -72,10 +72,16 @@ class FilterRewriterTest < Test::Unit::TestCase
                            ["vector_column"]))
     end
 
-    def test_dot
+    def test_vector_sub_path
       assert_equal("vector_size(vector) > 0",
                     rewrite("vector.column != \"\"",
                             ["vector"]))
     end
+
+    def test_reference_vector
+      assert_equal("vector_size(reference.vector) > 0",
+                    rewrite("reference.vector != \"\"",
+                            ["reference.vector"]))
+    end
   end
 end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20181029/7fcd60a8/attachment-0001.html>


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