From 7908f697b4001df73e3aaa93cc69aeab2db8af85 Mon Sep 17 00:00:00 2001 From: tangenta Date: Tue, 18 Apr 2023 19:13:35 +0800 Subject: [PATCH] planner: skip stats warnings for temporary table during optimize (#43147) close pingcap/tidb#43142 --- planner/core/plan_stats.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/planner/core/plan_stats.go b/planner/core/plan_stats.go index eaf3cf3120..f4980a669d 100644 --- a/planner/core/plan_stats.go +++ b/planner/core/plan_stats.go @@ -178,11 +178,11 @@ func recordTableRuntimeStats(sctx sessionctx.Context, tbls map[int64]struct{}) { tblStats = map[int64]interface{}{} } for tblID := range tbls { - tblJSONStats, err := recordSingleTableRuntimeStats(sctx, tblID) + tblJSONStats, skip, err := recordSingleTableRuntimeStats(sctx, tblID) if err != nil { logutil.BgLogger().Warn("record table json stats failed", zap.Int64("tblID", tblID), zap.Error(err)) } - if tblJSONStats == nil { + if tblJSONStats == nil && !skip { logutil.BgLogger().Warn("record table json stats failed due to empty", zap.Int64("tblID", tblID)) } tblStats[tblID] = tblJSONStats @@ -190,15 +190,17 @@ func recordTableRuntimeStats(sctx sessionctx.Context, tbls map[int64]struct{}) { sctx.GetSessionVars().StmtCtx.TableStats = tblStats } -func recordSingleTableRuntimeStats(sctx sessionctx.Context, tblID int64) (*statistics.Table, error) { +func recordSingleTableRuntimeStats(sctx sessionctx.Context, tblID int64) (stats *statistics.Table, skip bool, err error) { dom := domain.GetDomain(sctx) - is := dom.InfoSchema() statsHandle := dom.StatsHandle() + is := sctx.GetDomainInfoSchema().(infoschema.InfoSchema) tbl, ok := is.TableByID(tblID) if !ok { - return nil, nil + return nil, false, nil } tableInfo := tbl.Meta() - stats := statsHandle.GetTableStats(tableInfo) - return stats, nil + stats = statsHandle.GetTableStats(tableInfo) + // Skip the warning if the table is a temporary table because the temporary table doesn't have stats. + skip = tableInfo.TempTableType != model.TempTableNone + return stats, skip, nil }