[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[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 :
   // 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);

An alternate way to do this would be :

// Build expression
auto expr = StringExprBuilder::MakeExpression(schema, "a + b < 10", field_result);
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