diff --git a/statistics/handle/ddl.go b/statistics/handle/ddl.go index 9be4b1744a..d8b8c893ca 100644 --- a/statistics/handle/ddl.go +++ b/statistics/handle/ddl.go @@ -19,12 +19,13 @@ import ( "github.com/pingcap/errors" "github.com/pingcap/tidb/ddl/util" - "github.com/pingcap/tidb/infoschema" "github.com/pingcap/tidb/parser/ast" "github.com/pingcap/tidb/parser/model" "github.com/pingcap/tidb/parser/mysql" "github.com/pingcap/tidb/parser/terror" + "github.com/pingcap/tidb/sessionctx" "github.com/pingcap/tidb/sessionctx/variable" + "github.com/pingcap/tidb/sessiontxn" "github.com/pingcap/tidb/types" "github.com/pingcap/tidb/util/sqlexec" ) @@ -75,7 +76,13 @@ var analyzeOptionDefault = map[ast.AnalyzeOptionType]uint64{ func (h *Handle) updateGlobalStats(tblInfo *model.TableInfo) error { // We need to merge the partition-level stats to global-stats when we drop table partition in dynamic mode. tableID := tblInfo.ID - is := h.mu.ctx.GetInfoSchema().(infoschema.InfoSchema) + se, err := h.pool.Get() + if err != nil { + return err + } + sctx := se.(sessionctx.Context) + is := sessiontxn.GetTxnManager(sctx).GetTxnInfoSchema() + h.pool.Put(se) globalStats, err := h.TableStatsFromStorage(tblInfo, tableID, true, 0) if err != nil { return err