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)

Reply via email to