drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chunhui Shi (JIRA)" <j...@apache.org>
Subject [jira] [Assigned] (DRILL-1928) Refactor filter pushdown code
Date Wed, 14 Dec 2016 18:07:58 GMT

     [ https://issues.apache.org/jira/browse/DRILL-1928?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Chunhui Shi reassigned DRILL-1928:

    Assignee: Chunhui Shi

> Refactor filter pushdown code
> -----------------------------
>                 Key: DRILL-1928
>                 URL: https://issues.apache.org/jira/browse/DRILL-1928
>             Project: Apache Drill
>          Issue Type: Improvement
>          Components: Query Planning & Optimization
>    Affects Versions: 0.7.0, 0.8.0
>            Reporter: Venki Korukanti
>            Assignee: Chunhui Shi
>             Fix For: Future
> Currently in many places (InfoSchema, HBase, MongoDB and FS/Hive partition pruning) we
have logic to push the filter into scan.
> 1. We can have common code for visiting the expression tree and determining which part
of the tree can be pushed to scan and which part can't be pushed to scan. 
> 2. In all places, if we can't convert the complete filter, partially converted filter
is pushed into Scan but the complete filter is copied and evaluated in Filter operator. This
causes the partially pushed filter to be evaluated in two places (Scan and Filter). 
> This JIRA proposes following API:
> {code}
> /**
>  * @param filter Filter expression tree
>  * @param fields List of columns names to consider when extracting the filter. For example
partition pruning is interested in only on expressions that involve partition columns. In
that case partition pruning can pass list of partition columns as supported column list.
>  * @param functions List of supported functions to consider in extracting the filter.
For example partition pruning is interested in only "=", ">" etc. It can pass these functions
as the supported function list.
>  *
>  * @return Result contains two trees. One tree that can be pushed to Scan and other tree
that can't be pushed into Scan. Either of them can be null.
>  */
> FilterPruningResult extract(FilterExpression, FieldList, FunctionList)
> {code}

This message was sent by Atlassian JIRA

View raw message