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 }