statistics: fix data race in the Handle.mu.ctx (#34716)
close pingcap/tidb#34715
This commit is contained in:
@ -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
|
||||
|
||||
Reference in New Issue
Block a user