From 13a9c37e65249184a565dea79e83fd61d08eb471 Mon Sep 17 00:00:00 2001 From: Ti Chi Robot Date: Fri, 8 Dec 2023 09:29:51 +0800 Subject: [PATCH] executor: inherit memory quota from user session for admin check (#49260) (#49262) close pingcap/tidb#49258 --- pkg/executor/executor.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pkg/executor/executor.go b/pkg/executor/executor.go index 467a33ce46c32..1e138bfab43fa 100644 --- a/pkg/executor/executor.go +++ b/pkg/executor/executor.go @@ -2327,6 +2327,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() @@ -2344,9 +2357,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) }()