stmtctx

package
v0.0.0-...-503c688 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 8, 2023 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// WarnLevelError represents level "Error" for 'SHOW WARNINGS' syntax.
	WarnLevelError = "Error"
	// WarnLevelWarning represents level "Warning" for 'SHOW WARNINGS' syntax.
	WarnLevelWarning = "Warning"
	// WarnLevelNote represents level "Note" for 'SHOW WARNINGS' syntax.
	WarnLevelNote = "Note"
)
View Source
const (
	// ReferenceCountIsFrozen indicates the current StmtCtx is resetting, it'll refuse all the access from other sessions.
	ReferenceCountIsFrozen int32 = -1
	// ReferenceCountNoReference indicates the current StmtCtx is not accessed by other sessions.
	ReferenceCountNoReference int32 = 0
)

Variables

This section is empty.

Functions

func AllocateTaskID

func AllocateTaskID() uint64

AllocateTaskID allocates a new unique ID for a statement execution

Types

type CopTasksDetails

type CopTasksDetails struct {
	NumCopTasks int

	AvgProcessTime    time.Duration
	P90ProcessTime    time.Duration
	MaxProcessAddress string
	MaxProcessTime    time.Duration

	AvgWaitTime    time.Duration
	P90WaitTime    time.Duration
	MaxWaitAddress string
	MaxWaitTime    time.Duration

	MaxBackoffTime    map[string]time.Duration
	MaxBackoffAddress map[string]string
	AvgBackoffTime    map[string]time.Duration
	P90BackoffTime    map[string]time.Duration
	TotBackoffTime    map[string]time.Duration
	TotBackoffTimes   map[string]int
}

CopTasksDetails collects some useful information of cop-tasks during execution.

func (*CopTasksDetails) ToZapFields

func (d *CopTasksDetails) ToZapFields() (fields []zap.Field)

ToZapFields wraps the CopTasksDetails as zap.Fileds.

type PlanCacheType

type PlanCacheType int

PlanCacheType is the flag of plan cache

const (
	// DefaultNoCache no cache
	DefaultNoCache PlanCacheType = iota
	// SessionPrepared session prepared plan cache
	SessionPrepared
	// SessionNonPrepared session non-prepared plan cache
	SessionNonPrepared
)

type ReferenceCount

type ReferenceCount int32

ReferenceCount indicates the reference count of StmtCtx.

func (*ReferenceCount) Decrease

func (rf *ReferenceCount) Decrease()

Decrease decreases the reference count.

func (*ReferenceCount) TryFreeze

func (rf *ReferenceCount) TryFreeze() bool

TryFreeze tries to freeze the StmtCtx to frozen before resetting the old StmtCtx.

func (*ReferenceCount) TryIncrease

func (rf *ReferenceCount) TryIncrease() bool

TryIncrease tries to increase the reference count. There is a small chance that TryIncrease returns true while TryFreeze and UnFreeze are invoked successfully during the execution of TryIncrease.

func (*ReferenceCount) UnFreeze

func (rf *ReferenceCount) UnFreeze()

UnFreeze unfreeze the frozen StmtCtx thus the other session can access this StmtCtx.

type SQLWarn

type SQLWarn struct {
	Level string
	Err   error
}

SQLWarn relates a sql warning and it's level.

func (*SQLWarn) MarshalJSON

func (warn *SQLWarn) MarshalJSON() ([]byte, error)

MarshalJSON implements the Marshaler.MarshalJSON interface.

func (*SQLWarn) UnmarshalJSON

func (warn *SQLWarn) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the Unmarshaler.UnmarshalJSON interface.

type StatementContext

type StatementContext struct {
	// Set the following variables before execution
	StmtHints

	// IsDDLJobInQueue is used to mark whether the DDL job is put into the queue.
	// If IsDDLJobInQueue is true, it means the DDL job is in the queue of storage, and it can be handled by the DDL worker.
	IsDDLJobInQueue               bool
	DDLJobID                      int64
	InInsertStmt                  bool
	InUpdateStmt                  bool
	InDeleteStmt                  bool
	InSelectStmt                  bool
	InLoadDataStmt                bool
	InExplainStmt                 bool
	ExplainFormat                 string
	InCreateOrAlterStmt           bool
	InSetSessionStatesStmt        bool
	InPreparedPlanBuilding        bool
	IgnoreTruncate                atomic2.Bool
	IgnoreZeroInDate              bool
	NoZeroDate                    bool
	DupKeyAsWarning               bool
	BadNullAsWarning              bool
	DividedByZeroAsWarning        bool
	TruncateAsWarning             bool
	OverflowAsWarning             bool
	ErrAutoincReadFailedAsWarning bool
	InShowWarning                 bool
	UseCache                      bool
	CacheType                     PlanCacheType
	BatchCheck                    bool
	InNullRejectCheck             bool
	AllowInvalidDate              bool
	IgnoreNoPartition             bool
	IgnoreExplainIDSuffix         bool
	SkipUTF8Check                 bool
	SkipASCIICheck                bool
	SkipUTF8MB4Check              bool
	MultiSchemaInfo               *model.MultiSchemaInfo
	// If the select statement was like 'select * from t as of timestamp ...' or in a stale read transaction
	// or is affected by the tidb_read_staleness session variable, then the statement will be makred as isStaleness
	// in stmtCtx
	IsStaleness     bool
	InRestrictedSQL bool
	ViewDepth       int32

	// PrevAffectedRows is the affected-rows value(DDL is 0, DML is the number of affected rows).
	PrevAffectedRows int64
	// PrevLastInsertID is the last insert ID of previous statement.
	PrevLastInsertID uint64
	// LastInsertID is the auto-generated ID in the current statement.
	LastInsertID uint64
	// InsertID is the given insert ID of an auto_increment column.
	InsertID uint64

	BaseRowID int64
	MaxRowID  int64

	// Copied from SessionVars.TimeZone.
	TimeZone         *time.Location
	Priority         mysql.PriorityEnum
	NotFillCache     bool
	MemTracker       *memory.Tracker
	DiskTracker      *disk.Tracker
	IsTiFlash        atomic2.Bool
	RuntimeStatsColl *execdetails.RuntimeStatsColl
	TableIDs         []int64
	IndexNames       []string
	StmtType         string
	OriginalSQL      string

	// BindSQL used to construct the key for plan cache. It records the binding used by the stmt.
	// If the binding is not used by the stmt, the value is empty
	BindSQL string

	Tables    []TableEntry
	PointExec bool // for point update cached execution, Constant expression need to set "paramMarker"

	PessimisticLockWaited int32
	LockKeysDuration      int64
	LockKeysCount         int32
	LockTableIDs          map[int64]struct{} // table IDs need to be locked, empty for lock all tables
	TblInfo2UnionScan     map[*model.TableInfo]bool
	TaskID                uint64 // unique ID for an execution of a statement
	TaskMapBakTS          uint64 // counter for

	// Map to store all CTE storages of current SQL.
	// Will clean up at the end of the execution.
	CTEStorageMap interface{}

	// If the statement read from table cache, this flag is set.
	ReadFromTableCache bool

	// InVerboseExplain indicates the statement is "explain format='verbose' ...".
	InVerboseExplain bool

	// EnableOptimizeTrace indicates whether enable optimizer trace by 'trace plan statement'
	EnableOptimizeTrace bool
	// OptimizeTracer indicates the tracer for optimize
	OptimizeTracer *tracing.OptimizeTracer

	// EnableOptimizerCETrace indicate if cardinality estimation internal process needs to be traced.
	// CE Trace is currently a submodule of the optimizer trace and is controlled by a separated option.
	EnableOptimizerCETrace bool
	OptimizerCETrace       []*tracing.CETraceRecord

	EnableOptimizerDebugTrace bool
	OptimizerDebugTrace       interface{}

	// WaitLockLeaseTime is the duration of cached table read lease expiration time.
	WaitLockLeaseTime time.Duration

	// KvExecCounter is created from SessionVars.StmtStats to count the number of SQL
	// executions of the kv layer during the current execution of the statement.
	// Its life cycle is limited to this execution, and a new KvExecCounter is
	// always created during each statement execution.
	KvExecCounter *stmtstats.KvExecCounter

	// WeakConsistency is true when read consistency is weak and in a read statement and not in a transaction.
	WeakConsistency bool

	StatsLoad struct {
		// Timeout to wait for sync-load
		Timeout time.Duration
		// NeededItems stores the columns/indices whose stats are needed for planner.
		NeededItems []model.TableItemID
		// ResultCh to receive stats loading results
		ResultCh chan StatsLoadResult
		// LoadStartTime is to record the load start time to calculate latency
		LoadStartTime time.Time
	}

	// SysdateIsNow indicates whether sysdate() is an alias of now() in this statement
	SysdateIsNow bool

	// RCCheckTS indicates the current read-consistency read select statement will use `RCCheckTS` path.
	RCCheckTS bool

	// IsSQLRegistered uses to indicate whether the SQL has been registered for TopSQL.
	IsSQLRegistered atomic2.Bool
	// IsSQLAndPlanRegistered uses to indicate whether the SQL and plan has been registered for TopSQL.
	IsSQLAndPlanRegistered atomic2.Bool
	// IsReadOnly uses to indicate whether the SQL is read-only.
	IsReadOnly bool

	// IsSyncStatsFailed indicates whether any failure happened during sync stats
	IsSyncStatsFailed bool
	// UseDynamicPruneMode indicates whether use UseDynamicPruneMode in query stmt
	UseDynamicPruneMode bool
	// ColRefFromPlan mark the column ref used by assignment in update statement.
	ColRefFromUpdatePlan []int64

	// RangeFallback indicates that building complete ranges exceeds the memory limit so it falls back to less accurate ranges such as full range.
	RangeFallback bool

	// IsExplainAnalyzeDML is true if the statement is "explain analyze DML executors", before responding the explain
	// results to the client, the transaction should be committed first. See issue #37373 for more details.
	IsExplainAnalyzeDML bool

	// InHandleForeignKeyTrigger indicates currently are handling foreign key trigger.
	InHandleForeignKeyTrigger bool

	// ForeignKeyTriggerCtx is the contain information for foreign key cascade execution.
	ForeignKeyTriggerCtx struct {
		// The SavepointName is use to do rollback when handle foreign key cascade failed.
		SavepointName string
		HasFKCascades bool
	}

	// MPPQueryInfo stores some id and timestamp of current MPP query statement.
	MPPQueryInfo struct {
		QueryID            atomic2.Uint64
		QueryTS            atomic2.Uint64
		AllocatedMPPTaskID atomic2.Int64
	}

	// TableStats stores the visited runtime table stats by table id during query
	TableStats map[int64]interface{}

	// Check if TiFlash read engine is removed due to strict sql mode.
	TiFlashEngineRemovedDueToStrictSQLMode bool
	// contains filtered or unexported fields
}

StatementContext contains variables for a statement. It should be reset before executing a statement.

func (*StatementContext) AddAffectedRows

func (sc *StatementContext) AddAffectedRows(rows uint64)

AddAffectedRows adds affected rows.

func (*StatementContext) AddCopiedRows

func (sc *StatementContext) AddCopiedRows(rows uint64)

AddCopiedRows adds copied rows.

func (*StatementContext) AddDeletedRows

func (sc *StatementContext) AddDeletedRows(rows uint64)

AddDeletedRows adds record rows.

func (*StatementContext) AddFoundRows

func (sc *StatementContext) AddFoundRows(rows uint64)

AddFoundRows adds found rows.

func (*StatementContext) AddRecordRows

func (sc *StatementContext) AddRecordRows(rows uint64)

AddRecordRows adds record rows.

func (*StatementContext) AddTouchedRows

func (sc *StatementContext) AddTouchedRows(rows uint64)

AddTouchedRows adds touched rows.

func (*StatementContext) AddUpdatedRows

func (sc *StatementContext) AddUpdatedRows(rows uint64)

AddUpdatedRows adds updated rows.

func (*StatementContext) AffectedRows

func (sc *StatementContext) AffectedRows() uint64

AffectedRows gets affected rows.

func (*StatementContext) AppendError

func (sc *StatementContext) AppendError(warn error)

AppendError appends a warning with level 'Error'.

func (*StatementContext) AppendExtraError

func (sc *StatementContext) AppendExtraError(warn error)

AppendExtraError appends an extra warning with level 'Error'.

func (*StatementContext) AppendExtraNote

func (sc *StatementContext) AppendExtraNote(warn error)

AppendExtraNote appends an extra warning with level 'Note'.

func (*StatementContext) AppendExtraWarning

func (sc *StatementContext) AppendExtraWarning(warn error)

AppendExtraWarning appends an extra warning with level 'Warning'.

func (*StatementContext) AppendNote

func (sc *StatementContext) AppendNote(warn error)

AppendNote appends a warning with level 'Note'.

func (*StatementContext) AppendWarning

func (sc *StatementContext) AppendWarning(warn error)

AppendWarning appends a warning with level 'Warning'.

func (*StatementContext) AppendWarnings

func (sc *StatementContext) AppendWarnings(warns []SQLWarn)

AppendWarnings appends some warnings.

func (*StatementContext) ClearUseChunkAlloc

func (sc *StatementContext) ClearUseChunkAlloc()

ClearUseChunkAlloc clear useChunkAlloc status

func (*StatementContext) CopTasksDetails

func (sc *StatementContext) CopTasksDetails() *CopTasksDetails

CopTasksDetails returns some useful information of cop-tasks during execution.

func (*StatementContext) CopiedRows

func (sc *StatementContext) CopiedRows() uint64

CopiedRows is used to generate info message

func (*StatementContext) DeletedRows

func (sc *StatementContext) DeletedRows() uint64

DeletedRows is used to generate info message

func (*StatementContext) DetachMemDiskTracker

func (sc *StatementContext) DetachMemDiskTracker()

DetachMemDiskTracker detaches the memory and disk tracker from the sessionTracker.

func (*StatementContext) FoundRows

func (sc *StatementContext) FoundRows() uint64

FoundRows gets found rows.

func (*StatementContext) GetBinaryPlan

func (sc *StatementContext) GetBinaryPlan() string

GetBinaryPlan gets the binaryPlan field of stmtctx

func (*StatementContext) GetEncodedPlan

func (sc *StatementContext) GetEncodedPlan() string

GetEncodedPlan gets the encoded plan, it is used to avoid repeated encode.

func (*StatementContext) GetExecDetails

func (sc *StatementContext) GetExecDetails() execdetails.ExecDetails

GetExecDetails gets the execution details for the statement.

func (*StatementContext) GetExtraWarnings

func (sc *StatementContext) GetExtraWarnings() []SQLWarn

GetExtraWarnings gets extra warnings.

func (*StatementContext) GetFlatPlan

func (sc *StatementContext) GetFlatPlan() interface{}

GetFlatPlan gets the flatPlan field of stmtctx

func (*StatementContext) GetLockWaitStartTime

func (sc *StatementContext) GetLockWaitStartTime() time.Time

GetLockWaitStartTime returns the statement pessimistic lock wait start time

func (*StatementContext) GetMessage

func (sc *StatementContext) GetMessage() string

GetMessage returns the extra message of the last executed command, if there is no message, it returns empty string

func (*StatementContext) GetOrEvaluateStmtCache

func (sc *StatementContext) GetOrEvaluateStmtCache(key StmtCacheKey, valueEvaluator func() (interface{}, error)) (interface{}, error)

GetOrEvaluateStmtCache gets the cached value of the given key if it exists, otherwise calculate the value.

func (*StatementContext) GetOrStoreStmtCache

func (sc *StatementContext) GetOrStoreStmtCache(key StmtCacheKey, value interface{}) interface{}

GetOrStoreStmtCache gets the cached value of the given key if it exists, otherwise stores the value.

func (*StatementContext) GetPlan

func (sc *StatementContext) GetPlan() interface{}

GetPlan gets the plan field of stmtctx

func (*StatementContext) GetPlanDigest

func (sc *StatementContext) GetPlanDigest() (normalized string, planDigest *parser.Digest)

GetPlanDigest gets the normalized plan and plan digest.

func (*StatementContext) GetPlanHint

func (sc *StatementContext) GetPlanHint() (string, bool)

GetPlanHint gets the hint string generated from the plan.

func (*StatementContext) GetResourceGroupTagger

func (sc *StatementContext) GetResourceGroupTagger() tikvrpc.ResourceGroupTagger

GetResourceGroupTagger returns the implementation of tikvrpc.ResourceGroupTagger related to self.

func (*StatementContext) GetUseChunkAllocStatus

func (sc *StatementContext) GetUseChunkAllocStatus() bool

GetUseChunkAllocStatus returns useChunkAlloc status

func (*StatementContext) GetUsedStatsInfo

func (sc *StatementContext) GetUsedStatsInfo(initIfNil bool) map[int64]*UsedStatsInfoForTable

GetUsedStatsInfo returns the map for recording the used stats during query. If initIfNil is true, it will initialize it when this map is nil.

func (*StatementContext) GetWarnings

func (sc *StatementContext) GetWarnings() []SQLWarn

GetWarnings gets warnings.

func (*StatementContext) HandleOverflow

func (sc *StatementContext) HandleOverflow(err error, warnErr error) error

HandleOverflow treats ErrOverflow as warnings or returns the error based on the StmtCtx.OverflowAsWarning state.

func (*StatementContext) HandleTruncate

func (sc *StatementContext) HandleTruncate(err error) error

HandleTruncate ignores or returns the error based on the StatementContext state.

func (*StatementContext) InitDiskTracker

func (sc *StatementContext) InitDiskTracker(label int, bytesLimit int64)

InitDiskTracker initializes the sc.DiskTracker, use cache to avoid allocation.

func (*StatementContext) InitMemTracker

func (sc *StatementContext) InitMemTracker(label int, bytesLimit int64)

InitMemTracker initializes the sc.MemTracker, use cache to avoid allocation.

func (*StatementContext) InitSQLDigest

func (sc *StatementContext) InitSQLDigest(normalized string, digest *parser.Digest)

InitSQLDigest sets the normalized and digest for sql.

func (*StatementContext) MergeExecDetails

func (sc *StatementContext) MergeExecDetails(details *execdetails.ExecDetails, commitDetails *util.CommitDetails)

MergeExecDetails merges a single region execution details into self, used to print the information in slow query log.

func (*StatementContext) MergeLockKeysExecDetails

func (sc *StatementContext) MergeLockKeysExecDetails(lockKeys *util.LockKeysDetails)

MergeLockKeysExecDetails merges lock keys execution details into self.

func (*StatementContext) MergeScanDetail

func (sc *StatementContext) MergeScanDetail(scanDetail *util.ScanDetail)

MergeScanDetail merges scan details into self.

func (*StatementContext) MergeTimeDetail

func (sc *StatementContext) MergeTimeDetail(timeDetail util.TimeDetail)

MergeTimeDetail merges time details into self.

func (*StatementContext) NumErrorWarnings

func (sc *StatementContext) NumErrorWarnings() (ec uint16, wc int)

NumErrorWarnings gets warning and error count.

func (*StatementContext) PushDownFlags

func (sc *StatementContext) PushDownFlags() uint64

PushDownFlags converts StatementContext to tipb.SelectRequest.Flags.

func (*StatementContext) RecordRangeFallback

func (sc *StatementContext) RecordRangeFallback(rangeMaxSize int64)

RecordRangeFallback records range fallback.

func (*StatementContext) RecordRows

func (sc *StatementContext) RecordRows() uint64

RecordRows is used to generate info message

func (*StatementContext) RecordedStatsLoadStatusCnt

func (sc *StatementContext) RecordedStatsLoadStatusCnt() (cnt int)

RecordedStatsLoadStatusCnt returns the total number of recorded column/index stats status, which is not full loaded.

func (*StatementContext) ResetForRetry

func (sc *StatementContext) ResetForRetry()

ResetForRetry resets the changed states during execution.

func (*StatementContext) ResetInStmtCache

func (sc *StatementContext) ResetInStmtCache(key StmtCacheKey)

ResetInStmtCache resets the cache of given key.

func (*StatementContext) ResetSQLDigest

func (sc *StatementContext) ResetSQLDigest(s string)

ResetSQLDigest sets the normalized and digest for sql anyway, **DO NOT USE THIS UNLESS YOU KNOW WHAT YOU ARE DOING NOW**.

func (*StatementContext) ResetStmtCache

func (sc *StatementContext) ResetStmtCache()

ResetStmtCache resets all cached values.

func (*StatementContext) SQLDigest

func (sc *StatementContext) SQLDigest() (normalized string, sqlDigest *parser.Digest)

SQLDigest gets normalized and digest for provided sql. it will cache result after first calling.

func (*StatementContext) SetAffectedRows

func (sc *StatementContext) SetAffectedRows(rows uint64)

SetAffectedRows sets affected rows.

func (*StatementContext) SetBinaryPlan

func (sc *StatementContext) SetBinaryPlan(binaryPlan string)

SetBinaryPlan sets the binaryPlan field of stmtctx

func (*StatementContext) SetEncodedPlan

func (sc *StatementContext) SetEncodedPlan(encodedPlan string)

SetEncodedPlan sets the encoded plan, it is used to avoid repeated encode.

func (*StatementContext) SetExtraWarnings

func (sc *StatementContext) SetExtraWarnings(warns []SQLWarn)

SetExtraWarnings sets extra warnings.

func (*StatementContext) SetFlagsFromPBFlag

func (sc *StatementContext) SetFlagsFromPBFlag(flags uint64)

SetFlagsFromPBFlag set the flag of StatementContext from a `tipb.SelectRequest.Flags`.

func (*StatementContext) SetFlatPlan

func (sc *StatementContext) SetFlatPlan(flat interface{})

SetFlatPlan sets the flatPlan field of stmtctx

func (*StatementContext) SetMessage

func (sc *StatementContext) SetMessage(msg string)

SetMessage sets the info message generated by some commands

func (*StatementContext) SetPlan

func (sc *StatementContext) SetPlan(plan interface{})

SetPlan sets the plan field of stmtctx

func (*StatementContext) SetPlanDigest

func (sc *StatementContext) SetPlanDigest(normalized string, planDigest *parser.Digest)

SetPlanDigest sets the normalized plan and plan digest.

func (*StatementContext) SetPlanHint

func (sc *StatementContext) SetPlanHint(hint string)

SetPlanHint sets the hint for the plan.

func (*StatementContext) SetSkipPlanCache

func (sc *StatementContext) SetSkipPlanCache(reason error)

SetSkipPlanCache sets to skip the plan cache and records the reason.

func (*StatementContext) SetUseChunkAlloc

func (sc *StatementContext) SetUseChunkAlloc()

SetUseChunkAlloc set use chunk alloc status

func (*StatementContext) SetWarnings

func (sc *StatementContext) SetWarnings(warns []SQLWarn)

SetWarnings sets warnings.

func (*StatementContext) ShouldClipToZero

func (sc *StatementContext) ShouldClipToZero() bool

ShouldClipToZero indicates whether values less than 0 should be clipped to 0 for unsigned integer types. This is the case for `insert`, `update`, `alter table`, `create table` and `load data infile` statements, when not in strict SQL mode. see https://dev.mysql.com/doc/refman/5.7/en/out-of-range-and-overflow.html

func (*StatementContext) ShouldIgnoreOverflowError

func (sc *StatementContext) ShouldIgnoreOverflowError() bool

ShouldIgnoreOverflowError indicates whether we should ignore the error when type conversion overflows, so we can leave it for further processing like clipping values less than 0 to 0 for unsigned integer types.

func (*StatementContext) TouchedRows

func (sc *StatementContext) TouchedRows() uint64

TouchedRows is used to generate info message

func (*StatementContext) TruncateWarnings

func (sc *StatementContext) TruncateWarnings(start int) []SQLWarn

TruncateWarnings truncates warnings begin from start and returns the truncated warnings.

func (*StatementContext) UpdatedRows

func (sc *StatementContext) UpdatedRows() uint64

UpdatedRows is used to generate info message

func (*StatementContext) UseDynamicPartitionPrune

func (sc *StatementContext) UseDynamicPartitionPrune() bool

UseDynamicPartitionPrune indicates whether dynamic partition is used during the query

func (*StatementContext) WarningCount

func (sc *StatementContext) WarningCount() uint16

WarningCount gets warning count.

type StatsLoadResult

type StatsLoadResult struct {
	Item  model.TableItemID
	Error error
}

StatsLoadResult indicates result for StatsLoad

func (StatsLoadResult) ErrorMsg

func (r StatsLoadResult) ErrorMsg() string

ErrorMsg returns StatsLoadResult err msg

func (StatsLoadResult) HasError

func (r StatsLoadResult) HasError() bool

HasError returns whether result has error

type StmtCacheKey

type StmtCacheKey int

StmtCacheKey represents the key type in the StmtCache.

const (
	// StmtNowTsCacheKey is a variable for now/current_timestamp calculation/cache of one stmt.
	StmtNowTsCacheKey StmtCacheKey = iota
	// StmtSafeTSCacheKey is a variable for safeTS calculation/cache of one stmt.
	StmtSafeTSCacheKey
	// StmtExternalTSCacheKey is a variable for externalTS calculation/cache of one stmt.
	StmtExternalTSCacheKey
)

type StmtHints

type StmtHints struct {
	// Hint Information
	MemQuotaQuery           int64
	ApplyCacheCapacity      int64
	MaxExecutionTime        uint64
	ReplicaRead             byte
	AllowInSubqToJoinAndAgg bool
	NoIndexMergeHint        bool
	StraightJoinOrder       bool
	// EnableCascadesPlanner is use cascades planner for a single query only.
	EnableCascadesPlanner bool
	// ForceNthPlan indicates the PlanCounterTp number for finding physical plan.
	// -1 for disable.
	ForceNthPlan  int64
	ResourceGroup string

	// Hint flags
	HasAllowInSubqToJoinAndAggHint bool
	HasMemQuotaHint                bool
	HasReplicaReadHint             bool
	HasMaxExecutionTime            bool
	HasEnableCascadesPlannerHint   bool
	HasResourceGroup               bool
	SetVars                        map[string]string

	// the original table hints
	OriginalTableHints []*ast.TableOptimizerHint
}

StmtHints are SessionVars related sql hints.

func (*StmtHints) TaskMapNeedBackUp

func (sh *StmtHints) TaskMapNeedBackUp() bool

TaskMapNeedBackUp indicates that whether we need to back up taskMap during physical optimizing.

type TableEntry

type TableEntry struct {
	DB    string
	Table string
}

TableEntry presents table in db.

type UsedStatsInfoForTable

type UsedStatsInfoForTable struct {
	Name                  string
	TblInfo               *model.TableInfo
	Version               uint64
	RealtimeCount         int64
	ModifyCount           int64
	ColumnStatsLoadStatus map[int64]string
	IndexStatsLoadStatus  map[int64]string
}

UsedStatsInfoForTable records stats that are used during query and their information.

func (*UsedStatsInfoForTable) FormatForExplain

func (s *UsedStatsInfoForTable) FormatForExplain() string

FormatForExplain format the content in the format expected to be printed in the execution plan. case 1: if stats version is 0, print stats:pseudo. case 2: if stats version is not 0, and there are column/index stats that are not full loaded, print stats:partial, then print status of 3 column/index status at most. For the rest, only the count will be printed, in the format like (more: 1 onlyCmsEvicted, 2 onlyHistRemained).

func (*UsedStatsInfoForTable) WriteToSlowLog

func (s *UsedStatsInfoForTable) WriteToSlowLog(w io.Writer)

WriteToSlowLog format the content in the format expected to be printed to the slow log, then write to w. The format is table name partition name:version[realtime row count;modify count][index load status][column load status].

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL