mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-03 13:02:00 +00:00
fix ORDER BY after window fuctions over Distributed
This commit is contained in:
parent
bdc5b97d02
commit
6cccb0992a
@ -1296,9 +1296,12 @@ void InterpreterSelectQuery::executeImpl(QueryPlan & query_plan, const BlockInpu
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (from_aggregation_stage)
|
if (from_aggregation_stage)
|
||||||
executeMergeSorted(query_plan, "for ORDER BY");
|
executeMergeSorted(query_plan, "after aggregation stage for ORDER BY");
|
||||||
else if (!expressions.first_stage && !expressions.need_aggregate && !(query.group_by_with_totals && !aggregate_final))
|
else if (!expressions.first_stage
|
||||||
executeMergeSorted(query_plan, "for ORDER BY");
|
&& !expressions.need_aggregate
|
||||||
|
&& !expressions.has_window
|
||||||
|
&& !(query.group_by_with_totals && !aggregate_final))
|
||||||
|
executeMergeSorted(query_plan, "for ORDER BY, without aggregation");
|
||||||
else /// Otherwise, just sort.
|
else /// Otherwise, just sort.
|
||||||
executeOrder(
|
executeOrder(
|
||||||
query_plan,
|
query_plan,
|
||||||
|
@ -10,7 +10,9 @@ select max(identity(dummy + 1)) over () from remote('127.0.0.{1,2}', system, one
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
drop table if exists t_01568;
|
drop table if exists t_01568;
|
||||||
create table t_01568 engine Memory as select intDiv(number, 3) p, number from numbers(9);
|
create table t_01568 engine Memory as
|
||||||
|
select intDiv(number, 3) p, modulo(number, 3) o, number
|
||||||
|
from numbers(9);
|
||||||
select sum(number) over w, max(number) over w from t_01568 window w as (partition by p);
|
select sum(number) over w, max(number) over w from t_01568 window w as (partition by p);
|
||||||
3 2
|
3 2
|
||||||
3 2
|
3 2
|
||||||
@ -57,4 +59,26 @@ select groupArray(groupArray(number)) over (rows unbounded preceding) from remot
|
|||||||
[[0,3,6],[1,4,7]]
|
[[0,3,6],[1,4,7]]
|
||||||
[[0,3,6],[1,4,7],[2,5,8]]
|
[[0,3,6],[1,4,7],[2,5,8]]
|
||||||
select groupArray(groupArray(number)) over (rows unbounded preceding) from remote('127.0.0.{1,2}', '', t_01568) group by mod(number, 3) settings distributed_group_by_no_merge=2; -- { serverError 48 }
|
select groupArray(groupArray(number)) over (rows unbounded preceding) from remote('127.0.0.{1,2}', '', t_01568) group by mod(number, 3) settings distributed_group_by_no_merge=2; -- { serverError 48 }
|
||||||
|
-- proper ORDER BY w/window functions
|
||||||
|
select p, o, count() over (partition by p)
|
||||||
|
from remote('127.0.0.{1,2}', '', t_01568)
|
||||||
|
order by p, o;
|
||||||
|
0 0 6
|
||||||
|
0 0 6
|
||||||
|
0 1 6
|
||||||
|
0 1 6
|
||||||
|
0 2 6
|
||||||
|
0 2 6
|
||||||
|
1 0 6
|
||||||
|
1 0 6
|
||||||
|
1 1 6
|
||||||
|
1 1 6
|
||||||
|
1 2 6
|
||||||
|
1 2 6
|
||||||
|
2 0 6
|
||||||
|
2 0 6
|
||||||
|
2 1 6
|
||||||
|
2 1 6
|
||||||
|
2 2 6
|
||||||
|
2 2 6
|
||||||
drop table t_01568;
|
drop table t_01568;
|
||||||
|
@ -9,7 +9,9 @@ select max(identity(dummy + 1)) over () from remote('127.0.0.{1,2}', system, one
|
|||||||
|
|
||||||
drop table if exists t_01568;
|
drop table if exists t_01568;
|
||||||
|
|
||||||
create table t_01568 engine Memory as select intDiv(number, 3) p, number from numbers(9);
|
create table t_01568 engine Memory as
|
||||||
|
select intDiv(number, 3) p, modulo(number, 3) o, number
|
||||||
|
from numbers(9);
|
||||||
|
|
||||||
select sum(number) over w, max(number) over w from t_01568 window w as (partition by p);
|
select sum(number) over w, max(number) over w from t_01568 window w as (partition by p);
|
||||||
|
|
||||||
@ -22,4 +24,9 @@ select groupArray(groupArray(number)) over (rows unbounded preceding) from remot
|
|||||||
select groupArray(groupArray(number)) over (rows unbounded preceding) from remote('127.0.0.{1,2}', '', t_01568) group by mod(number, 3) settings distributed_group_by_no_merge=1;
|
select groupArray(groupArray(number)) over (rows unbounded preceding) from remote('127.0.0.{1,2}', '', t_01568) group by mod(number, 3) settings distributed_group_by_no_merge=1;
|
||||||
select groupArray(groupArray(number)) over (rows unbounded preceding) from remote('127.0.0.{1,2}', '', t_01568) group by mod(number, 3) settings distributed_group_by_no_merge=2; -- { serverError 48 }
|
select groupArray(groupArray(number)) over (rows unbounded preceding) from remote('127.0.0.{1,2}', '', t_01568) group by mod(number, 3) settings distributed_group_by_no_merge=2; -- { serverError 48 }
|
||||||
|
|
||||||
|
-- proper ORDER BY w/window functions
|
||||||
|
select p, o, count() over (partition by p)
|
||||||
|
from remote('127.0.0.{1,2}', '', t_01568)
|
||||||
|
order by p, o;
|
||||||
|
|
||||||
drop table t_01568;
|
drop table t_01568;
|
||||||
|
Loading…
Reference in New Issue
Block a user