[ https://issues.apache.org/jira/browse/ARROW-3458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16669708#comment-16669708 ]
Pindikura Ravindra commented on ARROW-3458: ------------------------------------------- > So for creating a string based expression parser can we use antlr for parser > generation ? yes. > Can we have two separate implementations both in C and Java or Have an > implementation in C and a Java binding > for the same ? IMO - If we do in C++ first, it'll be usable from c and python too. > [Gandiva] Add a string based expression parser > ---------------------------------------------- > > Key: ARROW-3458 > URL: https://issues.apache.org/jira/browse/ARROW-3458 > Project: Apache Arrow > Issue Type: New Feature > Components: C++, Gandiva > Reporter: Pindikura Ravindra > Assignee: Praveen Krishna > Priority: Major > Labels: gandiva > > Gandiva currently supports a tree-based expression builder. This requires > writing a lot of code for even simple expressions. > For eg. to build an expression for "a + b < 10", the code is : > {code:java} > // schema for input fields > auto field0 = field("a", int32()); > auto field1 = field("b", int32()); > auto schema = arrow::schema({field0, field1}); > // output fields > auto field_result = field("res", boolean()); > // Build expression > auto node_f0 = TreeExprBuilder::MakeField(field0); > auto node_f1 = TreeExprBuilder::MakeField(field1); > auto literal_10 = TreeExprBuilder::MakeLiteral(10); > auto sum_expr = > TreeExprBuilder::MakeFunction("add", {node_f0, node_f1}, int32()); > auto lt_expr = > TreeExprBuilder::MakeExpression("less_than", {sum_expr, literal_10}, > field_result); > {code} > An alternate way to do this would be : > > {code:java} > // Build expression > auto expr = StringExprBuilder::MakeExpression(schema, "a + b < 10", > field_result); > {code} > The expression syntax should be close to that of SQL. > > To begin with, this'll simplify writing tests. And, it will provide an easier > api to work with gandiva. -- This message was sent by Atlassian JIRA (v7.6.3#76005)