Documentation
¶
Index ¶
Constants ¶
const ( // QueryString is the key for original query string. QueryString basicCtxType = 1 // Initing is the key for indicating if the server is running bootstrap or upgrade job. Initing basicCtxType = 2 // LastExecuteDDL is the key for whether the session execute a ddl command last time. LastExecuteDDL basicCtxType = 3 )
Context keys.
Variables ¶
This section is empty.
Functions ¶
func ValidateSnapshotReadTS ¶
func ValidateSnapshotReadTS(ctx context.Context, store kv.Storage, readTS uint64, isStaleRead bool) error
ValidateSnapshotReadTS strictly validates that readTS does not exceed the PD timestamp. For read requests to the storage, the check can be implicitly performed when sending the RPC request. So this function is only needed when it's not proper to delay the check to when RPC requests are being sent (e.g., `BEGIN` statements that don't make reading operation immediately).
Types ¶
type Context ¶
type Context interface { SessionStatesHandler // SetDiskFullOpt set the disk full opt when tikv disk full happened. SetDiskFullOpt(level kvrpcpb.DiskFullOpt) // RollbackTxn rolls back the current transaction. RollbackTxn(ctx context.Context) // CommitTxn commits the current transaction. CommitTxn(ctx context.Context) error // Txn returns the current transaction which is created before executing a statement. // The returned kv.Transaction is not nil, but it maybe pending or invalid. // If the active parameter is true, call this function will wait for the pending txn // to become valid. Txn(active bool) (kv.Transaction, error) // GetClient gets a kv.Client. GetClient() kv.Client // GetMPPClient gets a kv.MPPClient. GetMPPClient() kv.MPPClient // SetValue saves a value associated with this context for key. SetValue(key fmt.Stringer, value interface{}) // Value returns the value associated with this context for key. Value(key fmt.Stringer) interface{} // ClearValue clears the value associated with this context for key. ClearValue(key fmt.Stringer) // Deprecated: the semantics of session.GetInfoSchema() is ambiguous // If you want to get the infoschema of the current transaction in SQL layer, use sessiontxn.GetTxnManager(ctx).GetTxnInfoSchema() // If you want to get the latest infoschema use `GetDomainInfoSchema` GetInfoSchema() InfoschemaMetaVersion // GetDomainInfoSchema returns the latest information schema in domain // Different with `domain.InfoSchema()`, the information schema returned by this method // includes the temporary table definitions stored in session GetDomainInfoSchema() InfoschemaMetaVersion GetSessionVars() *variable.SessionVars GetSessionManager() util.SessionManager // RefreshTxnCtx commits old transaction without retry, // and creates a new transaction. // now just for load data and batch insert. RefreshTxnCtx(context.Context) error // RefreshVars refreshes modified global variable to current session. // only used to daemon session like `statsHandle` to detect global variable change. RefreshVars(context.Context) error // GetStore returns the store of session. GetStore() kv.Storage // GetPlanCache returns the cache of the physical plan. // generalPlanCache indicates to return the general plan cache or the prepared plan cache. GetPlanCache(isGeneralPlanCache bool) PlanCache // StoreQueryFeedback stores the query feedback. StoreQueryFeedback(feedback interface{}) // UpdateColStatsUsage updates the column stats usage. // TODO: maybe we can use a method called GetSessionStatsCollector to replace both StoreQueryFeedback and UpdateColStatsUsage but we need to deal with import circle if we do so. UpdateColStatsUsage(predicateColumns []model.TableItemID) // HasDirtyContent checks whether there's dirty update on the given table. HasDirtyContent(tid int64) bool // StmtCommit flush all changes by the statement to the underlying transaction. StmtCommit() // StmtRollback provides statement level rollback. StmtRollback() // StmtGetMutation gets the binlog mutation for current statement. StmtGetMutation(int64) *binlog.TableMutation // IsDDLOwner checks whether this session is DDL owner. IsDDLOwner() bool // AddTableLock adds table lock to the session lock map. AddTableLock([]model.TableLockTpInfo) // ReleaseTableLocks releases table locks in the session lock map. ReleaseTableLocks(locks []model.TableLockTpInfo) // ReleaseTableLockByTableIDs releases table locks in the session lock map by table IDs. ReleaseTableLockByTableIDs(tableIDs []int64) // CheckTableLocked checks the table lock. CheckTableLocked(tblID int64) (bool, model.TableLockType) // GetAllTableLocks gets all table locks table id and db id hold by the session. GetAllTableLocks() []model.TableLockTpInfo // ReleaseAllTableLocks releases all table locks hold by the session. ReleaseAllTableLocks() // HasLockedTables uses to check whether this session locked any tables. HasLockedTables() bool // PrepareTSFuture uses to prepare timestamp by future. PrepareTSFuture(ctx context.Context, future oracle.Future, scope string) error // GetPreparedTxnFuture returns the TxnFuture if it is valid or pending. // It returns nil otherwise. GetPreparedTxnFuture() TxnFuture // StoreIndexUsage stores the index usage information. StoreIndexUsage(tblID int64, idxID int64, rowsSelected int64) // GetTxnWriteThroughputSLI returns the TxnWriteThroughputSLI. GetTxnWriteThroughputSLI() *sli.TxnWriteThroughputSLI // GetBuiltinFunctionUsage returns the BuiltinFunctionUsage of current Context, which is not thread safe. // Use primitive map type to prevent circular import. Should convert it to telemetry.BuiltinFunctionUsage before using. GetBuiltinFunctionUsage() map[string]uint32 // BuiltinFunctionUsageInc increase the counting of each builtin function usage // Notice that this is a thread safe function BuiltinFunctionUsageInc(scalarFuncSigName string) // GetStmtStats returns stmtstats.StatementStats owned by implementation. GetStmtStats() *stmtstats.StatementStats // ShowProcess returns ProcessInfo running in current Context ShowProcess() *util.ProcessInfo // GetAdvisoryLock acquires an advisory lock (aka GET_LOCK()). GetAdvisoryLock(string, int64) error // ReleaseAdvisoryLock releases an advisory lock (aka RELEASE_LOCK()). ReleaseAdvisoryLock(string) bool // ReleaseAllAdvisoryLocks releases all advisory locks that this session holds. ReleaseAllAdvisoryLocks() int // GetExtensions returns the `*extension.SessionExtensions` object GetExtensions() *extension.SessionExtensions // InSandBoxMode indicates that this Session is in sandbox mode // Ref about sandbox mode: https://dev.mysql.com/doc/refman/8.0/en/expired-password-handling.html InSandBoxMode() bool // EnableSandBoxMode enable the sandbox mode of this Session EnableSandBoxMode() // DisableSandBoxMode enable the sandbox mode of this Session DisableSandBoxMode() }
Context is an interface for transaction and executive args environment.
type InfoschemaMetaVersion ¶
type InfoschemaMetaVersion interface {
SchemaMetaVersion() int64
}
InfoschemaMetaVersion is a workaround. Due to circular dependency, can not return the complete interface. But SchemaMetaVersion is widely used for logging. So we give a convenience for that. FIXME: remove this interface
type PlanCache ¶
type PlanCache interface { Get(key kvcache.Key, paramTypes []*types.FieldType) (value kvcache.Value, ok bool) Put(key kvcache.Key, value kvcache.Value, paramTypes []*types.FieldType) Delete(key kvcache.Key) DeleteAll() Size() int SetCapacity(capacity uint) error Close() }
PlanCache is an interface for prepare and general plan cache
type SessionStatesHandler ¶
type SessionStatesHandler interface { // EncodeSessionStates encodes session states into a JSON. EncodeSessionStates(context.Context, Context, *sessionstates.SessionStates) error // DecodeSessionStates decodes a map into session states. DecodeSessionStates(context.Context, Context, *sessionstates.SessionStates) error }
SessionStatesHandler is an interface for encoding and decoding session states.
type SysProcTracker ¶
type SysProcTracker interface { Track(id uint64, proc Context) error UnTrack(id uint64) GetSysProcessList() map[uint64]*util.ProcessInfo KillSysProcess(id uint64) }
SysProcTracker is used to track background sys processes
type TxnFuture ¶
type TxnFuture interface { // Wait converts pending txn to valid Wait(ctx context.Context, sctx Context) (kv.Transaction, error) }
TxnFuture is an interface where implementations have a kv.Transaction field and after calling Wait of the TxnFuture, the kv.Transaction will become valid.