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

Vitalii Diravka updated DRILL-6173:
-----------------------------------
    Description: 
There is Calcite rule JoinPushTransitivePredicatesRule but it does not work in 
Drill. 
 Applying it in Drill will allow for equi-join queries to push filter condition 
from one table to another:
{code:sql}
select * 
from A, B 
where
A.id = B.id and 
B.id = 100
{code}
In that case it is possible that Scan operator for A table will not scan all 
data. 
 For table A it can lead for applying: 
 1. [Partition pruning for Hive tables and partiotion/directory pruning for 
file system 
tables|https://drill.apache.org/docs/partition-pruning-introduction/] 
 2. [Parquet filter 
pushdown|https://drill.apache.org/docs/parquet-filter-pushdown/]

 

Note: transitive closure doesn't work for some cases, these Calcite issues can 
resolve them:
CALCITE-1048, CALCITE-2274, CALCITE-2275, CALCITE-2241. They are tracked by 
DRILL-6350

  was:
There is Calcite rule JoinPushTransitivePredicatesRule but it does not work in 
Drill. 
 Applying it in Drill will allow for equi-join queries to push filter condition 
from one table to another:
{code:sql}
select * 
from A, B 
where
A.id = B.id and 
B.id = 100
{code}
In that case it is possible that Scan operator for A table will not scan all 
data. 
 For table A it can lead for applying: 
 1. [Partition pruning for Hive tables and partiotion/directory pruning for 
file system 
tables|https://drill.apache.org/docs/partition-pruning-introduction/] 
 2. [Parquet filter 
pushdown|https://drill.apache.org/docs/parquet-filter-pushdown/]

 

Note: transitive closure doesn't work for some cases, these Calcite issues can 
resolve them:
CALCITE-1048, CALCITE-2274, CALCITE-2275, CALCITE-2241.


> Support transitive closure during filter push down and partition pruning
> ------------------------------------------------------------------------
>
>                 Key: DRILL-6173
>                 URL: https://issues.apache.org/jira/browse/DRILL-6173
>             Project: Apache Drill
>          Issue Type: Improvement
>          Components: Query Planning & Optimization
>    Affects Versions: 1.12.0
>            Reporter: Vitalii Diravka
>            Assignee: Vitalii Diravka
>            Priority: Major
>              Labels: doc-impacting, ready-to-commit
>             Fix For: 1.14.0
>
>
> There is Calcite rule JoinPushTransitivePredicatesRule but it does not work 
> in Drill. 
>  Applying it in Drill will allow for equi-join queries to push filter 
> condition from one table to another:
> {code:sql}
> select * 
> from A, B 
> where
> A.id = B.id and 
> B.id = 100
> {code}
> In that case it is possible that Scan operator for A table will not scan all 
> data. 
>  For table A it can lead for applying: 
>  1. [Partition pruning for Hive tables and partiotion/directory pruning for 
> file system 
> tables|https://drill.apache.org/docs/partition-pruning-introduction/] 
>  2. [Parquet filter 
> pushdown|https://drill.apache.org/docs/parquet-filter-pushdown/]
>  
> Note: transitive closure doesn't work for some cases, these Calcite issues 
> can resolve them:
> CALCITE-1048, CALCITE-2274, CALCITE-2275, CALCITE-2241. They are tracked by 
> DRILL-6350



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to