Skip to content

Commit

Permalink
planner: fix nil pointer at expression.(*CorrelatedColumn).Eval (#42789
Browse files Browse the repository at this point in the history
…) (#48978)

close #42739
  • Loading branch information
ti-chi-bot authored Jan 12, 2024
1 parent 8a15fe4 commit 5128edd
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 0 deletions.
2 changes: 2 additions & 0 deletions pkg/planner/core/logical_plan_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,7 @@ func (b *PlanBuilder) buildAggregation(ctx context.Context, p LogicalPlan, aggFu
if _, ok = b.correlatedAggMapper[aggFuncList[j]]; !ok {
b.correlatedAggMapper[aggFuncList[j]] = &expression.CorrelatedColumn{
Column: *schema4Agg.Columns[aggIndexMap[j]],
Data: new(types.Datum),
}
}
b.correlatedAggMapper[aggFunc] = b.correlatedAggMapper[aggFuncList[j]]
Expand All @@ -434,6 +435,7 @@ func (b *PlanBuilder) buildAggregation(ctx context.Context, p LogicalPlan, aggFu
if _, ok := correlatedAggMap[aggFunc]; ok {
b.correlatedAggMapper[aggFunc] = &expression.CorrelatedColumn{
Column: column,
Data: new(types.Datum),
}
}
}
Expand Down
21 changes: 21 additions & 0 deletions tests/integrationtest/r/planner/core/tests/prepare/issue.result
Original file line number Diff line number Diff line change
Expand Up @@ -425,3 +425,24 @@ execute st1 using @t;
select count(*) from t4;
count(*)
2
use test;
drop table if exists t0;
CREATE TABLE t0 (c1 double, c2 double);
select
exists (
select
subq_2.c0 as c8
from
(select
ref_153.c1 as c0
from
t0 as ref_153
group by ref_153.c1 having 0 <> (
select 1
from
t0 as ref_173
where count(ref_153.c2) = avg(ref_153.c2)
order by c1 desc limit 1)) as subq_2
) as c10;
c10
0
21 changes: 21 additions & 0 deletions tests/integrationtest/t/planner/core/tests/prepare/issue.test
Original file line number Diff line number Diff line change
Expand Up @@ -287,3 +287,24 @@ set @t='2022-01-01 00:00:00.000000';
execute st1 using @t;
select count(*) from t4;

# TestIssue42739

use test;
drop table if exists t0;
CREATE TABLE t0 (c1 double, c2 double);
select
exists (
select
subq_2.c0 as c8
from
(select
ref_153.c1 as c0
from
t0 as ref_153
group by ref_153.c1 having 0 <> (
select 1
from
t0 as ref_173
where count(ref_153.c2) = avg(ref_153.c2)
order by c1 desc limit 1)) as subq_2
) as c10;

0 comments on commit 5128edd

Please sign in to comment.