diff --git a/pkg/executor/executor.go b/pkg/executor/executor.go index 09f7b62626d7d..05fc8887765f9 100644 --- a/pkg/executor/executor.go +++ b/pkg/executor/executor.go @@ -2359,6 +2359,19 @@ func getCheckSum(ctx context.Context, se sessionctx.Context, sql string) ([]grou return checksums, nil } +func (w *checkIndexWorker) initSessCtx(se sessionctx.Context) (restore func()) { + sessVars := se.GetSessionVars() + originOptUseInvisibleIdx := sessVars.OptimizerUseInvisibleIndexes + originMemQuotaQuery := sessVars.MemQuotaQuery + + sessVars.OptimizerUseInvisibleIndexes = true + sessVars.MemQuotaQuery = w.sctx.GetSessionVars().MemQuotaQuery + return func() { + sessVars.OptimizerUseInvisibleIndexes = originOptUseInvisibleIdx + sessVars.MemQuotaQuery = originMemQuotaQuery + } +} + // HandleTask implements the Worker interface. func (w *checkIndexWorker) HandleTask(task checkIndexTask, _ func(workerpool.None)) { defer w.e.wg.Done() @@ -2376,9 +2389,9 @@ func (w *checkIndexWorker) HandleTask(task checkIndexTask, _ func(workerpool.Non trySaveErr(err) return } - se.GetSessionVars().OptimizerUseInvisibleIndexes = true + restoreCtx := w.initSessCtx(se) defer func() { - se.GetSessionVars().OptimizerUseInvisibleIndexes = false + restoreCtx() w.e.Base().ReleaseSysSession(ctx, se) }()