From 2a45f2102786457edfcfc8ab8933e304b4e9b28d Mon Sep 17 00:00:00 2001 From: lilinghai Date: Mon, 20 Jun 2022 23:36:38 +0800 Subject: [PATCH] statistics: fix panic when using wrong globalStats.Indices key (#35424) close pingcap/tidb#35421 --- statistics/handle/ddl.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/statistics/handle/ddl.go b/statistics/handle/ddl.go index 1c356bdd14..497cb71a4a 100644 --- a/statistics/handle/ddl.go +++ b/statistics/handle/ddl.go @@ -129,12 +129,12 @@ func (h *Handle) updateGlobalStats(tblInfo *model.TableInfo) error { // Generate the new index global-stats globalIdxStatsTopNNum, globalIdxStatsBucketNum := 0, 0 - for idx := range tblInfo.Indices { - globalIdxStatsTopN := globalStats.Indices[int64(idx)].TopN + for _, idx := range tblInfo.Indices { + globalIdxStatsTopN := globalStats.Indices[idx.ID].TopN if globalIdxStatsTopN != nil && len(globalIdxStatsTopN.TopN) > globalIdxStatsTopNNum { globalIdxStatsTopNNum = len(globalIdxStatsTopN.TopN) } - globalIdxStats := globalStats.Indices[int64(idx)] + globalIdxStats := globalStats.Indices[idx.ID] if globalIdxStats != nil && len(globalIdxStats.Buckets) > globalIdxStatsBucketNum { globalIdxStatsBucketNum = len(globalIdxStats.Buckets) } @@ -144,7 +144,7 @@ func (h *Handle) updateGlobalStats(tblInfo *model.TableInfo) error { if globalIdxStatsBucketNum != 0 { opts[ast.AnalyzeOptNumBuckets] = uint64(globalIdxStatsBucketNum) } - newIndexGlobalStats, err := h.mergePartitionStats2GlobalStats(h.mu.ctx, opts, is, tblInfo, 1, []int64{int64(idx)}) + newIndexGlobalStats, err := h.mergePartitionStats2GlobalStats(h.mu.ctx, opts, is, tblInfo, 1, []int64{idx.ID}) if err != nil { return err }