You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Pindikura Ravindra (JIRA)" <ji...@apache.org> on 2018/10/08 07:26:00 UTC
[jira] [Created] (ARROW-3458) Add a string based expression parser
Pindikura Ravindra created ARROW-3458:
-----------------------------------------
Summary: 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: Gandiva
Reporter: Pindikura Ravindra
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)