From 15a8e654bf35334f762ed65f896bf67ade3040ef Mon Sep 17 00:00:00 2001 From: Yiding Cui Date: Wed, 16 Aug 2023 11:51:30 +0900 Subject: [PATCH 1/3] This is an automated cherry-pick of #45824 Signed-off-by: ti-chi-bot --- planner/core/rule_eliminate_projection.go | 9 --------- planner/core/stats.go | 4 ++++ planner/core/testdata/plan_suite_out.json | 4 ++-- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/planner/core/rule_eliminate_projection.go b/planner/core/rule_eliminate_projection.go index 83936e7cd9e94..1459896f30b01 100644 --- a/planner/core/rule_eliminate_projection.go +++ b/planner/core/rule_eliminate_projection.go @@ -144,16 +144,7 @@ func eliminatePhysicalProjection(p PhysicalPlan) PhysicalPlan { } }) - oldSchema := p.Schema() newRoot := doPhysicalProjectionElimination(p) - newCols := newRoot.Schema().Columns - for i, oldCol := range oldSchema.Columns { - oldCol.Index = newCols[i].Index - oldCol.ID = newCols[i].ID - oldCol.UniqueID = newCols[i].UniqueID - oldCol.VirtualExpr = newCols[i].VirtualExpr - newRoot.Schema().Columns[i] = oldCol - } return newRoot } diff --git a/planner/core/stats.go b/planner/core/stats.go index 81b09494aad40..628d2a419367c 100644 --- a/planner/core/stats.go +++ b/planner/core/stats.go @@ -1497,7 +1497,11 @@ func (p *LogicalCTE) DeriveStats(_ []*property.StatsInfo, selfSchema *expression return nil, err } } +<<<<<<< HEAD recurStat := p.cte.recursivePartPhysicalPlan.Stats() +======= + recurStat := p.cte.recursivePartLogicalPlan.StatsInfo() +>>>>>>> 0fb21c50580 (planner: don't force set the Column in physical proj elimination (#45824)) for i, col := range selfSchema.Columns { p.stats.ColNDVs[col.UniqueID] += recurStat.ColNDVs[p.cte.recursivePartLogicalPlan.Schema().Columns[i].UniqueID] } diff --git a/planner/core/testdata/plan_suite_out.json b/planner/core/testdata/plan_suite_out.json index 3a7507f4a3b35..50a54ccba0596 100644 --- a/planner/core/testdata/plan_suite_out.json +++ b/planner/core/testdata/plan_suite_out.json @@ -2225,8 +2225,8 @@ { "SQL": "with recursive cte(a) as (select 1 union select a from cte) select * from cte; -- recursive cte cannot be inlined", "Plan": [ - "CTEFullScan 1.00 root CTE:cte data:CTE_0", - "CTE_0 1.00 root Recursive CTE", + "CTEFullScan 2.00 root CTE:cte data:CTE_0", + "CTE_0 2.00 root Recursive CTE", "├─Projection(Seed Part) 1.00 root 1->Column#2", "│ └─TableDual 1.00 root rows:1", "└─CTETable(Recursive Part) 1.00 root Scan on CTE_0" From bba2514a14734cb3ebf6f013028335551b85fa82 Mon Sep 17 00:00:00 2001 From: Yiding Cui Date: Wed, 16 Aug 2023 13:09:57 +0900 Subject: [PATCH 2/3] resolve conflicts --- planner/core/stats.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/planner/core/stats.go b/planner/core/stats.go index 628d2a419367c..b769fff8000a5 100644 --- a/planner/core/stats.go +++ b/planner/core/stats.go @@ -1497,11 +1497,7 @@ func (p *LogicalCTE) DeriveStats(_ []*property.StatsInfo, selfSchema *expression return nil, err } } -<<<<<<< HEAD - recurStat := p.cte.recursivePartPhysicalPlan.Stats() -======= - recurStat := p.cte.recursivePartLogicalPlan.StatsInfo() ->>>>>>> 0fb21c50580 (planner: don't force set the Column in physical proj elimination (#45824)) + recurStat := p.cte.recursivePartLogicalPlan.Stats() for i, col := range selfSchema.Columns { p.stats.ColNDVs[col.UniqueID] += recurStat.ColNDVs[p.cte.recursivePartLogicalPlan.Schema().Columns[i].UniqueID] } From 96c9a3bd374ab3aad1adf554e14c10ba7d7c9b76 Mon Sep 17 00:00:00 2001 From: Yiding Cui Date: Wed, 16 Aug 2023 13:00:47 +0800 Subject: [PATCH 3/3] fix conflicts --- planner/core/stats.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/planner/core/stats.go b/planner/core/stats.go index b769fff8000a5..be1c66d5528c4 100644 --- a/planner/core/stats.go +++ b/planner/core/stats.go @@ -1497,7 +1497,7 @@ func (p *LogicalCTE) DeriveStats(_ []*property.StatsInfo, selfSchema *expression return nil, err } } - recurStat := p.cte.recursivePartLogicalPlan.Stats() + recurStat := p.cte.recursivePartLogicalPlan.statsInfo() for i, col := range selfSchema.Columns { p.stats.ColNDVs[col.UniqueID] += recurStat.ColNDVs[p.cte.recursivePartLogicalPlan.Schema().Columns[i].UniqueID] }