[Groonga-commit] groonga/groonga at e2c95b6 [master] expression_tree: add Accessor

Back to archive index

Naoya Murakami null+****@clear*****
Sun Jun 26 15:28:13 JST 2016


Naoya Murakami	2016-06-26 15:28:13 +0900 (Sun, 26 Jun 2016)

  New Revision: e2c95b6913c55b334378957c417c4a72f6fd5a3d
  https://github.com/groonga/groonga/commit/e2c95b6913c55b334378957c417c4a72f6fd5a3d

  Merged 0f4cec4: Merge pull request #566 from naoa/expression-tree-accessor

  Message:
    expression_tree: add Accessor

  Added files:
    lib/mrb/scripts/expression_tree/accessor.rb
  Modified files:
    lib/mrb/scripts/expression_tree.rb
    lib/mrb/scripts/expression_tree/sources.am
    lib/mrb/scripts/expression_tree_builder.rb
    test/mruby/suite/expression_rewriter/test_between.rb

  Modified: lib/mrb/scripts/expression_tree.rb (+1 -0)
===================================================================
--- lib/mrb/scripts/expression_tree.rb    2016-06-26 14:54:59 +0900 (05cde04)
+++ lib/mrb/scripts/expression_tree.rb    2016-06-26 15:28:13 +0900 (f033fa3)
@@ -1,3 +1,4 @@
+require "expression_tree/accessor"
 require "expression_tree/constant"
 require "expression_tree/binary_operation"
 require "expression_tree/function_call"

  Added: lib/mrb/scripts/expression_tree/accessor.rb (+14 -0) 100644
===================================================================
--- /dev/null
+++ lib/mrb/scripts/expression_tree/accessor.rb    2016-06-26 15:28:13 +0900 (46f913a)
@@ -0,0 +1,14 @@
+module Groonga
+  module ExpressionTree
+    class Accessor
+      attr_reader :accessor
+      def initialize(accessor)
+        @accessor = accessor
+      end
+
+      def build(expression)
+        expression.append_object(@accessor, Operator::PUSH, 1)
+      end
+    end
+  end
+end

  Modified: lib/mrb/scripts/expression_tree/sources.am (+1 -0)
===================================================================
--- lib/mrb/scripts/expression_tree/sources.am    2016-06-26 14:54:59 +0900 (a02fe84)
+++ lib/mrb/scripts/expression_tree/sources.am    2016-06-26 15:28:13 +0900 (4cec69c)
@@ -1,4 +1,5 @@
 RUBY_SCRIPT_FILES =				\
+	accessor.rb				\
 	binary_operation.rb			\
 	constant.rb				\
 	function_call.rb			\

  Modified: lib/mrb/scripts/expression_tree_builder.rb (+2 -0)
===================================================================
--- lib/mrb/scripts/expression_tree_builder.rb    2016-06-26 14:54:59 +0900 (521640b)
+++ lib/mrb/scripts/expression_tree_builder.rb    2016-06-26 15:28:13 +0900 (6bdf0df)
@@ -74,6 +74,8 @@ module Groonga
             node = ExpressionTree::Procedure.new(code.value)
           elsif code.value.is_a?(IndexColumn)
             node = ExpressionTree::IndexColumn.new(code.value)
+          elsif code.value.is_a?(Accessor)
+            node = ExpressionTree::Accessor.new(code.value)
           else
             node = ExpressionTree::Constant.new(code.value.value)
           end

  Modified: test/mruby/suite/expression_rewriter/test_between.rb (+25 -0)
===================================================================
--- test/mruby/suite/expression_rewriter/test_between.rb    2016-06-26 14:54:59 +0900 (8cfeef4)
+++ test/mruby/suite/expression_rewriter/test_between.rb    2016-06-26 15:28:13 +0900 (35b18dd)
@@ -135,4 +135,29 @@ class TestBetween < ExpressionRewriterTestCase
   expr:       <3..9>
     DUMP
   end
+
+  def test_with_accessor
+    code =
+      "Terms.Logs_message.message @ 'Groonga' && " +
+      "timestamp >= '2015-10-01 00:00:00' && " +
+      "timestamp <  '2015-11-00 00:00:00'"
+    assert_equal(<<-DUMP, dump_rewritten_plan(code))
+[0]
+  op:         <match>
+  logical_op: <or>
+  index:      <[Logs_message.message]>
+  query:      <\"Groonga\">
+  expr:       <0..2>
+[1]
+  op:         <call>
+  logical_op: <and>
+  args[0]:    <#<proc:function between arguments:[]>>
+  args[1]:    <#<column:fix_size Logs.timestamp range:Time type:scalar compress:none>>
+  args[2]:    <\"2015-10-01 00:00:00\">
+  args[3]:    <\"include\">
+  args[4]:    <\"2015-11-00 00:00:00\">
+  args[5]:    <\"exclude\">
+  expr:       <3..9>
+    DUMP
+  end
 end
-------------- next part --------------
HTML����������������������������...
Descargar 



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