[ https://issues.apache.org/jira/browse/ARROW-10322?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Neal Richardson resolved ARROW-10322. ------------------------------------- Resolution: Fixed Issue resolved by pull request 8894 [https://github.com/apache/arrow/pull/8894] > [C++][Dataset] Minimize Expression to a wrapper around compute::Function > ------------------------------------------------------------------------ > > Key: ARROW-10322 > URL: https://issues.apache.org/jira/browse/ARROW-10322 > Project: Apache Arrow > Issue Type: Improvement > Components: C++ > Affects Versions: 1.0.1 > Reporter: Ben Kietzman > Assignee: Ben Kietzman > Priority: Major > Labels: pull-request-available > Fix For: 3.0.0 > > Time Spent: 17.5h > Remaining Estimate: 0h > > The Expression class hierarchy was originally intended to provide generic, > structured representations of compute functionality. On the former point they > have been superseded by compute:: > {Function, Kernel, ...} > which encapsulates validation and execution. In light of this Expression can > be drastically simplified and improved by composition with these classes. > Each responsibility which can be deferred implies less boilerplate when > exposing a new compute function for use in datasets. Ideally any compute > function will be immediately available to use in a filter or projection. > {code:java} > struct Expression { > using Literal = std::shared_ptr<Scalar>; > struct Call { > std::shared_ptr<ScalarFunction> function; > std::shared_ptr<FunctionOptions> options; > std::vector<Expression> arguments; > }; > util::variant<Literal, FieldRef, Call> value; > }; > {code} > A simple discriminated union as above should be sufficient to represent > arbitrary filters and projections: any expression which results in type > {{bool}} is a valid filter, and any expression which is a {{Projection}} may > be used to map one record batch to another. > Expression simplification (currently implemented in {{Expression::Assume}}) > is an optimization used for example in predicate pushdown, and therefore need > not exhaustively cover the full space of available compute functions. -- This message was sent by Atlassian Jira (v8.3.4#803005)