Documentation ¶
Index ¶
- Constants
- Variables
- func BootstrapSession(store kv.Storage) (*domain.Domain, error)
- func Compile(ctx context.Context, sctx sessionctx.Context, stmtNode ast.StmtNode) (ast.Statement, error)
- func DialPumpClientWithRetry(binlogSocket string, maxRetries int, dialerOpt grpc.DialOption) (*grpc.ClientConn, error)
- func GetDomain(store kv.Storage) (*domain.Domain, error)
- func GetRows4Test(ctx context.Context, sctx sessionctx.Context, rs ast.RecordSet) ([]types.Row, error)
- func IsQuery(sql string) bool
- func NewStore(path string) (kv.Storage, error)
- func Parse(ctx sessionctx.Context, src string) ([]ast.StmtNode, error)
- func RegisterStore(name string, driver kv.Driver) error
- func SetCommitRetryLimit(limit uint)
- func SetSchemaLease(lease time.Duration)
- func SetStatsLease(lease time.Duration)
- type Session
- type StmtHistory
- type TxnState
- func (st *TxnState) Commit(ctx context.Context) error
- func (st *TxnState) Delete(k kv.Key) error
- func (st *TxnState) Get(k kv.Key) ([]byte, error)
- func (st *TxnState) Iter(k kv.Key, upperBound kv.Key) (kv.Iterator, error)
- func (st *TxnState) IterReverse(k kv.Key) (kv.Iterator, error)
- func (st *TxnState) Rollback() error
- func (st *TxnState) Set(k kv.Key, v []byte) error
- func (st *TxnState) String() string
- func (st *TxnState) Valid() bool
Constants ¶
const ( // CreateUserTable is the SQL statement creates User table in system db. CreateUserTable = `` /* 1365-byte string literal not displayed */ // CreateDBPrivTable is the SQL statement creates DB scope privilege table in system db. CreateDBPrivTable = `` /* 1127-byte string literal not displayed */ // CreateTablePrivTable is the SQL statement creates table scope privilege table in system db. CreateTablePrivTable = `` /* 379-byte string literal not displayed */ // CreateColumnPrivTable is the SQL statement creates column scope privilege table in system db. CreateColumnPrivTable = `` /* 299-byte string literal not displayed */ // CreateGloablVariablesTable is the SQL statement creates global variable table in system db. // TODO: MySQL puts GLOBAL_VARIABLES table in INFORMATION_SCHEMA db. // INFORMATION_SCHEMA is a virtual db in TiDB. So we put this table in system db. // Maybe we will put it back to INFORMATION_SCHEMA. CreateGloablVariablesTable = `` /* 147-byte string literal not displayed */ // CreateTiDBTable is the SQL statement creates a table in system db. // This table is a key-value struct contains some information used by TiDB. // Currently we only put bootstrapped in it which indicates if the system is already bootstrapped. CreateTiDBTable = `` /* 160-byte string literal not displayed */ // CreateHelpTopic is the SQL statement creates help_topic table in system db. // See: https://dev.mysql.com/doc/refman/5.5/en/system-database.html#system-database-help-tables CreateHelpTopic = `` /* 392-byte string literal not displayed */ // CreateStatsMetaTable stores the meta of table statistics. CreateStatsMetaTable = `` /* 270-byte string literal not displayed */ // CreateStatsColsTable stores the statistics of table columns. CreateStatsColsTable = `` /* 440-byte string literal not displayed */ // CreateStatsBucketsTable stores the histogram info for every table columns. CreateStatsBucketsTable = `` /* 349-byte string literal not displayed */ // CreateGCDeleteRangeTable stores schemas which can be deleted by DeleteRange. CreateGCDeleteRangeTable = `` /* 390-byte string literal not displayed */ // CreateGCDeleteRangeDoneTable stores schemas which are already deleted by DeleteRange. CreateGCDeleteRangeDoneTable = `` /* 400-byte string literal not displayed */ // CreateStatsFeedbackTable stores the feedback info which is used to update stats. CreateStatsFeedbackTable = `` /* 216-byte string literal not displayed */ )
Variables ¶
var ( // SchemaOutOfDateRetryInterval is the sleeping time when we fail to try. SchemaOutOfDateRetryInterval = int64(500 * time.Millisecond) // SchemaOutOfDateRetryTimes is upper bound of retry times when the schema is out of date. SchemaOutOfDateRetryTimes = int32(10) )
var SchemaChangedWithoutRetry bool
SchemaChangedWithoutRetry is used for testing.
Functions ¶
func BootstrapSession ¶
BootstrapSession runs the first time when the TiDB server start.
func Compile ¶
func Compile(ctx context.Context, sctx sessionctx.Context, stmtNode ast.StmtNode) (ast.Statement, error)
Compile is safe for concurrent use by multiple goroutines.
func DialPumpClientWithRetry ¶
func DialPumpClientWithRetry(binlogSocket string, maxRetries int, dialerOpt grpc.DialOption) (*grpc.ClientConn, error)
DialPumpClientWithRetry tries to dial to binlogSocket, if any error happens, it will try to re-dial, or return this error when timeout.
func GetRows4Test ¶
func GetRows4Test(ctx context.Context, sctx sessionctx.Context, rs ast.RecordSet) ([]types.Row, error)
GetRows4Test gets all the rows from a RecordSet, only used for test.
func NewStore ¶
NewStore creates a kv Storage with path.
The path must be a URL format 'engine://path?params' like the one for session.Open() but with the dbname cut off. Examples:
goleveldb://relative/path boltdb:///absolute/path
The engine should be registered before creating storage.
func RegisterStore ¶
RegisterStore registers a kv storage with unique name and its associated Driver.
func SetCommitRetryLimit ¶
func SetCommitRetryLimit(limit uint)
SetCommitRetryLimit setups the maximum number of retries when trying to recover from retryable errors. Retryable errors are generally refer to temporary errors that are expected to be reinstated by retry, including network interruption, transaction conflicts, and so on.
func SetSchemaLease ¶
SetSchemaLease changes the default schema lease time for DDL. This function is very dangerous, don't use it if you really know what you do. SetSchemaLease only affects not local storage after bootstrapped.
func SetStatsLease ¶
SetStatsLease changes the default stats lease time for loading stats info.
Types ¶
type Session ¶
type Session interface { sessionctx.Context Status() uint16 // Flag of current status, such as autocommit. LastInsertID() uint64 // LastInsertID is the last inserted auto_increment ID. AffectedRows() uint64 // Affected rows by latest executed stmt. Execute(context.Context, string) ([]ast.RecordSet, error) // Execute a sql statement. String() string // String is used to debug. CommitTxn(context.Context) error RollbackTxn(context.Context) error // PrepareStmt executes prepare statement in binary protocol. PrepareStmt(sql string) (stmtID uint32, paramCount int, fields []*ast.ResultField, err error) // ExecutePreparedStmt executes a prepared statement. ExecutePreparedStmt(ctx context.Context, stmtID uint32, param ...interface{}) (ast.RecordSet, error) DropPreparedStmt(stmtID uint32) error SetClientCapability(uint32) // Set client capability flags. SetConnectionID(uint64) SetTLSState(*tls.ConnectionState) SetCollation(coID int) error SetSessionManager(util.SessionManager) Close() Auth(user *auth.UserIdentity, auth []byte, salt []byte) bool ShowProcess() util.ProcessInfo // PrePareTxnCtx is exported for test. PrepareTxnCtx(context.Context) // FieldList returns fields list of a table. FieldList(tableName string) (fields []*ast.ResultField, err error) }
Session context
func CreateSession ¶
CreateSession creates a new session environment.
type StmtHistory ¶
type StmtHistory struct {
// contains filtered or unexported fields
}
StmtHistory holds all histories of statements in a txn.
func GetHistory ¶
func GetHistory(ctx sessionctx.Context) *StmtHistory
GetHistory get all stmtHistory in current txn. Exported only for test.
func (*StmtHistory) Add ¶
func (h *StmtHistory) Add(stmtID uint32, st ast.Statement, stmtCtx *stmtctx.StatementContext, params ...interface{})
Add appends a stmt to history list.
func (*StmtHistory) Count ¶
func (h *StmtHistory) Count() int
Count returns the count of the history.
type TxnState ¶
type TxnState struct { // States of a TxnState should be one of the followings: // Invalid: kv.Transaction == nil && txnFuture == nil // Pending: kv.Transaction == nil && txnFuture != nil // Valid: kv.Transaction != nil && txnFuture == nil kv.Transaction // contains filtered or unexported fields }
TxnState wraps kv.Transaction to provide a new kv.Transaction. 1. It holds all statement related modification in the buffer before flush to the txn, so if execute statement meets error, the txn won't be made dirty. 2. It's a lazy transaction, that means it's a txnFuture befort StartTS() is really need.
func (*TxnState) IterReverse ¶
IterReverse overrides the Transaction interface.