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