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

Aman Sinha updated IMPALA-9983:
-------------------------------
    Description: 
For queries of the following type:
{noformat}
select * from (select l_partkey, l_quantity, 
              rank() over (partition by l_partkey order by l_quantity desc) rk 
   from lineitem) dt 
   where rk <= 100
   order by l_partkey, l_quantity, rk
   limit 100
{noformat}
the limit 100 from the outer order by can be pushed down to the analytic sort 
that is done below the AnalyticEval operator.  The reason is there are 
effectively 2 limits:
  PARTITION BY l_partkey ORDER BY l_quantity LIMIT PER PARTITION 100
  ORDER BY l_partkey .... LIMIT 100
and together they imply
ORDER BY l_partkey, l_quantity  LIMIT 100

For the limit pushdown to work, the partition-by exprs must be a leading prefix 
of the order-by exprs. Also, other qualifying conditions must be met based on 
the above pattern.

    

  was:
For queries of the following type:
{noformat}
select * from (select l_partkey, l_quantity, 
              rank() over (partition by l_partkey order by l_quantity desc) rk 
   from lineitem) dt 
   where rk <= 100
   group by l_partkey, l_quantity
   order by l_partkey, l_quantity, rk
   limit 100
{noformat}
the limit 100 from the outer order by can be pushed down to the analytic sort 
that is done below the AnalyticEval operator.  The reason is there are 
effectively 2 limits:
  PARTITION BY l_partkey ORDER BY l_quantity LIMIT PER PARTITION 100
  ORDER BY l_partkey .... LIMIT 100
and together they imply
ORDER BY l_partkey, l_quantity  LIMIT 100

For the limit pushdown to work, the partition-by exprs must be a leading prefix 
of the order-by exprs. Also, other qualifying conditions must be met based on 
the above pattern.

    


> Push limit from a top level sort onto analytic sort when applicable
> -------------------------------------------------------------------
>
>                 Key: IMPALA-9983
>                 URL: https://issues.apache.org/jira/browse/IMPALA-9983
>             Project: IMPALA
>          Issue Type: Improvement
>          Components: Frontend
>    Affects Versions: Impala 3.4.0
>            Reporter: Aman Sinha
>            Assignee: Aman Sinha
>            Priority: Major
>
> For queries of the following type:
> {noformat}
> select * from (select l_partkey, l_quantity, 
>               rank() over (partition by l_partkey order by l_quantity desc) 
> rk 
>    from lineitem) dt 
>    where rk <= 100
>    order by l_partkey, l_quantity, rk
>    limit 100
> {noformat}
> the limit 100 from the outer order by can be pushed down to the analytic sort 
> that is done below the AnalyticEval operator.  The reason is there are 
> effectively 2 limits:
>   PARTITION BY l_partkey ORDER BY l_quantity LIMIT PER PARTITION 100
>   ORDER BY l_partkey .... LIMIT 100
> and together they imply
> ORDER BY l_partkey, l_quantity  LIMIT 100
> For the limit pushdown to work, the partition-by exprs must be a leading 
> prefix of the order-by exprs. Also, other qualifying conditions must be met 
> based on the above pattern.
>     



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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-all-unsubscr...@impala.apache.org
For additional commands, e-mail: issues-all-h...@impala.apache.org

Reply via email to