From 5d62c2a92fe5b9a527db2e16e44d9a946a31bc9e Mon Sep 17 00:00:00 2001 From: Xiaoju Wu Date: Thu, 16 Dec 2021 10:46:35 +0800 Subject: [PATCH] planner: fix early set of plan's statisticsTable (#30754) --- planner/core/logical_plan_builder.go | 7 +------ planner/core/rule_partition_processor.go | 3 --- planner/core/stats.go | 2 +- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/planner/core/logical_plan_builder.go b/planner/core/logical_plan_builder.go index c3b1239d4ffac..84149462965e1 100644 --- a/planner/core/logical_plan_builder.go +++ b/planner/core/logical_plan_builder.go @@ -4052,11 +4052,6 @@ func (b *PlanBuilder) buildDataSource(ctx context.Context, tn *ast.TableName, as } else { columns = tbl.Cols() } - var statisticTable *statistics.Table - if _, ok := tbl.(table.PartitionedTable); !ok || b.ctx.GetSessionVars().UseDynamicPartitionPrune() { - statisticTable = getStatsTable(b.ctx, tbl.Meta(), tbl.Meta().ID) - } - // extract the IndexMergeHint var indexMergeHints []indexHintInfo if hints := b.TableHints(); hints != nil { @@ -4101,7 +4096,7 @@ func (b *PlanBuilder) buildDataSource(ctx context.Context, tn *ast.TableName, as TableAsName: asName, table: tbl, tableInfo: tableInfo, - statisticTable: statisticTable, + physicalTableID: tableInfo.ID, astIndexHints: tn.IndexHints, IndexHints: b.TableHints().indexHintList, indexMergeHints: indexMergeHints, diff --git a/planner/core/rule_partition_processor.go b/planner/core/rule_partition_processor.go index bb57b0fac33da..1264a47ac97bc 100644 --- a/planner/core/rule_partition_processor.go +++ b/planner/core/rule_partition_processor.go @@ -1415,9 +1415,6 @@ func (s *partitionProcessor) makeUnionAllChildren(ds *DataSource, pi *model.Part // id as FromID. So we set the id of the newDataSource with the original one to // avoid traversing the whole plan tree to update the references. newDataSource.id = ds.id - if !ds.ctx.GetSessionVars().UseDynamicPartitionPrune() { - newDataSource.statisticTable = getStatsTable(ds.SCtx(), ds.table.Meta(), pi.Definitions[i].ID) - } err := s.resolveOptimizeHint(&newDataSource, pi.Definitions[i].Name) partitionNameSet.Insert(pi.Definitions[i].Name.L) if err != nil { diff --git a/planner/core/stats.go b/planner/core/stats.go index 2e7fd14a67b8d..d3f23427b2f40 100644 --- a/planner/core/stats.go +++ b/planner/core/stats.go @@ -226,7 +226,7 @@ func (ds *DataSource) initStats(colGroups [][]*expression.Column) { return } if ds.statisticTable == nil { - ds.statisticTable = getStatsTable(ds.ctx, ds.tableInfo, ds.table.Meta().ID) + ds.statisticTable = getStatsTable(ds.ctx, ds.tableInfo, ds.physicalTableID) } tableStats := &property.StatsInfo{ RowCount: float64(ds.statisticTable.Count),