Paul Rogers created DRILL-7557:
----------------------------------

             Summary: Revise "Base" storage plugin filter-push down listerner 
with a builder
                 Key: DRILL-7557
                 URL: https://issues.apache.org/jira/browse/DRILL-7557
             Project: Apache Drill
          Issue Type: Improvement
    Affects Versions: 1.18.0
            Reporter: Paul Rogers
            Assignee: Paul Rogers
             Fix For: 1.18.0


DRILL-7458 introduces a base framework for storage plugins and includes a 
simplified mechanism for filter push down. Part of that mechanism includes a 
"listener", with the bulk of the work done in a single method:

{code:java}
Pair<GroupScan, List<RexNode>> transform(GroupScan groupScan,
      List<Pair<RexNode, RelOp>> andTerms, Pair<RexNode, DisjunctionFilterSpec> 
orTerm);
{code}

Reviewers correctly pointed out that this method might be a bit too complex.

The listener pattern pretty much forced the present design. To improve it, we'd 
want to use a different design; maybe some kind of builder which might:

* Accept the CNF and DNF terms via dedicated methods.
* Perform a processing step.
* Provide a number of methods to communicate the results, such as 1) whether a 
new group scan is needed, 2) any CNF terms to retain, and 3) any DNF terms to 
retain.




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to