Skip to content

Commit

Permalink
planner: fix agg push down rule mistake order by item inside agg func…
Browse files Browse the repository at this point in the history
…tion (#50002) (#50018)

close #49986
  • Loading branch information
ti-chi-bot authored Jan 26, 2024
1 parent a67d0cf commit 22a828b
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 1 deletion.
2 changes: 1 addition & 1 deletion pkg/planner/core/rule_aggregation_push_down.go
Original file line number Diff line number Diff line change
Expand Up @@ -606,7 +606,7 @@ func (a *aggregationPushDownSolver) aggPushDown(p LogicalPlan, opt *logicalOptim
break
}
}
for j, item := range newAggOrderItems {
for j, item := range newAggOrderItems[i] {
if item == nil {
continue
}
Expand Down
15 changes: 15 additions & 0 deletions tests/integrationtest/r/statistics/integration.result
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,18 @@ Sort 4.00 root statistics__integration.t1.a, statistics__integration.t2.a
│ └─TableFullScan 2.00 cop[tikv] table:t2 keep order:false
└─TableReader(Probe) 4.00 root data:TableFullScan
└─TableFullScan 4.00 cop[tikv] table:t1 keep order:false
drop table if exists test.t;
create table if not exists test.ast (i varchar(20));
create table if not exists test.acc (j varchar(20), k varchar(20), l varchar(20), m varchar(20));
explain format='brief' with t as(select i, (case when b.j = '20001' then b.l else b.k end) an from test.ast a inner join test.acc b on (a.i = b.m) and a.i = 'astp2019121731703151'), t1 as (select i, group_concat(an order by an separator '; ') an from t group by i) select * from t1;
id estRows task access object operator info
Projection 8.00 root test.ast.i, Column#32
└─HashAgg 8.00 root group by:Column#37, funcs:group_concat(Column#34 order by Column#35 separator "; ")->Column#32, funcs:firstrow(Column#36)->test.ast.i
└─Projection 12.50 root case(eq(test.acc.j, 20001), test.acc.l, test.acc.k)->Column#34, case(eq(test.acc.j, 20001), test.acc.l, test.acc.k)->Column#35, test.ast.i->Column#36, test.ast.i->Column#37
└─HashJoin 12.50 root inner join, equal:[eq(test.ast.i, test.acc.m)]
├─TableReader(Build) 10.00 root data:Selection
│ └─Selection 10.00 cop[tikv] eq(test.ast.i, "astp2019121731703151"), not(isnull(test.ast.i))
│ └─TableFullScan 10000.00 cop[tikv] table:a keep order:false, stats:pseudo
└─TableReader(Probe) 10.00 root data:Selection
└─Selection 10.00 cop[tikv] eq(test.acc.m, "astp2019121731703151"), not(isnull(test.acc.m))
└─TableFullScan 10000.00 cop[tikv] table:b keep order:false, stats:pseudo
7 changes: 7 additions & 0 deletions tests/integrationtest/t/statistics/integration.test
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,10 @@ explain format = 'brief' select * from t2 left join t1 on t1.a=t2.a order by t1.
explain format = 'brief' select * from t1 right join t2 on t1.a=t2.a order by t1.a, t2.a;
explain format = 'brief' select * from t2 right join t1 on t1.a=t2.a order by t1.a, t2.a;

# TestIssue49986
drop table if exists test.t;
create table if not exists test.ast (i varchar(20));
create table if not exists test.acc (j varchar(20), k varchar(20), l varchar(20), m varchar(20));
explain format='brief' with t as(select i, (case when b.j = '20001' then b.l else b.k end) an from test.ast a inner join test.acc b on (a.i = b.m) and a.i = 'astp2019121731703151'), t1 as (select i, group_concat(an order by an separator '; ') an from t group by i) select * from t1;


0 comments on commit 22a828b

Please sign in to comment.