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)