[ 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