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

Aman Sinha resolved IMPALA-10064.
---------------------------------
    Fix Version/s: Impala 4.0
       Resolution: Fixed

> Support constant propagation for range predicates
> -------------------------------------------------
>
>                 Key: IMPALA-10064
>                 URL: https://issues.apache.org/jira/browse/IMPALA-10064
>             Project: IMPALA
>          Issue Type: Improvement
>          Components: Frontend
>    Affects Versions: Impala 3.4.0
>            Reporter: Aman Sinha
>            Assignee: Aman Sinha
>            Priority: Major
>             Fix For: Impala 4.0
>
>
> Consider the following table schema, view and 2 queries on the view:
> {noformat}
> create table tt1 (a1 int, b1 int, ts timestamp) partitioned by (mydate date);
> create view tt1_view as (select a1, b1, ts from tt1 where mydate = cast(ts as 
> date));
> // query 1:  (Good) constant on ts gets propagated
> explain select * from tt1_view where ts = '2019-07-01';
> 00:SCAN HDFS [db1.tt1]
>    partition predicates: mydate = DATE '2019-07-01'
>    HDFS partitions=1/3 files=2 size=48B
>    predicates: db1.tt1.ts = TIMESTAMP '2019-07-01 00:00:00'
>    row-size=24B cardinality=1
> // query 2: (Not good) constant on ts does not get propagated
> explain select * from tt1_view where ts > '2019-07-01';
> 00:SCAN HDFS [db1.tt1]
>    HDFS partitions=3/3 files=4 size=96B
>    predicates: db1.tt1.ts > TIMESTAMP '2019-07-01 00:00:00', mydate = CAST(ts 
> AS DATE)
>    row-size=28B cardinality=1
> {noformat}
> Note that in query 1, with the equality condition on 'ts' the constant value 
> is propagated to the 'mydate = CAST(ts as date)' predicate.  This gets 
> applied as a partition predicate.  Whereas, in query 2 which has a range 
> predicate, the constant is not propagated and no partition predicate is 
> created for the scan.  We should support the second case also for constant 
> propagation.  The constant predicates such as >, >=. <. <= and involving date 
> or timestamp literals should be considered ..but we have to analyze the cases 
> where the propagation is valid.  E.g with date_add, date_diff type of 
> functions is there a potential for incorrect propagation.
> Note that a predicate can be a BETWEEN condition such as:
> {noformat}
> WHERE ts >= '2019-07-01' AND ts <= '2020--07-01'
> {noformat}
> In this case both need to be applied 



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

Reply via email to