diff --git a/executor/adapter.go b/executor/adapter.go index 8a27585cd09be..36f8096bfd721 100644 --- a/executor/adapter.go +++ b/executor/adapter.go @@ -267,7 +267,9 @@ func (a *ExecStmt) Exec(ctx context.Context) (_ sqlexec.RecordSet, err error) { maxExecutionTime := getMaxExecutionTime(sctx, a.StmtNode) // Update processinfo, ShowProcess() will use it. pi.SetProcessInfo(sql, time.Now(), cmd, maxExecutionTime) - a.Ctx.GetSessionVars().StmtCtx.StmtType = GetStmtLabel(a.StmtNode) + if a.Ctx.GetSessionVars().StmtCtx.StmtType == "" { + a.Ctx.GetSessionVars().StmtCtx.StmtType = GetStmtLabel(a.StmtNode) + } } isPessimistic := sctx.GetSessionVars().TxnCtx.IsPessimistic diff --git a/executor/prepared.go b/executor/prepared.go index 2857e579aa01d..fd98b47c33c03 100644 --- a/executor/prepared.go +++ b/executor/prepared.go @@ -168,6 +168,7 @@ func (e *PrepareExec) Next(ctx context.Context, req *chunk.Chunk) error { } prepared := &ast.Prepared{ Stmt: stmt, + StmtType: GetStmtLabel(stmt), Params: sorter.markers, SchemaVersion: e.is.SchemaMetaVersion(), } diff --git a/planner/core/common_plans.go b/planner/core/common_plans.go index 59de7d323942b..a04a0151f4105 100644 --- a/planner/core/common_plans.go +++ b/planner/core/common_plans.go @@ -179,6 +179,7 @@ type Execute struct { UsingVars []expression.Expression ExecID uint32 Stmt ast.StmtNode + StmtType string Plan Plan } @@ -192,6 +193,7 @@ func (e *Execute) OptimizePreparedPlan(ctx context.Context, sctx sessionctx.Cont if !ok { return errors.Trace(ErrStmtNotFound) } + vars.StmtCtx.StmtType = prepared.StmtType if len(prepared.Params) != len(e.UsingVars) { return errors.Trace(ErrWrongParamCount)