planner: remove the unnecessary skip-plan-cache flag in StmtCtx (#40235)
This commit is contained in:
@ -1586,7 +1586,7 @@ func (c *compareFunctionClass) refineArgs(ctx sessionctx.Context, args []Express
|
||||
} else {
|
||||
return args
|
||||
}
|
||||
} else if ctx.GetSessionVars().StmtCtx.SkipPlanCache {
|
||||
} else if !ctx.GetSessionVars().StmtCtx.UseCache {
|
||||
// We should remove the mutable constant for correctness, because its value may be changed.
|
||||
RemoveMutableConst(ctx, args)
|
||||
}
|
||||
|
||||
@ -1241,7 +1241,7 @@ func ContainCorrelatedColumn(exprs []Expression) bool {
|
||||
// TODO: Do more careful check here.
|
||||
func MaybeOverOptimized4PlanCache(ctx sessionctx.Context, exprs []Expression) bool {
|
||||
// If we do not enable plan cache, all the optimization can work correctly.
|
||||
if !ctx.GetSessionVars().StmtCtx.UseCache || ctx.GetSessionVars().StmtCtx.SkipPlanCache {
|
||||
if !ctx.GetSessionVars().StmtCtx.UseCache {
|
||||
return false
|
||||
}
|
||||
return containMutableConst(ctx, exprs)
|
||||
|
||||
@ -1567,7 +1567,7 @@ func (er *expressionRewriter) inToExpression(lLen int, not bool, tp *types.Field
|
||||
} else {
|
||||
continue
|
||||
}
|
||||
} else if er.sctx.GetSessionVars().StmtCtx.SkipPlanCache {
|
||||
} else if !er.sctx.GetSessionVars().StmtCtx.UseCache {
|
||||
// We should remove the mutable constant for correctness, because its value may be changed.
|
||||
expression.RemoveMutableConst(er.sctx, []expression.Expression{c})
|
||||
}
|
||||
|
||||
@ -280,7 +280,7 @@ func generateNewPlan(ctx context.Context, sctx sessionctx.Context, isNonPrepared
|
||||
if containTableDual(p) && paramNum > 0 {
|
||||
stmtCtx.SetSkipPlanCache(errors.New("skip plan-cache: get a TableDual plan"))
|
||||
}
|
||||
if stmtAst.UseCache && !stmtCtx.SkipPlanCache && !ignorePlanCache {
|
||||
if stmtCtx.UseCache && !ignorePlanCache {
|
||||
// rebuild key to exclude kv.TiFlash when stmt is not read only
|
||||
if _, isolationReadContainTiFlash := sessVars.IsolationReadEngines[kv.TiFlash]; isolationReadContainTiFlash && !IsReadOnly(stmtAst.Stmt, sessVars) {
|
||||
delete(sessVars.IsolationReadEngines, kv.TiFlash)
|
||||
@ -640,7 +640,7 @@ func CheckPreparedPriv(sctx sessionctx.Context, stmt *PlanCacheStmt, is infosche
|
||||
// short paths for these executions, currently "point select" and "point update"
|
||||
func tryCachePointPlan(_ context.Context, sctx sessionctx.Context,
|
||||
stmt *PlanCacheStmt, _ infoschema.InfoSchema, p Plan) error {
|
||||
if !sctx.GetSessionVars().StmtCtx.UseCache || sctx.GetSessionVars().StmtCtx.SkipPlanCache {
|
||||
if !sctx.GetSessionVars().StmtCtx.UseCache {
|
||||
return nil
|
||||
}
|
||||
var (
|
||||
|
||||
@ -172,7 +172,6 @@ type StatementContext struct {
|
||||
InNullRejectCheck bool
|
||||
AllowInvalidDate bool
|
||||
IgnoreNoPartition bool
|
||||
SkipPlanCache bool
|
||||
IgnoreExplainIDSuffix bool
|
||||
SkipUTF8Check bool
|
||||
SkipASCIICheck bool
|
||||
@ -611,10 +610,10 @@ func (sc *StatementContext) SetPlanHint(hint string) {
|
||||
|
||||
// SetSkipPlanCache sets to skip the plan cache and records the reason.
|
||||
func (sc *StatementContext) SetSkipPlanCache(reason error) {
|
||||
if sc.UseCache && sc.SkipPlanCache {
|
||||
if !sc.UseCache {
|
||||
return // avoid unnecessary warnings
|
||||
}
|
||||
sc.SkipPlanCache = true
|
||||
sc.UseCache = false
|
||||
sc.AppendWarning(reason)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user