frontend

package
v1.1.3 Latest Latest
Warning

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

Go to latest
Published: Apr 15, 2024 License: Apache-2.0 Imports: 101 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SaveQueryResult     = "save_query_result"
	QueryResultMaxsize  = "query_result_maxsize"
	QueryResultTimeout  = "query_result_timeout"
	LowerCaseTableNames = "lower_case_table_names"
)
View Source
const (
	DefaultReadBufferSize  int = 512
	DefaultWriteBufferSize int = 512
)
View Source
const (
	Utf8mb4CollationID uint8 = 45

	AuthNativePassword string = "mysql_native_password"

	//the length of the mysql protocol header
	HeaderLengthOfTheProtocol int = 4
	HeaderOffset              int = 0

	// MaxPayloadSize If the payload is larger than or equal to 2^24−1 bytes the length is set to 2^24−1 (ff ff ff)
	//and additional packets are sent with the rest of the payload until the payload of a packet
	//is less than 2^24−1 bytes.
	MaxPayloadSize uint32 = (1 << 24) - 1

	// DefaultMySQLState is the default state of the mySQL
	DefaultMySQLState string = "HY000"
)
View Source
const (
	CLIENT_LONG_PASSWORD                  uint32 = 0x00000001
	CLIENT_FOUND_ROWS                     uint32 = 0x00000002
	CLIENT_LONG_FLAG                      uint32 = 0x00000004
	CLIENT_CONNECT_WITH_DB                uint32 = 0x00000008
	CLIENT_NO_SCHEMA                      uint32 = 0x00000010
	CLIENT_COMPRESS                       uint32 = 0x00000020
	CLIENT_LOCAL_FILES                    uint32 = 0x00000080
	CLIENT_IGNORE_SPACE                   uint32 = 0x00000100
	CLIENT_PROTOCOL_41                    uint32 = 0x00000200
	CLIENT_INTERACTIVE                    uint32 = 0x00000400
	CLIENT_SSL                            uint32 = 0x00000800
	CLIENT_IGNORE_SIGPIPE                 uint32 = 0x00001000
	CLIENT_TRANSACTIONS                   uint32 = 0x00002000
	CLIENT_RESERVED                       uint32 = 0x00004000
	CLIENT_SECURE_CONNECTION              uint32 = 0x00008000
	CLIENT_MULTI_STATEMENTS               uint32 = 0x00010000
	CLIENT_MULTI_RESULTS                  uint32 = 0x00020000
	CLIENT_PS_MULTI_RESULTS               uint32 = 0x00040000
	CLIENT_PLUGIN_AUTH                    uint32 = 0x00080000
	CLIENT_CONNECT_ATTRS                  uint32 = 0x00100000
	CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA uint32 = 0x00200000
	CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS   uint32 = 0x00400000
	CLIENT_SESSION_TRACK                  uint32 = 0x00800000
	CLIENT_DEPRECATE_EOF                  uint32 = 0x01000000
)

mysql client capabilities

View Source
const (
	SERVER_STATUS_IN_TRANS             uint16 = 0x0001 // A transaction is currently active
	SERVER_STATUS_AUTOCOMMIT           uint16 = 0x0002 // Autocommit mode is set
	SERVER_MORE_RESULTS_EXISTS         uint16 = 0x0008 // More results exists (more packet follow)
	SERVER_STATUS_NO_GOOD_INDEX_USED   uint16 = 0x0010
	SERVER_STATUS_NO_INDEX_USED        uint16 = 0x0020
	SERVER_STATUS_CURSOR_EXISTS        uint16 = 0x0040 // When using COM_STMT_FETCH, indicate that current cursor still has result
	SERVER_STATUS_LAST_ROW_SENT        uint16 = 0x0080 // When using COM_STMT_FETCH, indicate that current cursor has finished to send results
	SERVER_STATUS_DB_DROPPED           uint16 = 0x0100 // Database has been dropped
	SERVER_STATUS_NO_BACKSLASH_ESCAPES uint16 = 0x0200 // Current escape mode is "no backslash escape"
	SERVER_STATUS_METADATA_CHANGED     uint16 = 0x0400 // A DDL change did have an impact on an existing PREPARE (an automatic reprepare has been executed)
	SERVER_QUERY_WAS_SLOW              uint16 = 0x0800
	SERVER_PS_OUT_PARAMS               uint16 = 0x1000 // This resultset contain stored procedure output parameter
	SERVER_STATUS_IN_TRANS_READONLY    uint16 = 0x2000 // Current transaction is a read-only transaction
	SERVER_SESSION_STATE_CHANGED       uint16 = 0x4000 // Session state change. see Session change type for more information
)

server status

View Source
const (
	OPTION_AUTOCOMMIT                     uint32 = 1 << 8
	OPTION_BIG_SELECTS                    uint32 = 1 << 9
	OPTION_LOG_OFF                        uint32 = 1 << 10
	OPTION_QUOTE_SHOW_CREATE              uint32 = 1 << 11
	TMP_TABLE_ALL_COLUMNS                 uint32 = 1 << 12
	OPTION_WARNINGS                       uint32 = 1 << 13
	OPTION_AUTO_IS_NULL                   uint32 = 1 << 14
	OPTION_FOUND_COMMENT                  uint32 = 1 << 15
	OPTION_SAFE_UPDATES                   uint32 = 1 << 16
	OPTION_BUFFER_RESULT                  uint32 = 1 << 17
	OPTION_BIN_LOG                        uint32 = 1 << 18
	OPTION_NOT_AUTOCOMMIT                 uint32 = 1 << 19
	OPTION_BEGIN                          uint32 = 1 << 20
	OPTION_TABLE_LOCK                     uint32 = 1 << 21
	OPTION_QUICK                          uint32 = 1 << 22
	OPTION_NO_CONST_TABLES                uint32 = 1 << 23
	OPTION_ATTACH_ABORT_TRANSACTION_ERROR uint32 = 1 << 24 //defined in mo
)

reference to sql/query_options.h in mysql server 8.0.23

View Source
const (
	// OkResponse OK message
	OkResponse = iota
	// ErrorResponse Error message
	ErrorResponse
	// EoFResponse EOF message
	EoFResponse
	// ResultResponse result message
	ResultResponse
	// LocalInfileRequest local infile message
	LocalInfileRequest
)

Response Categories

View Source
const (
	DefaultRpcBufferSize = 1 << 10
)
View Source
const DefaultTenantMoAdmin = "sys:internal:moadmin"
View Source
const MoDefaultErrorCount = 64

TODO: this variable should be configure by set variable

View Source
const PacketHeaderLength = 4

Variables

View Source
var Close = func(ep *ExportConfig) error {
	if !ep.UseFileService {
		ep.FileCnt++
		return ep.File.Close()
	} else {
		ep.FileCnt++
		err := ep.AsyncWriter.Close()
		if err != nil {
			return err
		}
		err = ep.AsyncGroup.Wait()
		if err != nil {
			return err
		}
		err = ep.AsyncReader.Close()
		if err != nil {
			return err
		}
		ep.AsyncReader = nil
		ep.AsyncWriter = nil
		ep.AsyncGroup = nil
		return err
	}
}
View Source
var Collations []*Collation = []*Collation{
	{"utf8_general_ci", "utf8", 33, "", "Yes", 1, "PAD SPACE"},
	{"binary", "binary", 63, "YES", "Yes", 1, "NO PAD"},
	{"utf8_unicode_ci", "utf8", 192, "", "Yes", 1, "PAD SPACE"},
	{"utf8_bin", "utf8", 83, "YES", "Yes", 1, "NO PAD"},
	{"utf8mb4_general_ci", "utf8mb4", 45, "", "Yes", 1, "PAD SPACE"},
	{"utf8mb4_unicode_ci", "utf8mb4", 224, "", "Yes", 1, "PAD SPACE"},
	{"utf8mb4_bin", "utf8mb4", 46, "YES", "Yes", 1, "NO PAD"},
	{"utf8mb4_0900_bin", "utf8mb4", 309, "", "Yes", 1, "NO PAD"},
	{"utf8mb4_0900_ai_ci", "utf8mb4", 255, "", "Yes", 0, "NO PAD"},
	{"utf8mb4_de_pb_0900_ai_ci", "utf8mb4", 256, "", "Yes", 0, "NO PAD"},
	{"utf8mb4_is_0900_ai_ci", "utf8mb4", 257, "", "Yes", 0, "NO PAD"},
	{"utf8mb4_lv_0900_ai_ci", "utf8mb4", 258, "", "Yes", 0, "NO PAD"},
}
View Source
var ConnIDAllocKey = "____server_conn_id"

ConnIDAllocKey is used get connection ID from HAKeeper.

DefaultCapability means default capabilities of the server

View Source
var DefaultClientConnStatus = SERVER_STATUS_AUTOCOMMIT

DefaultClientConnStatus default server status

View Source
var EndOfLine = func(ep *ExportConfig) (int, error) {
	if ep.UseFileService {
		n, err := ep.AsyncWriter.Write(ep.LineBuffer.Bytes())
		if err != nil {
			err2 := ep.AsyncWriter.CloseWithError(err)
			if err2 != nil {
				return 0, err2
			}
		}
		ep.LineBuffer.Reset()
		return n, err
	}
	return 0, nil
}
View Source
var Flush = func(ep *ExportConfig) error {
	if !ep.UseFileService {
		return ep.Writer.Flush()
	}
	return nil
}
View Source
var GSysVariables = &GlobalSystemVariables{
	sysVars: make(map[string]interface{}),
}

the set of variables

View Source
var GetComputationWrapper = func(db string, input *UserInput, user string, eng engine.Engine, proc *process.Process, ses *Session) ([]ComputationWrapper, error) {
	var cw []ComputationWrapper = nil
	if cached := ses.getCachedPlan(input.getSql()); cached != nil {
		modify := false
		for i, stmt := range cached.stmts {
			tcw := InitTxnComputationWrapper(ses, stmt, proc)
			tcw.plan = cached.plans[i]
			if tcw.plan == nil {
				modify = true
				break
			}
			if checkModify(tcw.plan, proc, ses) {
				modify = true
				break
			}
			cw = append(cw, tcw)
		}
		if modify {
			cw = nil
		} else {
			return cw, nil
		}
	}

	var stmts []tree.Statement = nil
	var cmdFieldStmt *InternalCmdFieldList
	var err error

	if input.getStmt() != nil {
		stmts = append(stmts, input.getStmt())
	} else if isCmdFieldListSql(input.getSql()) {
		cmdFieldStmt, err = parseCmdFieldList(proc.Ctx, input.getSql())
		if err != nil {
			return nil, err
		}
		stmts = append(stmts, cmdFieldStmt)
	} else {
		var v interface{}
		v, err = ses.GetGlobalVar("lower_case_table_names")
		if err != nil {
			v = int64(1)
		}
		stmts, err = parsers.Parse(proc.Ctx, dialect.MYSQL, input.getSql(), v.(int64))
		if err != nil {
			return nil, err
		}
	}

	for _, stmt := range stmts {
		cw = append(cw, InitTxnComputationWrapper(ses, stmt, proc))
	}
	return cw, nil
}

GetComputationWrapper gets the execs from the computation engine

View Source
var GetStmtExecList = func(db, sql, user string, eng engine.Engine, proc *process.Process, ses *Session) ([]StmtExecutor, error) {
	var stmtExecList []StmtExecutor = nil
	var stmtExec StmtExecutor
	var stmts []tree.Statement = nil
	var cmdFieldStmt *InternalCmdFieldList
	var err error

	appendStmtExec := func(se StmtExecutor) {
		stmtExecList = append(stmtExecList, se)
	}

	if isCmdFieldListSql(sql) {
		cmdFieldStmt, err = parseCmdFieldList(proc.Ctx, sql)
		if err != nil {
			return nil, err
		}
		stmts = append(stmts, cmdFieldStmt)
	} else {
		v, err := ses.GetGlobalVar("lower_case_table_names")
		if err != nil {
			return nil, err
		}
		stmts, err = parsers.Parse(proc.Ctx, dialect.MYSQL, sql, v.(int64))
		if err != nil {
			return nil, err
		}
	}

	for _, stmt := range stmts {
		cw := InitTxnComputationWrapper(ses, stmt, proc)
		base := &baseStmtExecutor{}
		base.ComputationWrapper = cw
		stmtExec, err = getStmtExecutor(ses, proc, base, stmt)
		if err != nil {
			return nil, err
		}
		appendStmtExec(stmtExec)
	}
	return stmtExecList, nil
}
View Source
var MaxPrepareNumberInOneSession int = 100000
View Source
var NewBackgroundHandler = func(
	reqCtx context.Context,
	upstream *Session,
	mp *mpool.MPool,
	pu *config.ParameterUnit) BackgroundExec {
	bh := &BackgroundHandler{
		mce: NewMysqlCmdExecutor(),
		ses: NewBackgroundSession(reqCtx, upstream, mp, pu, GSysVariables, false),
	}
	return bh
}

NewBackgroundHandler with first two parameters. connCtx as the parent of the txnCtx

View Source
var OpenFile = os.OpenFile
View Source
var PathExists = func(path string) (bool, bool, error) {
	fi, err := os.Stat(path)
	if err == nil {
		return true, !fi.IsDir(), nil
	}
	if os.IsNotExist(err) {
		return false, false, err
	}

	return false, false, err
}

path exists in the system return: true/false - exists or not. true/false - file or directory error

View Source
var Read = func(ep *ExportConfig) (int, error) {
	if !ep.UseFileService {
		ep.OutputStr = make([]byte, ep.LineSize)
		return ep.File.Read(ep.OutputStr)
	} else {
		ep.OutputStr = make([]byte, ep.LineSize)
		copy(ep.OutputStr, ep.LineBuffer.Bytes())
		ep.LineBuffer.Reset()
		return int(ep.LineSize), nil
	}
}
View Source
var RecordParseErrorStatement = func(ctx context.Context, ses *Session, proc *process.Process, envBegin time.Time,
	envStmt []string, sqlTypes []string, err error) (context.Context, error) {
	retErr := moerr.NewParseError(ctx, err.Error())

	sqlType := ""
	if len(sqlTypes) > 0 {
		sqlType = sqlTypes[0]
	} else {
		sqlType = constant.ExternSql
	}
	if len(envStmt) > 0 {
		for i, sql := range envStmt {
			if i < len(sqlTypes) {
				sqlType = sqlTypes[i]
			}
			ctx, err = RecordStatement(ctx, ses, proc, nil, envBegin, sql, sqlType, true)
			if err != nil {
				return nil, err
			}
			motrace.EndStatement(ctx, retErr, 0, 0, 0)
		}
	} else {
		ctx, err = RecordStatement(ctx, ses, proc, nil, envBegin, "", sqlType, true)
		if err != nil {
			return nil, err
		}
		motrace.EndStatement(ctx, retErr, 0, 0, 0)
	}

	tenant := ses.GetTenantInfo()
	if tenant == nil {
		tenant, _ = GetTenantInfo(ctx, "internal")
	}
	incStatementErrorsCounter(tenant.GetTenant(), nil)
	return ctx, nil
}
View Source
var RecordStatement = func(ctx context.Context, ses *Session, proc *process.Process, cw ComputationWrapper, envBegin time.Time, envStmt, sqlType string, useEnv bool) (context.Context, error) {
	// set StatementID
	var stmID uuid.UUID
	var statement tree.Statement = nil
	var text string
	if cw != nil {
		copy(stmID[:], cw.GetUUID())
		statement = cw.GetAst()

		ses.ast = statement

		execSql := makeExecuteSql(ses, statement)
		if len(execSql) != 0 {
			bb := strings.Builder{}
			bb.WriteString(envStmt)
			bb.WriteString(" // ")
			bb.WriteString(execSql)
			text = SubStringFromBegin(bb.String(), int(ses.GetParameterUnit().SV.LengthOfQueryPrinted))
		} else {
			text = SubStringFromBegin(envStmt, int(ses.GetParameterUnit().SV.LengthOfQueryPrinted))
		}
	} else {
		stmID, _ = uuid.NewV7()
		text = SubStringFromBegin(envStmt, int(ses.GetParameterUnit().SV.LengthOfQueryPrinted))
	}
	ses.SetStmtId(stmID)
	ses.SetStmtType(getStatementType(statement).GetStatementType())
	ses.SetQueryType(getStatementType(statement).GetQueryType())
	ses.SetSqlSourceType(sqlType)
	ses.SetSqlOfStmt(text)

	if sqlType != constant.InternalSql {
		ses.pushQueryId(types.Uuid(stmID).ToString())
	}

	if !motrace.GetTracerProvider().IsEnable() {
		return ctx, nil
	}
	tenant := ses.GetTenantInfo()
	if tenant == nil {
		tenant, _ = GetTenantInfo(ctx, "internal")
	}
	stm := motrace.NewStatementInfo()
	// set TransactionID
	var txn TxnOperator
	var err error
	if handler := ses.GetTxnHandler(); handler.IsValidTxnOperator() {
		_, txn, err = handler.GetTxnOperator()
		if err != nil {
			return nil, err
		}
		copy(stm.TransactionID[:], txn.Txn().ID)
	}

	copy(stm.SessionID[:], ses.GetUUID())
	requestAt := envBegin
	if !useEnv {
		requestAt = time.Now()
	}

	copy(stm.StatementID[:], stmID[:])

	stm.Account = tenant.GetTenant()
	stm.RoleId = proc.SessionInfo.RoleId
	stm.User = tenant.GetUser()
	stm.Host = ses.protocol.Peer()
	stm.Database = ses.GetDatabaseName()
	stm.Statement = text
	stm.StatementFingerprint = ""
	stm.StatementTag = ""
	stm.SqlSourceType = sqlType
	stm.RequestAt = requestAt
	stm.StatementType = getStatementType(statement).GetStatementType()
	stm.QueryType = getStatementType(statement).GetQueryType()
	stm.ConnType = transferSessionConnType2StatisticConnType(ses.connType)
	if sqlType == constant.InternalSql && isCmdFieldListSql(envStmt) {

		stm.User = ""
	}
	if sqlType != constant.InternalSql {
		ses.SetTStmt(stm)
	}
	if !stm.IsZeroTxnID() {
		stm.Report(ctx)
	}
	if stm.IsMoLogger() && stm.StatementType == "Load" && len(stm.Statement) > 128 {
		stm.Statement = envStmt[:40] + "..." + envStmt[len(envStmt)-45:]
	}

	return motrace.ContextWithStatement(ctx, stm), nil
}
View Source
var RecordStatementTxnID = func(ctx context.Context, ses *Session) error {
	var txn TxnOperator
	var err error
	if stm := motrace.StatementFromContext(ctx); ses != nil && stm != nil && stm.IsZeroTxnID() {
		if handler := ses.GetTxnHandler(); handler.IsValidTxnOperator() {

			_, txn, err = handler.GetTxnOperator()
			if err != nil {
				return err
			}
			stm.SetTxnID(txn.Txn().ID)
			ses.SetTxnId(txn.Txn().ID)
		}
		stm.Report(ctx)
	}

	if upSes := ses.upstream; upSes != nil && upSes.tStmt != nil && upSes.tStmt.IsZeroTxnID() {

		if handler := ses.GetTxnHandler(); handler.IsValidTxnOperator() {
			_, txn, err = handler.GetTxnOperator()
			if err != nil {
				return err
			}

			if stmt := upSes.tStmt; stmt.NeedSkipTxn() {

				stmt.SetSkipTxn(false)
				stmt.SetSkipTxnId(txn.Txn().ID)
			} else if txnId := txn.Txn().ID; !stmt.SkipTxnId(txnId) {
				upSes.tStmt.SetTxnID(txnId)
			}
		}
	}
	return nil
}

RecordStatementTxnID record txnID after TxnBegin or Compile(autocommit=1)

View Source
var Seek = func(ep *ExportConfig) (int64, error) {
	if !ep.UseFileService {
		return ep.File.Seek(int64(ep.CurFileSize-ep.LineSize), io.SeekStart)
	}
	return 0, nil
}
View Source
var Truncate = func(ep *ExportConfig) error {
	if !ep.UseFileService {
		return ep.File.Truncate(int64(ep.CurFileSize - ep.LineSize))
	} else {
		return nil
	}
}
View Source
var Write = func(ep *ExportConfig, output []byte) (int, error) {
	if !ep.UseFileService {
		return ep.Writer.Write(output)
	} else {
		return ep.LineBuffer.Write(output)
	}
}

Functions

func ConstructTLSConfig added in v0.8.0

func ConstructTLSConfig(ctx context.Context, caFile, certFile, keyFile string) (*tls.Config, error)

ConstructTLSConfig creates the TLS config.

func Execute added in v0.6.0

func Execute(ctx context.Context, ses *Session, proc *process.Process, stmtExec StmtExecutor, beginInstant time.Time, envStmt, sqlType string, useEnv bool) error

Execute runs the statement executor

func GetAccountAdminRole added in v1.0.0

func GetAccountAdminRole() string

func GetAccountAdminRoleId added in v1.0.0

func GetAccountAdminRoleId() uint32

func GetAdminUserId added in v1.0.0

func GetAdminUserId() uint32

func GetDefaultRole added in v0.6.0

func GetDefaultRole() string

func GetDefaultRoleId added in v1.0.0

func GetDefaultRoleId() uint32

func GetDefaultTenant added in v0.6.0

func GetDefaultTenant() string

func GetExplainColumns added in v0.5.0

func GetExplainColumns(ctx context.Context, explainColName string) ([]interface{}, error)

func GetPassWord added in v0.8.0

func GetPassWord(pwd string) ([]byte, error)

GetPassWord is used to get hash byte password SHA1(SHA1(password))

func GetPrepareStmtID added in v0.6.0

func GetPrepareStmtID(ctx context.Context, name string) (int, error)

func GetRoutineId

func GetRoutineId() uint64

GetRoutineId gets the routine id

func GetSimpleExprValue added in v0.5.0

func GetSimpleExprValue(e tree.Expr, ses *Session) (interface{}, error)

only support single value and unary minus

func GetSysTenantId added in v1.0.0

func GetSysTenantId() uint32

func GetUserRoot added in v1.0.0

func GetUserRoot() string

func GetUserRootId added in v1.0.0

func GetUserRootId() uint32

func GetVersionCompatibility added in v0.8.0

func GetVersionCompatibility(ctx context.Context, ses *Session, dbName string) (ret string, err error)

func HashPassWord added in v0.8.0

func HashPassWord(pwd string) string

HashPassWord is uesed to hash password *SHA1(SHA1(password))

func HashPassWordWithByte added in v0.8.0

func HashPassWordWithByte(pwd []byte) string

func HashSha1 added in v0.8.0

func HashSha1(toHash []byte) []byte

HashSha1 is used to calcute a sha1 hash SHA1()

func InitGeneralTenant added in v0.6.0

func InitGeneralTenant(ctx context.Context, ses *Session, ca *tree.CreateAccount) (err error)

InitGeneralTenant initializes the application level tenant

func InitGlobalSystemVariables added in v0.5.0

func InitGlobalSystemVariables(gsv *GlobalSystemVariables)

initialize system variables from definition

func InitProcedure added in v0.8.0

func InitProcedure(ctx context.Context, ses *Session, tenant *TenantInfo, cp *tree.CreateProcedure) (err error)

func InitRole added in v0.6.0

func InitRole(ctx context.Context, ses *Session, tenant *TenantInfo, cr *tree.CreateRole) (err error)

InitRole creates the new role

func InitServerVersion

func InitServerVersion(v string)

func InitSysTenant added in v0.6.0

func InitSysTenant(ctx context.Context, aicm *defines.AutoIncrCacheManager) (err error)

InitSysTenant initializes the tenant SYS before any tenants and accepting any requests during the system is booting.

func InitUser added in v0.6.0

func InitUser(ctx context.Context, ses *Session, tenant *TenantInfo, cu *tree.CreateUser) (err error)

InitUser creates new user for the tenant

func IsAdministrativeStatement added in v0.6.0

func IsAdministrativeStatement(stmt tree.Statement) bool

IsAdministrativeStatement checks the statement is the administrative statement.

func IsCreateDropDatabase added in v0.8.0

func IsCreateDropDatabase(stmt tree.Statement) bool

func IsCreateDropSequence added in v0.8.0

func IsCreateDropSequence(stmt tree.Statement) bool

func IsDDL added in v0.6.0

func IsDDL(stmt tree.Statement) bool

IsDDL checks the statement is the DDL statement.

func IsDropStatement added in v0.6.0

func IsDropStatement(stmt tree.Statement) bool

IsDropStatement checks the statement is the drop statement.

func IsParameterModificationStatement added in v0.6.0

func IsParameterModificationStatement(stmt tree.Statement) bool

IsParameterModificationStatement checks the statement is the statement of parameter modification statement.

func IsPrepareStatement added in v0.6.0

func IsPrepareStatement(stmt tree.Statement) bool

IsPrepareStatement checks the statement is the Prepare statement.

func MakeDebugInfo

func MakeDebugInfo(data []byte, bytesCount int, bytesPerLine int) string

MakeDebugInfo prints bytes in multi-lines.

func Max

func Max(a int, b int) int

func Min

func Min(a int, b int) int

func NeedToBeCommittedInActiveTransaction added in v0.6.0

func NeedToBeCommittedInActiveTransaction(stmt tree.Statement) bool

NeedToBeCommittedInActiveTransaction checks the statement that need to be committed in an active transaction.

Currently, it includes the drop statement, the administration statement ,

the parameter modification statement.

func NewGraph added in v0.6.0

func NewGraph() *graph

func NewInternalExecutor added in v0.6.0

func NewInternalExecutor(pu *config.ParameterUnit, aicm *defines.AutoIncrCacheManager, isLimit bool) *internalExecutor

func NewJsonPlanHandler added in v0.8.0

func NewJsonPlanHandler(ctx context.Context, stmt *motrace.StatementInfo, plan *plan2.Plan) *jsonPlanHandler

func NewMarshalPlanHandler added in v0.8.0

func NewMarshalPlanHandler(ctx context.Context, stmt *motrace.StatementInfo, plan *plan2.Plan) *marshalPlanHandler

func NewOutputQueue added in v0.6.0

func NewOutputQueue(ctx context.Context, ses *Session, columnCount int, mrs *MysqlResultSet, ep *ExportConfig) *outputQueue

func NewSqlCodec

func NewSqlCodec() codec.Codec

func ParseLabel added in v1.0.0

func ParseLabel(labelStr string) (map[string]string, error)

ParseLabel parses the label string. The labels are separated by ",", key and value are separated by "=".

func RewriteError added in v1.0.0

func RewriteError(err error, username string) (uint16, string, string)

RewriteError rewrites the error info

func SetSpecialUser added in v0.6.0

func SetSpecialUser(username string, password []byte)

SetSpecialUser saves the user for initialization !!!NOTE: userName must not contain Colon ':'

func SubStringFromBegin

func SubStringFromBegin(str string, length int) string

length: -1, complete string. 0, empty string >0 , length of characters at the header of the string.

func WildcardMatch added in v0.5.0

func WildcardMatch(pattern, target string) bool

WildcardMatch implements wildcard pattern match algorithm. pattern and target are ascii characters TODO: add \_ and \%

Types

type AccountRoutineManager added in v0.8.0

type AccountRoutineManager struct {
	// contains filtered or unexported fields
}

func (*AccountRoutineManager) AlterRoutineStatue added in v1.0.0

func (ar *AccountRoutineManager) AlterRoutineStatue(tenantID int64, status string)

func (*AccountRoutineManager) EnKillQueue added in v1.0.0

func (ar *AccountRoutineManager) EnKillQueue(tenantID int64, version uint64)

type AlterAccountExecutor added in v0.6.0

type AlterAccountExecutor struct {
	// contains filtered or unexported fields
}

type AlterPublicationExecutor added in v0.8.0

type AlterPublicationExecutor struct {
	// contains filtered or unexported fields
}

func (*AlterPublicationExecutor) ExecuteImpl added in v0.8.0

func (ape *AlterPublicationExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type AlterSequenceExecutor added in v1.0.0

type AlterSequenceExecutor struct {
	// contains filtered or unexported fields
}

type AlterTableExecutor added in v0.8.0

type AlterTableExecutor struct {
	// contains filtered or unexported fields
}

type AlterUserExecutor added in v0.6.0

type AlterUserExecutor struct {
	// contains filtered or unexported fields
}

type AlterViewExecutor added in v0.7.0

type AlterViewExecutor struct {
	// contains filtered or unexported fields
}

type AnalyzeStmtExecutor added in v0.6.0

type AnalyzeStmtExecutor struct {
	// contains filtered or unexported fields
}

func (*AnalyzeStmtExecutor) ExecuteImpl added in v0.6.0

func (ase *AnalyzeStmtExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

func (AnalyzeStmtExecutor) ResponseAfterExec added in v0.6.0

func (rsse AnalyzeStmtExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (AnalyzeStmtExecutor) ResponseBeforeExec added in v0.6.0

func (rsse AnalyzeStmtExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type BackgroundExec added in v0.6.0

type BackgroundExec interface {
	Close()
	Exec(context.Context, string) error
	ExecStmt(context.Context, tree.Statement) error
	GetExecResultSet() []interface{}
	ClearExecResultSet()

	GetExecResultBatches() []*batch.Batch
	ClearExecResultBatches()
}

BackgroundExec executes the sql in background session without network output.

type BackgroundHandler added in v0.6.0

type BackgroundHandler struct {
	// contains filtered or unexported fields
}

func (*BackgroundHandler) ClearExecResultBatches added in v0.8.0

func (bh *BackgroundHandler) ClearExecResultBatches()

func (*BackgroundHandler) ClearExecResultSet added in v0.6.0

func (bh *BackgroundHandler) ClearExecResultSet()

func (*BackgroundHandler) Close added in v0.6.0

func (bh *BackgroundHandler) Close()

func (*BackgroundHandler) Exec added in v0.6.0

func (bh *BackgroundHandler) Exec(ctx context.Context, sql string) error

func (*BackgroundHandler) ExecStmt added in v0.8.0

func (bh *BackgroundHandler) ExecStmt(ctx context.Context, stmt tree.Statement) error

func (*BackgroundHandler) GetExecResultBatches added in v0.8.0

func (bh *BackgroundHandler) GetExecResultBatches() []*batch.Batch

func (*BackgroundHandler) GetExecResultSet added in v0.6.0

func (bh *BackgroundHandler) GetExecResultSet() []interface{}

type BackgroundSession added in v0.6.0

type BackgroundSession struct {
	*Session
	// contains filtered or unexported fields
}

BackgroundSession executing the sql in background

func NewBackgroundSession added in v0.6.0

func NewBackgroundSession(reqCtx context.Context, upstream *Session, mp *mpool.MPool, PU *config.ParameterUnit, gSysVars *GlobalSystemVariables, shareTxn bool) *BackgroundSession

NewBackgroundSession generates an independent background session executing the sql

func (*BackgroundSession) Close added in v0.6.0

func (bgs *BackgroundSession) Close()

type BaseService added in v1.0.0

type BaseService interface {
	// ID returns the ID of the service.
	ID() string
	// SQLAddress returns the SQL listen address of the service.
	SQLAddress() string
	// SessionMgr returns the session manager instance of the service.
	SessionMgr() *queryservice.SessionManager
}

BaseService is an interface which indicates that the instance is the base CN service and should implements the following methods.

type BatchByte added in v0.8.0

type BatchByte struct {
	// contains filtered or unexported fields
}

type BeginTxnExecutor added in v0.6.0

type BeginTxnExecutor struct {
	// contains filtered or unexported fields
}

func (*BeginTxnExecutor) ExecuteImpl added in v0.6.0

func (bte *BeginTxnExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type CloseExportData

type CloseExportData struct {
	// contains filtered or unexported fields
}

func NewCloseExportData

func NewCloseExportData() *CloseExportData

func (*CloseExportData) Close

func (cld *CloseExportData) Close()

func (*CloseExportData) Open

func (cld *CloseExportData) Open()

type CloseFlag

type CloseFlag struct {
	// contains filtered or unexported fields
}

func (*CloseFlag) Close

func (cf *CloseFlag) Close()

func (*CloseFlag) IsClosed

func (cf *CloseFlag) IsClosed() bool

func (*CloseFlag) IsOpened

func (cf *CloseFlag) IsOpened() bool

func (*CloseFlag) Open

func (cf *CloseFlag) Open()

type CmdExecutor

type CmdExecutor interface {
	SetSession(*Session)

	GetSession() *Session

	// ExecRequest execute the request and get the response
	ExecRequest(context.Context, *Session, *Request) (*Response, error)

	//SetCancelFunc saves a cancel function for active request.
	SetCancelFunc(context.CancelFunc)

	// CancelRequest cancels the active request
	CancelRequest()

	Close()
}

CmdExecutor handle the command from the client

type CmdExecutorImpl

type CmdExecutorImpl struct {
	CmdExecutor
}

type Collation added in v1.1.1

type Collation struct {
	// contains filtered or unexported fields
}

type Column

type Column interface {
	SetName(string)
	Name() string

	//data type: MYSQL_TYPE_XXXX
	SetColumnType(defines.MysqlType)
	ColumnType() defines.MysqlType

	//the max count of spaces
	SetLength(uint32)
	Length() uint32

	//unsigned / signed for digital types
	//default: signed
	//true: signed; false: unsigned
	SetSigned(bool)
	IsSigned() bool
}

type ColumnImpl

type ColumnImpl struct {
	// contains filtered or unexported fields
}

func (*ColumnImpl) ColumnType

func (ci *ColumnImpl) ColumnType() defines.MysqlType

func (*ColumnImpl) Length

func (ci *ColumnImpl) Length() uint32

func (*ColumnImpl) Name

func (ci *ColumnImpl) Name() string

func (*ColumnImpl) SetColumnType

func (ci *ColumnImpl) SetColumnType(colType defines.MysqlType)

func (*ColumnImpl) SetLength

func (ci *ColumnImpl) SetLength(l uint32)

func (*ColumnImpl) SetName

func (ci *ColumnImpl) SetName(name string)

type ColumnInfo added in v0.5.0

type ColumnInfo interface {
	GetName() string

	GetType() types.T
}

type CommandType added in v0.6.0

type CommandType uint8
const (
	COM_SLEEP               CommandType = 0x00
	COM_QUIT                CommandType = 0x01
	COM_INIT_DB             CommandType = 0x02
	COM_QUERY               CommandType = 0x03
	COM_FIELD_LIST          CommandType = 0x04
	COM_CREATE_DB           CommandType = 0x05
	COM_DROP_DB             CommandType = 0x06
	COM_REFRESH             CommandType = 0x07
	COM_SHUTDOWN            CommandType = 0x08
	COM_STATISTICS          CommandType = 0x09
	COM_PROCESS_INFO        CommandType = 0x0a
	COM_CONNECT             CommandType = 0x0b
	COM_PROCESS_KILL        CommandType = 0x0c
	COM_DEBUG               CommandType = 0x0d
	COM_PING                CommandType = 0x0e
	COM_TIME                CommandType = 0x0f
	COM_DELAYED_INSERT      CommandType = 0x10
	COM_CHANGE_USER         CommandType = 0x11
	COM_STMT_PREPARE        CommandType = 0x16
	COM_STMT_EXECUTE        CommandType = 0x17
	COM_STMT_SEND_LONG_DATA CommandType = 0x18
	COM_STMT_CLOSE          CommandType = 0x19
	COM_STMT_RESET          CommandType = 0x1a
	COM_SET_OPTION          CommandType = 0x1b
	COM_STMT_FETCH          CommandType = 0x1c
	COM_DAEMON              CommandType = 0x1d
	COM_RESET_CONNECTION    CommandType = 0x1f
)

text protocol in mysql client protocol iteration command

func (CommandType) String added in v0.6.0

func (ct CommandType) String() string

type CommitTxnExecutor added in v0.6.0

type CommitTxnExecutor struct {
	// contains filtered or unexported fields
}

func (*CommitTxnExecutor) ExecuteImpl added in v0.6.0

func (cte *CommitTxnExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type ComputationRunner added in v0.5.0

type ComputationRunner interface {
	Run(ts uint64) (*util.RunResult, error)
}

type ComputationWrapper

type ComputationWrapper interface {
	ComputationRunner
	GetAst() tree.Statement

	GetProcess() *process.Process

	GetColumns() ([]interface{}, error)

	Compile(requestCtx context.Context, u interface{}, fill func(interface{}, *batch.Batch) error) (interface{}, error)

	GetUUID() []byte

	RecordExecPlan(ctx context.Context) error

	GetLoadTag() bool

	GetServerStatus() uint16
}

ComputationWrapper is the wrapper of the computation

type ConnType added in v1.0.0

type ConnType int
const (
	ConnTypeUnset    ConnType = 0
	ConnTypeInternal ConnType = 1
	ConnTypeExternal ConnType = 2
)

type CreateAccountExecutor added in v0.6.0

type CreateAccountExecutor struct {
	// contains filtered or unexported fields
}

func (*CreateAccountExecutor) ExecuteImpl added in v0.6.0

func (cae *CreateAccountExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type CreateDatabaseExecutor added in v0.6.0

type CreateDatabaseExecutor struct {
	// contains filtered or unexported fields
}

type CreateIndexExecutor added in v0.6.0

type CreateIndexExecutor struct {
	// contains filtered or unexported fields
}

type CreatePublicationExecutor added in v0.8.0

type CreatePublicationExecutor struct {
	// contains filtered or unexported fields
}

func (*CreatePublicationExecutor) ExecuteImpl added in v0.8.0

func (cpe *CreatePublicationExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type CreateRoleExecutor added in v0.6.0

type CreateRoleExecutor struct {
	// contains filtered or unexported fields
}

func (*CreateRoleExecutor) ExecuteImpl added in v0.6.0

func (cre *CreateRoleExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type CreateSequenceExecutor added in v0.8.0

type CreateSequenceExecutor struct {
	// contains filtered or unexported fields
}

type CreateTableExecutor added in v0.6.0

type CreateTableExecutor struct {
	// contains filtered or unexported fields
}

type CreateUserExecutor added in v0.6.0

type CreateUserExecutor struct {
	// contains filtered or unexported fields
}

func (*CreateUserExecutor) ExecuteImpl added in v0.6.0

func (cue *CreateUserExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type CreateViewExecutor added in v0.6.0

type CreateViewExecutor struct {
	// contains filtered or unexported fields
}

type DeallocateExecutor added in v0.6.0

type DeallocateExecutor struct {
	// contains filtered or unexported fields
}

TODO: DeallocateExecutor has no response like QUIT COMMAND ?

func (*DeallocateExecutor) ExecuteImpl added in v0.6.0

func (de *DeallocateExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

func (*DeallocateExecutor) ResponseAfterExec added in v0.6.0

func (de *DeallocateExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

type DeleteExecutor added in v0.6.0

type DeleteExecutor struct {
	// contains filtered or unexported fields
}

func (*DeleteExecutor) Setup added in v0.6.0

func (de *DeleteExecutor) Setup(ctx context.Context, ses *Session) error

type DropAccountExecutor added in v0.6.0

type DropAccountExecutor struct {
	// contains filtered or unexported fields
}

func (*DropAccountExecutor) ExecuteImpl added in v0.6.0

func (dae *DropAccountExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type DropDatabaseExecutor added in v0.6.0

type DropDatabaseExecutor struct {
	// contains filtered or unexported fields
}

func (*DropDatabaseExecutor) ExecuteImpl added in v0.6.0

func (dde *DropDatabaseExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type DropIndexExecutor added in v0.6.0

type DropIndexExecutor struct {
	// contains filtered or unexported fields
}

type DropPublicationExecutor added in v0.8.0

type DropPublicationExecutor struct {
	// contains filtered or unexported fields
}

func (*DropPublicationExecutor) ExecuteImpl added in v0.8.0

func (dpe *DropPublicationExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type DropRoleExecutor added in v0.6.0

type DropRoleExecutor struct {
	// contains filtered or unexported fields
}

func (*DropRoleExecutor) ExecuteImpl added in v0.6.0

func (dre *DropRoleExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type DropSequenceExecutor added in v0.8.0

type DropSequenceExecutor struct {
	// contains filtered or unexported fields
}

type DropTableExecutor added in v0.6.0

type DropTableExecutor struct {
	// contains filtered or unexported fields
}

type DropUserExecutor added in v0.6.0

type DropUserExecutor struct {
	// contains filtered or unexported fields
}

func (*DropUserExecutor) ExecuteImpl added in v0.6.0

func (due *DropUserExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type DropViewExecutor added in v0.6.0

type DropViewExecutor struct {
	// contains filtered or unexported fields
}

type ExecResult added in v0.6.0

type ExecResult interface {
	GetRowCount() uint64

	GetString(ctx context.Context, rindex, cindex uint64) (string, error)

	GetUint64(ctx context.Context, rindex, cindex uint64) (uint64, error)

	GetInt64(ctx context.Context, rindex, cindex uint64) (int64, error)
}

ExecResult is the result interface of the execution

type ExecuteExecutor added in v0.6.0

type ExecuteExecutor struct {
	// contains filtered or unexported fields
}

func (*ExecuteExecutor) Close added in v0.6.0

func (ee *ExecuteExecutor) Close(ctx context.Context, ses *Session) error

func (*ExecuteExecutor) CommitOrRollbackTxn added in v0.6.0

func (ee *ExecuteExecutor) CommitOrRollbackTxn(ctx context.Context, ses *Session) error

func (*ExecuteExecutor) Compile added in v0.6.0

func (ee *ExecuteExecutor) Compile(requestCtx context.Context, u interface{}, fill func(interface{}, *batch.Batch) error) (interface{}, error)

func (*ExecuteExecutor) ExecuteImpl added in v0.6.0

func (ee *ExecuteExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

func (ExecuteExecutor) GetAffectedRows added in v1.0.0

func (bse ExecuteExecutor) GetAffectedRows() uint64

func (ExecuteExecutor) GetStatus added in v0.6.0

func (bse ExecuteExecutor) GetStatus() stmtExecStatus

func (*ExecuteExecutor) ResponseAfterExec added in v0.6.0

func (ee *ExecuteExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (*ExecuteExecutor) ResponseBeforeExec added in v0.6.0

func (ee *ExecuteExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

func (ExecuteExecutor) SetStatus added in v0.6.0

func (bse ExecuteExecutor) SetStatus(err error)

func (ExecuteExecutor) Setup added in v0.6.0

func (bse ExecuteExecutor) Setup(ctx context.Context, ses *Session) error

func (ExecuteExecutor) VerifyPrivilege added in v0.6.0

func (bse ExecuteExecutor) VerifyPrivilege(ctx context.Context, ses *Session) error

func (ExecuteExecutor) VerifyTxn added in v0.6.0

func (bse ExecuteExecutor) VerifyTxn(ctx context.Context, ses *Session) error

type ExplainAnalyzeExecutor added in v0.6.0

type ExplainAnalyzeExecutor struct {
	// contains filtered or unexported fields
}

func (*ExplainAnalyzeExecutor) ExecuteImpl added in v0.6.0

func (eae *ExplainAnalyzeExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

func (ExplainAnalyzeExecutor) ResponseAfterExec added in v0.6.0

func (rsse ExplainAnalyzeExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ExplainAnalyzeExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ExplainAnalyzeExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

func (*ExplainAnalyzeExecutor) Setup added in v0.6.0

func (eae *ExplainAnalyzeExecutor) Setup(ctx context.Context, ses *Session) error

type ExplainForExecutor added in v0.6.0

type ExplainForExecutor struct {
	// contains filtered or unexported fields
}

func (ExplainForExecutor) ResponseAfterExec added in v0.6.0

func (rsse ExplainForExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ExplainForExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ExplainForExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ExplainStmtExecutor added in v0.6.0

type ExplainStmtExecutor struct {
	// contains filtered or unexported fields
}

func (*ExplainStmtExecutor) ExecuteImpl added in v0.6.0

func (ese *ExplainStmtExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

func (ExplainStmtExecutor) ResponseAfterExec added in v0.6.0

func (rsse ExplainStmtExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ExplainStmtExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ExplainStmtExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ExportConfig added in v1.0.0

type ExportConfig struct {

	// file handler
	File *os.File
	// bufio.writer
	Writer *bufio.Writer
	// curFileSize
	CurFileSize uint64
	Rows        uint64
	FileCnt     uint
	ColumnFlag  []bool
	Symbol      [][]byte
	// default flush size
	DefaultBufSize int64
	OutputStr      []byte
	LineSize       uint64

	//file service & buffer for the line
	UseFileService bool

	FileService fileservice.FileService
	LineBuffer  *bytes.Buffer
	Ctx         context.Context
	AsyncReader *io.PipeReader
	AsyncWriter *io.PipeWriter
	AsyncGroup  *errgroup.Group
	// contains filtered or unexported fields
}

type FakeProtocol added in v0.6.0

type FakeProtocol struct {
	// contains filtered or unexported fields
}

FakeProtocol works for the background transaction that does not use the network protocol.

func (*FakeProtocol) Authenticate added in v0.8.0

func (fp *FakeProtocol) Authenticate(ctx context.Context) error

func (*FakeProtocol) CalculateOutTrafficBytes added in v1.0.0

func (fp *FakeProtocol) CalculateOutTrafficBytes(reset bool) (int64, int64)

func (*FakeProtocol) ConnectionID added in v0.6.0

func (fp *FakeProtocol) ConnectionID() uint32

func (*FakeProtocol) GetCapability added in v0.7.0

func (fp *FakeProtocol) GetCapability() uint32

func (*FakeProtocol) GetConnectAttrs added in v0.8.0

func (fp *FakeProtocol) GetConnectAttrs() map[string]string

func (*FakeProtocol) GetDatabaseName added in v0.6.0

func (fp *FakeProtocol) GetDatabaseName() string

func (*FakeProtocol) GetDebugString added in v0.8.0

func (fp *FakeProtocol) GetDebugString() string

func (*FakeProtocol) GetRequest added in v0.6.0

func (fp *FakeProtocol) GetRequest(payload []byte) *Request

func (*FakeProtocol) GetSequenceId added in v0.7.0

func (fp *FakeProtocol) GetSequenceId() uint8

func (*FakeProtocol) GetStats added in v0.6.0

func (fp *FakeProtocol) GetStats() string

func (*FakeProtocol) GetTcpConnection added in v0.7.0

func (fp *FakeProtocol) GetTcpConnection() goetty.IOSession

func (*FakeProtocol) GetUserName added in v0.6.0

func (fp *FakeProtocol) GetUserName() string

func (*FakeProtocol) HandleHandshake added in v0.7.0

func (fp *FakeProtocol) HandleHandshake(ctx context.Context, payload []byte) (bool, error)

func (*FakeProtocol) IsEstablished added in v0.6.0

func (fp *FakeProtocol) IsEstablished() bool

func (*FakeProtocol) IsTlsEstablished added in v0.7.0

func (fp *FakeProtocol) IsTlsEstablished() bool

func (*FakeProtocol) ParseExecuteData added in v0.6.0

func (fp *FakeProtocol) ParseExecuteData(ctx context.Context, proc *process.Process, stmt *PrepareStmt, data []byte, pos int) error

func (*FakeProtocol) ParseSendLongData added in v0.8.0

func (fp *FakeProtocol) ParseSendLongData(ctx context.Context, proc *process.Process, stmt *PrepareStmt, data []byte, pos int) error

func (*FakeProtocol) Peer added in v0.6.0

func (fp *FakeProtocol) Peer() string

func (*FakeProtocol) Quit added in v0.6.0

func (fp *FakeProtocol) Quit()

func (*FakeProtocol) ResetStatistics added in v0.7.0

func (fp *FakeProtocol) ResetStatistics()

func (*FakeProtocol) SendColumnCountPacket added in v0.6.0

func (fp *FakeProtocol) SendColumnCountPacket(count uint64) error

func (*FakeProtocol) SendColumnDefinitionPacket added in v0.6.0

func (fp *FakeProtocol) SendColumnDefinitionPacket(ctx context.Context, column Column, cmd int) error

func (*FakeProtocol) SendEOFPacketIf added in v0.6.0

func (fp *FakeProtocol) SendEOFPacketIf(warnings uint16, status uint16) error

func (*FakeProtocol) SendPrepareResponse added in v0.6.0

func (fp *FakeProtocol) SendPrepareResponse(ctx context.Context, stmt *PrepareStmt) error

func (*FakeProtocol) SendResponse added in v0.6.0

func (fp *FakeProtocol) SendResponse(ctx context.Context, resp *Response) error

func (*FakeProtocol) SendResultSetTextBatchRow added in v0.6.0

func (fp *FakeProtocol) SendResultSetTextBatchRow(mrs *MysqlResultSet, cnt uint64) error

func (*FakeProtocol) SendResultSetTextBatchRowSpeedup added in v0.6.0

func (fp *FakeProtocol) SendResultSetTextBatchRowSpeedup(mrs *MysqlResultSet, cnt uint64) error

func (*FakeProtocol) SetCapability added in v1.1.1

func (fp *FakeProtocol) SetCapability(uint32)

func (*FakeProtocol) SetDatabaseName added in v0.6.0

func (fp *FakeProtocol) SetDatabaseName(s string)

func (*FakeProtocol) SetEstablished added in v0.6.0

func (fp *FakeProtocol) SetEstablished()

func (*FakeProtocol) SetSequenceID added in v0.7.0

func (fp *FakeProtocol) SetSequenceID(value uint8)

func (*FakeProtocol) SetTlsEstablished added in v0.7.0

func (fp *FakeProtocol) SetTlsEstablished()

func (*FakeProtocol) SetUserName added in v0.6.0

func (fp *FakeProtocol) SetUserName(s string)

type GlobalSystemVariables added in v0.5.0

type GlobalSystemVariables struct {
	// contains filtered or unexported fields
}

func (*GlobalSystemVariables) AddSysVariables added in v0.5.0

func (gsv *GlobalSystemVariables) AddSysVariables(vars []SystemVariable)

add custom system variables

func (*GlobalSystemVariables) CopySysVarsToSession added in v0.5.0

func (gsv *GlobalSystemVariables) CopySysVarsToSession() map[string]interface{}

copy global system variable to session

func (*GlobalSystemVariables) GetDefinitionOfSysVar added in v0.5.0

func (gsv *GlobalSystemVariables) GetDefinitionOfSysVar(name string) (SystemVariable, bool)

get the definition of the system variable

func (*GlobalSystemVariables) GetGlobalSysVar added in v0.5.0

func (gsv *GlobalSystemVariables) GetGlobalSysVar(name string) (SystemVariable, interface{}, bool)

get system variable definition ,value. return false, if there is no such variable.

func (*GlobalSystemVariables) SetGlobalSysVar added in v0.5.0

func (gsv *GlobalSystemVariables) SetGlobalSysVar(ctx context.Context, name string, value interface{}) error

set global dynamic variable by SET GLOBAL

func (*GlobalSystemVariables) SetValues added in v0.5.0

func (gsv *GlobalSystemVariables) SetValues(ctx context.Context, values map[string]interface{}) error

set values to system variables

type GrantExecutor added in v0.6.0

type GrantExecutor struct {
	// contains filtered or unexported fields
}

func (*GrantExecutor) ExecuteImpl added in v0.6.0

func (ge *GrantExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type IOPackage

type IOPackage interface {
	// IsLittleEndian the byte order
	//true - littleEndian; false - littleEndian
	IsLittleEndian() bool

	// WriteUint8 writes an uint8 into the buffer at the position
	// returns position + 1
	WriteUint8([]byte, int, uint8) int

	// WriteUint16 writes an uint16 into the buffer at the position
	// returns position + 2
	WriteUint16([]byte, int, uint16) int

	// WriteUint32 writes an uint32 into the buffer at the position
	// returns position + 4
	WriteUint32([]byte, int, uint32) int

	// WriteUint64 writes an uint64 into the buffer at the position
	// returns position + 8
	WriteUint64([]byte, int, uint64) int

	// AppendUint8 appends an uint8 to the buffer
	// returns the buffer
	AppendUint8([]byte, uint8) []byte

	// AppendUint16 appends an uint16 to the buffer
	// returns the buffer
	AppendUint16([]byte, uint16) []byte

	// AppendUint32 appends an uint32 to the buffer
	// returns the buffer
	AppendUint32([]byte, uint32) []byte

	// AppendUint64 appends an uint64 to the buffer
	// returns the buffer
	AppendUint64([]byte, uint64) []byte

	// ReadUint8 reads an uint8 from the buffer at the position
	// returns uint8 value ; pos+1 ; true - decoded successfully or false - failed
	ReadUint8([]byte, int) (uint8, int, bool)

	// ReadUint16 reads an uint16 from the buffer at the position
	// returns uint16 value ; pos+2 ; true - decoded successfully or false - failed
	ReadUint16([]byte, int) (uint16, int, bool)

	// ReadUint32 reads an uint32 from the buffer at the position
	// returns uint32 value ; pos+4 ; true - decoded successfully or false - failed
	ReadUint32([]byte, int) (uint32, int, bool)

	// ReadUint64 reads an uint64 from the buffer at the position
	// returns uint64 value ; pos+8 ; true - decoded successfully or false - failed
	ReadUint64([]byte, int) (uint64, int, bool)
}

type IOPackageImpl

type IOPackageImpl struct {
	// contains filtered or unexported fields
}

IOPackageImpl implements the IOPackage for the basic interaction in the connection

func NewIOPackage

func NewIOPackage(littleEndian bool) *IOPackageImpl

func (*IOPackageImpl) AppendUint16

func (bio *IOPackageImpl) AppendUint16(data []byte, value uint16) []byte

func (*IOPackageImpl) AppendUint32

func (bio *IOPackageImpl) AppendUint32(data []byte, value uint32) []byte

func (*IOPackageImpl) AppendUint64

func (bio *IOPackageImpl) AppendUint64(data []byte, value uint64) []byte

func (*IOPackageImpl) AppendUint8

func (bio *IOPackageImpl) AppendUint8(data []byte, value uint8) []byte

func (*IOPackageImpl) IsLittleEndian

func (bio *IOPackageImpl) IsLittleEndian() bool

func (*IOPackageImpl) ReadUint16

func (bio *IOPackageImpl) ReadUint16(data []byte, pos int) (uint16, int, bool)

func (*IOPackageImpl) ReadUint32

func (bio *IOPackageImpl) ReadUint32(data []byte, pos int) (uint32, int, bool)

func (*IOPackageImpl) ReadUint64

func (bio *IOPackageImpl) ReadUint64(data []byte, pos int) (uint64, int, bool)

func (*IOPackageImpl) ReadUint8

func (bio *IOPackageImpl) ReadUint8(data []byte, pos int) (uint8, int, bool)

func (*IOPackageImpl) WriteUint16

func (bio *IOPackageImpl) WriteUint16(data []byte, pos int, value uint16) int

func (*IOPackageImpl) WriteUint32

func (bio *IOPackageImpl) WriteUint32(data []byte, pos int, value uint32) int

func (*IOPackageImpl) WriteUint64

func (bio *IOPackageImpl) WriteUint64(data []byte, pos int, value uint64) int

func (*IOPackageImpl) WriteUint8

func (bio *IOPackageImpl) WriteUint8(data []byte, pos int, value uint8) int

type InsertExecutor added in v0.6.0

type InsertExecutor struct {
	// contains filtered or unexported fields
}

func (*InsertExecutor) ResponseAfterExec added in v0.6.0

func (ie *InsertExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

type InternalCmdFieldList added in v0.6.0

type InternalCmdFieldList struct {
	// contains filtered or unexported fields
}

InternalCmdFieldList the CMD_FIELD_LIST statement

func (*InternalCmdFieldList) Format added in v0.6.0

func (icfl *InternalCmdFieldList) Format(ctx *tree.FmtCtx)

func (*InternalCmdFieldList) GetQueryType added in v0.7.0

func (icfl *InternalCmdFieldList) GetQueryType() string

func (*InternalCmdFieldList) GetStatementType added in v0.7.0

func (icfl *InternalCmdFieldList) GetStatementType() string

func (*InternalCmdFieldList) String added in v0.6.0

func (icfl *InternalCmdFieldList) String() string

type InternalCmdFieldListExecutor added in v0.6.0

type InternalCmdFieldListExecutor struct {
	// contains filtered or unexported fields
}

func (*InternalCmdFieldListExecutor) ExecuteImpl added in v0.6.0

func (icfle *InternalCmdFieldListExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

func (*InternalCmdFieldListExecutor) ResponseAfterExec added in v0.6.0

func (icfle *InternalCmdFieldListExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (*InternalCmdFieldListExecutor) ResponseBeforeExec added in v0.6.0

func (icfle *InternalCmdFieldListExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type Interpreter added in v0.8.0

type Interpreter struct {
	// contains filtered or unexported fields
}

func (*Interpreter) EvalCond added in v0.8.0

func (interpreter *Interpreter) EvalCond(cond string) (int, error)

Evaluate condition by sending it to bh with a select

func (*Interpreter) ExecuteSp added in v0.8.0

func (interpreter *Interpreter) ExecuteSp(stmt tree.Statement, dbName string) (err error)

func (*Interpreter) FlushParam added in v0.8.0

func (interpreter *Interpreter) FlushParam() error

func (*Interpreter) GetExprString added in v0.8.0

func (interpreter *Interpreter) GetExprString(input tree.Expr) string

func (*Interpreter) GetResult added in v0.8.0

func (interpreter *Interpreter) GetResult() []ExecResult

func (*Interpreter) GetSimpleExprValueWithSpVar added in v0.8.0

func (interpreter *Interpreter) GetSimpleExprValueWithSpVar(e tree.Expr) (interface{}, error)

func (*Interpreter) GetSpVar added in v0.8.0

func (interpreter *Interpreter) GetSpVar(varName string) (interface{}, error)

func (*Interpreter) GetStatementString added in v0.8.0

func (interpreter *Interpreter) GetStatementString(input tree.Statement) string

func (*Interpreter) MatchExpr added in v0.8.0

func (interpreter *Interpreter) MatchExpr(expr tree.Expr) (tree.Expr, error)

Currently we support only binary, unary and comparison expression.

func (*Interpreter) SetSpVar added in v0.8.0

func (interpreter *Interpreter) SetSpVar(name string, value interface{}) error

Return error if variable is not declared yet. PARAM is an exception!

type KillRecord added in v0.8.0

type KillRecord struct {
	// contains filtered or unexported fields
}

func NewKillRecord added in v0.8.0

func NewKillRecord(killtime time.Time, version uint64) KillRecord

type LoadExecutor added in v0.6.0

type LoadExecutor struct {
	// contains filtered or unexported fields
}

func (*LoadExecutor) CommitOrRollbackTxn added in v0.6.0

func (le *LoadExecutor) CommitOrRollbackTxn(ctx context.Context, ses *Session) error

type MOServer

type MOServer struct {
	// contains filtered or unexported fields
}

MOServer MatrixOne Server

func NewMOServer

func NewMOServer(
	ctx context.Context,
	addr string,
	pu *config.ParameterUnit,
	aicm *defines.AutoIncrCacheManager,
	baseService BaseService,
) *MOServer

func (*MOServer) GetRoutineManager added in v0.7.0

func (mo *MOServer) GetRoutineManager() *RoutineManager

func (*MOServer) Start

func (mo *MOServer) Start() error

func (*MOServer) Stop

func (mo *MOServer) Stop() error

type MysqlCmdExecutor

type MysqlCmdExecutor struct {
	CmdExecutorImpl

	//for cmd 0x4
	TableInfoCache
	// contains filtered or unexported fields
}

func NewMysqlCmdExecutor

func NewMysqlCmdExecutor() *MysqlCmdExecutor

func (*MysqlCmdExecutor) CancelRequest added in v0.7.0

func (mce *MysqlCmdExecutor) CancelRequest()

func (*MysqlCmdExecutor) ChooseDoQueryFunc added in v0.6.0

func (mce *MysqlCmdExecutor) ChooseDoQueryFunc(choice bool)

func (*MysqlCmdExecutor) Close

func (mce *MysqlCmdExecutor) Close()

func (*MysqlCmdExecutor) ExecRequest

func (mce *MysqlCmdExecutor) ExecRequest(requestCtx context.Context, ses *Session, req *Request) (resp *Response, err error)

ExecRequest the server execute the commands from the client following the mysql's routine

func (*MysqlCmdExecutor) GetDoQueryFunc added in v0.6.0

func (mce *MysqlCmdExecutor) GetDoQueryFunc() doComQueryFunc

func (*MysqlCmdExecutor) GetRoutineManager

func (mce *MysqlCmdExecutor) GetRoutineManager() *RoutineManager

func (*MysqlCmdExecutor) GetSession

func (mce *MysqlCmdExecutor) GetSession() *Session

func (*MysqlCmdExecutor) GetSqlCount added in v0.6.0

func (mce *MysqlCmdExecutor) GetSqlCount() uint64

func (*MysqlCmdExecutor) InitFunction added in v1.1.0

func (mce *MysqlCmdExecutor) InitFunction(ctx context.Context, ses *Session, tenant *TenantInfo, cf *tree.CreateFunction) (err error)

func (*MysqlCmdExecutor) SetCancelFunc added in v0.7.0

func (mce *MysqlCmdExecutor) SetCancelFunc(cancelFunc context.CancelFunc)

func (*MysqlCmdExecutor) SetRoutineManager

func (mce *MysqlCmdExecutor) SetRoutineManager(mgr *RoutineManager)

func (*MysqlCmdExecutor) SetSession added in v0.7.0

func (mce *MysqlCmdExecutor) SetSession(ses *Session)

func (*MysqlCmdExecutor) Upload added in v1.1.0

func (mce *MysqlCmdExecutor) Upload(ctx context.Context, localPath string, storageDir string) (string, error)

type MysqlColumn

type MysqlColumn struct {
	ColumnImpl
	// contains filtered or unexported fields
}

func (*MysqlColumn) Charset

func (mc *MysqlColumn) Charset() uint16

func (*MysqlColumn) Decimal

func (mc *MysqlColumn) Decimal() uint8

func (*MysqlColumn) DefaultValue

func (mc *MysqlColumn) DefaultValue() []byte

func (*MysqlColumn) Flag

func (mc *MysqlColumn) Flag() uint16

func (*MysqlColumn) GetAutoIncr added in v0.6.0

func (mc *MysqlColumn) GetAutoIncr() bool

func (*MysqlColumn) IsSigned

func (mc *MysqlColumn) IsSigned() bool

func (*MysqlColumn) OrgName

func (mc *MysqlColumn) OrgName() string

func (*MysqlColumn) OrgTable

func (mc *MysqlColumn) OrgTable() string

func (*MysqlColumn) Schema

func (mc *MysqlColumn) Schema() string

func (*MysqlColumn) SetAutoIncr added in v0.6.0

func (mc *MysqlColumn) SetAutoIncr(s bool)

func (*MysqlColumn) SetCharset

func (mc *MysqlColumn) SetCharset(charset uint16)

func (*MysqlColumn) SetDecimal

func (mc *MysqlColumn) SetDecimal(decimal int32)

func (*MysqlColumn) SetDefaultValue

func (mc *MysqlColumn) SetDefaultValue(defaultValue []byte)

func (*MysqlColumn) SetFlag

func (mc *MysqlColumn) SetFlag(flag uint16)

func (*MysqlColumn) SetOrgName

func (mc *MysqlColumn) SetOrgName(orgName string)

func (*MysqlColumn) SetOrgTable

func (mc *MysqlColumn) SetOrgTable(orgTable string)

func (*MysqlColumn) SetSchema

func (mc *MysqlColumn) SetSchema(schema string)

func (*MysqlColumn) SetSigned

func (mc *MysqlColumn) SetSigned(s bool)

func (*MysqlColumn) SetTable

func (mc *MysqlColumn) SetTable(table string)

func (*MysqlColumn) Table

func (mc *MysqlColumn) Table() string

type MysqlExecutionResult

type MysqlExecutionResult struct {
	// contains filtered or unexported fields
}

the result of the execution

func NewMysqlExecutionResult

func NewMysqlExecutionResult(status uint16, insertid, rows uint64, warnings uint16, mrs *MysqlResultSet) *MysqlExecutionResult

func (*MysqlExecutionResult) AffectedRows

func (mer *MysqlExecutionResult) AffectedRows() uint64

func (*MysqlExecutionResult) InsertID

func (mer *MysqlExecutionResult) InsertID() uint64

func (*MysqlExecutionResult) Mrs

func (*MysqlExecutionResult) SetAffectedRows

func (mer *MysqlExecutionResult) SetAffectedRows(affectedRows uint64)

func (*MysqlExecutionResult) SetInsertID

func (mer *MysqlExecutionResult) SetInsertID(insertID uint64)

func (*MysqlExecutionResult) SetMrs

func (mer *MysqlExecutionResult) SetMrs(mrs *MysqlResultSet)

func (*MysqlExecutionResult) SetStatus

func (mer *MysqlExecutionResult) SetStatus(status uint16)

func (*MysqlExecutionResult) SetWarnings

func (mer *MysqlExecutionResult) SetWarnings(warnings uint16)

func (*MysqlExecutionResult) Status

func (mer *MysqlExecutionResult) Status() uint16

func (*MysqlExecutionResult) Warnings

func (mer *MysqlExecutionResult) Warnings() uint16

type MysqlProtocol

type MysqlProtocol interface {
	Protocol
	//the server send group row of the result set as an independent packet thread safe
	SendResultSetTextBatchRow(mrs *MysqlResultSet, cnt uint64) error

	SendResultSetTextBatchRowSpeedup(mrs *MysqlResultSet, cnt uint64) error

	//SendColumnDefinitionPacket the server send the column definition to the client
	SendColumnDefinitionPacket(ctx context.Context, column Column, cmd int) error

	//SendColumnCountPacket makes the column count packet
	SendColumnCountPacket(count uint64) error

	SendResponse(ctx context.Context, resp *Response) error

	SendEOFPacketIf(warnings uint16, status uint16) error

	ResetStatistics()

	GetStats() string

	// CalculateOutTrafficBytes return bytes, mysql packet num send back to client
	// reset marks Do reset counter after calculation or not.
	CalculateOutTrafficBytes(reset bool) (int64, int64)

	ParseExecuteData(ctx context.Context, proc *process.Process, stmt *PrepareStmt, data []byte, pos int) error

	ParseSendLongData(ctx context.Context, proc *process.Process, stmt *PrepareStmt, data []byte, pos int) error
	// contains filtered or unexported methods
}

type MysqlProtocolImpl

type MysqlProtocolImpl struct {
	ProtocolImpl

	SV *config.FrontendParameters
	// contains filtered or unexported fields
}

func NewMysqlClientProtocol

func NewMysqlClientProtocol(connectionID uint32, tcp goetty.IOSession, maxBytesToFlush int, SV *config.FrontendParameters) *MysqlProtocolImpl

func (*MysqlProtocolImpl) AddFlushBytes added in v1.0.0

func (ds *MysqlProtocolImpl) AddFlushBytes(b uint64)

func (*MysqlProtocolImpl) AddSequenceId added in v0.6.0

func (mp *MysqlProtocolImpl) AddSequenceId(a uint8)

func (*MysqlProtocolImpl) Authenticate added in v0.8.0

func (mp *MysqlProtocolImpl) Authenticate(ctx context.Context) error

func (*MysqlProtocolImpl) CalculateOutTrafficBytes added in v1.0.0

func (mp *MysqlProtocolImpl) CalculateOutTrafficBytes(reset bool) (bytes int64, packets int64)

CalculateOutTrafficBytes calculate the bytes of the last out traffic, the number of mysql packets

func (*MysqlProtocolImpl) GetCapability added in v0.6.0

func (mp *MysqlProtocolImpl) GetCapability() uint32

func (*MysqlProtocolImpl) GetConnectAttrs added in v0.8.0

func (mp *MysqlProtocolImpl) GetConnectAttrs() map[string]string

func (*MysqlProtocolImpl) GetDatabaseName

func (mp *MysqlProtocolImpl) GetDatabaseName() string

func (*MysqlProtocolImpl) GetRequest

func (mp *MysqlProtocolImpl) GetRequest(payload []byte) *Request

func (*MysqlProtocolImpl) GetSession added in v0.6.0

func (mp *MysqlProtocolImpl) GetSession() *Session

func (*MysqlProtocolImpl) GetStats

func (mp *MysqlProtocolImpl) GetStats() string

func (*MysqlProtocolImpl) GetUserName

func (mp *MysqlProtocolImpl) GetUserName() string

func (*MysqlProtocolImpl) HandleHandshake added in v0.7.0

func (mp *MysqlProtocolImpl) HandleHandshake(ctx context.Context, payload []byte) (bool, error)

func (*MysqlProtocolImpl) MakeEOFPayload added in v0.8.0

func (mp *MysqlProtocolImpl) MakeEOFPayload(warnings, status uint16) []byte

MakeEOFPayload exposes (*MysqlProtocolImpl).makeEOFPayload() function.

func (*MysqlProtocolImpl) MakeErrPayload added in v0.8.0

func (mp *MysqlProtocolImpl) MakeErrPayload(errCode uint16, sqlState, errorMessage string) []byte

MakeErrPayload exposes (*MysqlProtocolImpl).makeErrPayload() function.

func (*MysqlProtocolImpl) MakeHandshakePayload added in v0.8.0

func (mp *MysqlProtocolImpl) MakeHandshakePayload() []byte

MakeHandshakePayload exposes (*MysqlProtocolImpl).makeHandshakeV10Payload() function.

func (*MysqlProtocolImpl) MakeOKPayload added in v0.8.0

func (mp *MysqlProtocolImpl) MakeOKPayload(affectedRows, lastInsertId uint64, statusFlags, warnings uint16, message string) []byte

MakeOKPayload exposes (*MysqlProtocolImpl).makeOKPayload() function.

func (*MysqlProtocolImpl) ParseExecuteData added in v0.6.0

func (mp *MysqlProtocolImpl) ParseExecuteData(ctx context.Context, proc *process.Process, stmt *PrepareStmt, data []byte, pos int) error

func (*MysqlProtocolImpl) ParseSendLongData added in v0.8.0

func (mp *MysqlProtocolImpl) ParseSendLongData(ctx context.Context, proc *process.Process, stmt *PrepareStmt, data []byte, pos int) error

func (*MysqlProtocolImpl) Quit

func (mp *MysqlProtocolImpl) Quit()

func (*MysqlProtocolImpl) ReadIntLenEnc added in v0.8.1

func (mp *MysqlProtocolImpl) ReadIntLenEnc(data []byte, pos int) (uint64, int, bool)

func (*MysqlProtocolImpl) ResetStatistics added in v0.7.0

func (mp *MysqlProtocolImpl) ResetStatistics()

func (*MysqlProtocolImpl) ResetStats

func (ds *MysqlProtocolImpl) ResetStats()

func (*MysqlProtocolImpl) SendColumnCountPacket

func (mp *MysqlProtocolImpl) SendColumnCountPacket(count uint64) error

SendColumnCountPacket makes the column count packet

func (*MysqlProtocolImpl) SendColumnDefinitionPacket

func (mp *MysqlProtocolImpl) SendColumnDefinitionPacket(ctx context.Context, column Column, cmd int) error

SendColumnDefinitionPacket the server send the column definition to the client

func (*MysqlProtocolImpl) SendEOFPacketIf

func (mp *MysqlProtocolImpl) SendEOFPacketIf(warnings, status uint16) error

func (*MysqlProtocolImpl) SendPrepareResponse added in v0.6.0

func (mp *MysqlProtocolImpl) SendPrepareResponse(ctx context.Context, stmt *PrepareStmt) error

func (*MysqlProtocolImpl) SendResponse

func (mp *MysqlProtocolImpl) SendResponse(ctx context.Context, resp *Response) error

func (*MysqlProtocolImpl) SendResultSetTextBatchRow

func (mp *MysqlProtocolImpl) SendResultSetTextBatchRow(mrs *MysqlResultSet, cnt uint64) error

the server send group row of the result set as an independent packet thread safe

func (*MysqlProtocolImpl) SendResultSetTextBatchRowSpeedup

func (mp *MysqlProtocolImpl) SendResultSetTextBatchRowSpeedup(mrs *MysqlResultSet, cnt uint64) error

func (*MysqlProtocolImpl) SendResultSetTextRow

func (mp *MysqlProtocolImpl) SendResultSetTextRow(mrs *MysqlResultSet, r uint64) error

the server send every row of the result set as an independent packet thread safe

func (*MysqlProtocolImpl) SetCapability added in v1.1.1

func (mp *MysqlProtocolImpl) SetCapability(cap uint32)

func (*MysqlProtocolImpl) SetDatabaseName

func (mp *MysqlProtocolImpl) SetDatabaseName(s string)

func (*MysqlProtocolImpl) SetSequenceID added in v0.6.0

func (mp *MysqlProtocolImpl) SetSequenceID(value uint8)

func (*MysqlProtocolImpl) SetSession added in v0.6.0

func (mp *MysqlProtocolImpl) SetSession(ses *Session)

func (*MysqlProtocolImpl) SetUserName

func (mp *MysqlProtocolImpl) SetUserName(s string)

func (*MysqlProtocolImpl) String

func (ds *MysqlProtocolImpl) String() string

func (*MysqlProtocolImpl) WritePacket added in v0.8.0

func (mp *MysqlProtocolImpl) WritePacket(payload []byte) error

WritePacket exposes (*MysqlProtocolImpl).writePackets() function.

type MysqlResultSet

type MysqlResultSet struct {
	//column information
	Columns []Column

	//column name --> column index
	Name2Index map[string]uint64

	//data
	Data [][]interface{}
}

Discussion: for some MatrixOne types and Type.Scale value are needed for stringification, I think we need to add a field MoTypes []types.Type in this struct, what's your opinion on this matter?@Daviszhen

func (*MysqlResultSet) AddColumn

func (mrs *MysqlResultSet) AddColumn(column Column) uint64

func (*MysqlResultSet) AddRow

func (mrs *MysqlResultSet) AddRow(row []interface{}) uint64

func (*MysqlResultSet) ColumnIsNull

func (mrs *MysqlResultSet) ColumnIsNull(ctx context.Context, rindex, cindex uint64) (bool, error)

the value in position (rindex,cindex) is null or not return true - null ; false - not null

func (*MysqlResultSet) GetColumn

func (mrs *MysqlResultSet) GetColumn(ctx context.Context, index uint64) (Column, error)

func (*MysqlResultSet) GetColumnCount

func (mrs *MysqlResultSet) GetColumnCount() uint64

func (*MysqlResultSet) GetFloat64

func (mrs *MysqlResultSet) GetFloat64(ctx context.Context, rindex, cindex uint64) (float64, error)

convert the value into Float64

func (*MysqlResultSet) GetInt64

func (mrs *MysqlResultSet) GetInt64(ctx context.Context, rindex, cindex uint64) (int64, error)

convert the value into int64

func (*MysqlResultSet) GetRow

func (mrs *MysqlResultSet) GetRow(ctx context.Context, index uint64) ([]interface{}, error)

func (*MysqlResultSet) GetRowCount

func (mrs *MysqlResultSet) GetRowCount() uint64

func (*MysqlResultSet) GetString

func (mrs *MysqlResultSet) GetString(ctx context.Context, rindex, cindex uint64) (string, error)

convert the value into string

func (*MysqlResultSet) GetUint64

func (mrs *MysqlResultSet) GetUint64(ctx context.Context, rindex, cindex uint64) (uint64, error)

convert the value into uint64

func (*MysqlResultSet) GetValue

func (mrs *MysqlResultSet) GetValue(ctx context.Context, rindex uint64, cindex uint64) (interface{}, error)

func (*MysqlResultSet) GetValueByName

func (mrs *MysqlResultSet) GetValueByName(ctx context.Context, rindex uint64, colName string) (interface{}, error)

type NullComputationWrapper added in v0.6.0

type NullComputationWrapper struct {
	*TxnComputationWrapper
}

func InitNullComputationWrapper added in v0.6.0

func InitNullComputationWrapper(ses *Session, stmt tree.Statement, proc *process.Process) *NullComputationWrapper

func (*NullComputationWrapper) Compile added in v0.6.0

func (ncw *NullComputationWrapper) Compile(requestCtx context.Context, u interface{}, fill func(interface{}, *batch.Batch) error) (interface{}, error)

func (*NullComputationWrapper) GetAst added in v0.6.0

func (ncw *NullComputationWrapper) GetAst() tree.Statement

func (*NullComputationWrapper) GetColumns added in v0.6.0

func (ncw *NullComputationWrapper) GetColumns() ([]interface{}, error)

func (*NullComputationWrapper) GetLoadTag added in v0.6.0

func (ncw *NullComputationWrapper) GetLoadTag() bool

func (*NullComputationWrapper) GetUUID added in v0.6.0

func (ncw *NullComputationWrapper) GetUUID() []byte

func (*NullComputationWrapper) RecordExecPlan added in v0.6.0

func (ncw *NullComputationWrapper) RecordExecPlan(ctx context.Context) error

func (*NullComputationWrapper) Run added in v0.6.0

type Packet

type Packet struct {
	Length     int32
	SequenceID int8
	Payload    []byte
}

type PrepareStmt added in v0.6.0

type PrepareStmt struct {
	Name           string
	Sql            string
	PreparePlan    *plan.Plan
	PrepareStmt    tree.Statement
	ParamTypes     []byte
	IsInsertValues bool
	InsertBat      *batch.Batch
	// contains filtered or unexported fields
}

func (*PrepareStmt) Close added in v0.8.0

func (prepareStmt *PrepareStmt) Close()

type PrepareStmtExecutor added in v0.6.0

type PrepareStmtExecutor struct {
	// contains filtered or unexported fields
}

func (*PrepareStmtExecutor) ExecuteImpl added in v0.6.0

func (pse *PrepareStmtExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

func (*PrepareStmtExecutor) ResponseAfterExec added in v0.6.0

func (pse *PrepareStmtExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

type PrepareStringExecutor added in v0.6.0

type PrepareStringExecutor struct {
	// contains filtered or unexported fields
}

func (*PrepareStringExecutor) ExecuteImpl added in v0.6.0

func (pse *PrepareStringExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

func (*PrepareStringExecutor) ResponseAfterExec added in v0.6.0

func (pse *PrepareStringExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

type PrivilegeScope added in v0.6.0

type PrivilegeScope uint8
const (
	PrivilegeScopeSys      PrivilegeScope = 1
	PrivilegeScopeAccount  PrivilegeScope = 2
	PrivilegeScopeUser     PrivilegeScope = 4
	PrivilegeScopeRole     PrivilegeScope = 8
	PrivilegeScopeDatabase PrivilegeScope = 16
	PrivilegeScopeTable    PrivilegeScope = 32
	PrivilegeScopeRoutine  PrivilegeScope = 64
)

func (PrivilegeScope) String added in v0.6.0

func (ps PrivilegeScope) String() string

type PrivilegeType added in v0.6.0

type PrivilegeType int
const (
	PrivilegeTypeCreateAccount PrivilegeType = iota
	PrivilegeTypeDropAccount
	PrivilegeTypeAlterAccount
	PrivilegeTypeCreateUser
	PrivilegeTypeDropUser
	PrivilegeTypeAlterUser
	PrivilegeTypeCreateRole
	PrivilegeTypeDropRole
	PrivilegeTypeAlterRole
	PrivilegeTypeCreateDatabase
	PrivilegeTypeDropDatabase
	PrivilegeTypeShowDatabases
	PrivilegeTypeConnect
	PrivilegeTypeManageGrants
	PrivilegeTypeAccountAll
	PrivilegeTypeAccountOwnership
	PrivilegeTypeUserOwnership
	PrivilegeTypeRoleOwnership
	PrivilegeTypeShowTables
	PrivilegeTypeCreateObject //includes: table, view, stream, sequence, function, dblink,etc
	PrivilegeTypeCreateTable
	PrivilegeTypeCreateView
	PrivilegeTypeDropObject
	PrivilegeTypeDropTable
	PrivilegeTypeDropView
	PrivilegeTypeAlterObject
	PrivilegeTypeAlterTable
	PrivilegeTypeAlterView
	PrivilegeTypeDatabaseAll
	PrivilegeTypeDatabaseOwnership
	PrivilegeTypeSelect
	PrivilegeTypeInsert
	PrivilegeTypeUpdate
	PrivilegeTypeTruncate
	PrivilegeTypeDelete
	PrivilegeTypeReference
	PrivilegeTypeIndex //include create/alter/drop index
	PrivilegeTypeTableAll
	PrivilegeTypeTableOwnership
	PrivilegeTypeExecute
	PrivilegeTypeCanGrantRoleToOthersInCreateUser // used in checking the privilege of CreateUser with the default role
	PrivilegeTypeValues
)

func (PrivilegeType) Scope added in v0.6.0

func (pt PrivilegeType) Scope() PrivilegeScope

func (PrivilegeType) String added in v0.6.0

func (pt PrivilegeType) String() string

type Protocol

type Protocol interface {
	IsEstablished() bool

	SetEstablished()

	// GetRequest gets Request from Packet
	GetRequest(payload []byte) *Request

	// SendResponse sends a response to the client for the application request
	SendResponse(context.Context, *Response) error

	// ConnectionID the identity of the client
	ConnectionID() uint32

	// Peer gets the address [Host:Port,Host:Port] of the client and the server
	Peer() string

	GetDatabaseName() string

	SetDatabaseName(string)

	GetUserName() string

	SetUserName(string)

	GetSequenceId() uint8

	SetSequenceID(value uint8)

	GetDebugString() string

	GetTcpConnection() goetty.IOSession

	GetCapability() uint32

	SetCapability(uint32)

	GetConnectAttrs() map[string]string

	IsTlsEstablished() bool

	SetTlsEstablished()

	HandleHandshake(ctx context.Context, payload []byte) (bool, error)

	Authenticate(ctx context.Context) error

	SendPrepareResponse(ctx context.Context, stmt *PrepareStmt) error

	Quit()
	// contains filtered or unexported methods
}

type ProtocolImpl

type ProtocolImpl struct {
	// contains filtered or unexported fields
}

func (*ProtocolImpl) ConnectionID

func (pi *ProtocolImpl) ConnectionID() uint32

func (*ProtocolImpl) GetDebugString added in v0.8.0

func (pi *ProtocolImpl) GetDebugString() string

func (*ProtocolImpl) GetSalt added in v0.6.0

func (pi *ProtocolImpl) GetSalt() []byte

func (*ProtocolImpl) GetSequenceId added in v0.7.0

func (pi *ProtocolImpl) GetSequenceId() uint8

func (*ProtocolImpl) GetTcpConnection added in v0.6.0

func (pi *ProtocolImpl) GetTcpConnection() goetty.IOSession

func (*ProtocolImpl) IsEstablished

func (pi *ProtocolImpl) IsEstablished() bool

func (*ProtocolImpl) IsTlsEstablished added in v0.6.0

func (pi *ProtocolImpl) IsTlsEstablished() bool

func (*ProtocolImpl) Peer

func (pi *ProtocolImpl) Peer() string

func (*ProtocolImpl) Quit

func (pi *ProtocolImpl) Quit()

Quit kill tcpConn still connected. before calling NewMysqlClientProtocol, tcpConn.Connected() must be true please check goetty/application.go::doStart() and goetty/application.go::NewIOSession(...) for details

func (*ProtocolImpl) SetEstablished

func (pi *ProtocolImpl) SetEstablished()

func (*ProtocolImpl) SetSalt added in v0.8.0

func (pi *ProtocolImpl) SetSalt(s []byte)

SetSalt updates the salt value. This happens with proxy mode enabled.

func (*ProtocolImpl) SetTlsEstablished added in v0.6.0

func (pi *ProtocolImpl) SetTlsEstablished()

type ReplaceExecutor added in v1.0.0

type ReplaceExecutor struct {
	// contains filtered or unexported fields
}

func (*ReplaceExecutor) ResponseAfterExec added in v1.0.0

func (re *ReplaceExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

type Request

type Request struct {
	// contains filtered or unexported fields
}

func (*Request) GetCmd

func (req *Request) GetCmd() CommandType

func (*Request) GetData

func (req *Request) GetData() interface{}

func (*Request) SetCmd

func (req *Request) SetCmd(cmd CommandType)

func (*Request) SetData

func (req *Request) SetData(data interface{})

type Response

type Response struct {
	// contains filtered or unexported fields
}

func NewGeneralErrorResponse

func NewGeneralErrorResponse(cmd CommandType, status uint16, err error) *Response

func NewGeneralOkResponse

func NewGeneralOkResponse(cmd CommandType, status uint16) *Response

func NewOkResponse

func NewOkResponse(affectedRows, lastInsertId uint64, warnings, status uint16, cmd int, d interface{}) *Response

func NewResponse

func NewResponse(category int, affectedRows, lastInsertId uint64, warnings, status uint16, cmd int, d interface{}) *Response

func (*Response) GetCategory

func (resp *Response) GetCategory() int

func (*Response) GetData

func (resp *Response) GetData() interface{}

func (*Response) GetStatus

func (resp *Response) GetStatus() uint16

func (*Response) SetCategory

func (resp *Response) SetCategory(category int)

func (*Response) SetData

func (resp *Response) SetData(data interface{})

func (*Response) SetStatus

func (resp *Response) SetStatus(status uint16)

type ResultSet

type ResultSet interface {
	//Add a column definition
	//return the index of column (start from 0)
	AddColumn(Column) uint64

	//the Count of the Column
	GetColumnCount() uint64

	//get the i th column
	GetColumn(context.Context, uint64) (Column, error)

	//Add a data row
	//return the index of row (start from 0)
	AddRow([]interface{}) uint64

	//the count of the data row
	GetRowCount() uint64

	//get the i th data row
	GetRow(context.Context, uint64) ([]interface{}, error)

	//get the data of row i, column j
	GetValue(context.Context, uint64, uint64) (interface{}, error)

	//get the data of row i, column
	GetValueByName(context.Context, uint64, string) (interface{}, error)
}

type RevokeExecutor added in v0.6.0

type RevokeExecutor struct {
	// contains filtered or unexported fields
}

func (*RevokeExecutor) ExecuteImpl added in v0.6.0

func (re *RevokeExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type RollbackTxnExecutor added in v0.6.0

type RollbackTxnExecutor struct {
	// contains filtered or unexported fields
}

func (*RollbackTxnExecutor) ExecuteImpl added in v0.6.0

func (rte *RollbackTxnExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type Routine

type Routine struct {
	// contains filtered or unexported fields
}

Routine handles requests. Read requests from the IOSession layer, use the executor to handle requests, and response them.

func NewRoutine

func NewRoutine(ctx context.Context, protocol MysqlProtocol, executor CmdExecutor, parameters *config.FrontendParameters, rs goetty.IOSession) *Routine

type RoutineManager

type RoutineManager struct {
	// contains filtered or unexported fields
}

func (*RoutineManager) Closed

func (rm *RoutineManager) Closed(rs goetty.IOSession)

When the io is closed, the Closed will be called.

func (*RoutineManager) Created

func (rm *RoutineManager) Created(rs goetty.IOSession)

func (*RoutineManager) GetAccountRoutineManager added in v1.0.0

func (rm *RoutineManager) GetAccountRoutineManager() *AccountRoutineManager

func (*RoutineManager) GetAutoIncrCacheManager added in v0.8.0

func (rm *RoutineManager) GetAutoIncrCacheManager() *defines.AutoIncrCacheManager

func (*RoutineManager) Handler

func (rm *RoutineManager) Handler(rs goetty.IOSession, msg interface{}, received uint64) error

func (*RoutineManager) KillRoutineConnections added in v0.8.0

func (rm *RoutineManager) KillRoutineConnections()

func (*RoutineManager) MigrateConnectionFrom added in v1.1.2

func (rm *RoutineManager) MigrateConnectionFrom(req *query.MigrateConnFromRequest, resp *query.MigrateConnFromResponse) error

func (*RoutineManager) MigrateConnectionTo added in v1.1.2

func (rm *RoutineManager) MigrateConnectionTo(req *query.MigrateConnToRequest) error

type Scope added in v0.5.0

type Scope int
const (
	ScopeGlobal       Scope = iota //it is only in global
	ScopeSession                   //it is only in session
	ScopeBoth                      //it is both in global and session
	ScopePersist                   //it is global and persisted
	ScopePersistOnly               //it is persisted without updating global and session values
	ScopeResetPersist              //to remove a persisted variable
)

func (Scope) String added in v0.5.0

func (s Scope) String() string

type SelectExecutor added in v0.6.0

type SelectExecutor struct {
	// contains filtered or unexported fields
}

TODO: special handle for export

func (SelectExecutor) ResponseAfterExec added in v0.6.0

func (rsse SelectExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (SelectExecutor) ResponseBeforeExec added in v0.6.0

func (rsse SelectExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type Session

type Session struct {
	InitTempEngine bool
	// contains filtered or unexported fields
}

func NewSession

func NewSession(proto Protocol, mp *mpool.MPool, pu *config.ParameterUnit,
	gSysVars *GlobalSystemVariables, isNotBackgroundSession bool,
	aicm *defines.AutoIncrCacheManager, sharedTxnHandler *TxnHandler) *Session

func (*Session) AddSeqValues added in v0.8.0

func (ses *Session) AddSeqValues(proc *process.Process)

func (*Session) AppendData added in v0.6.0

func (ses *Session) AppendData(row []interface{})

func (*Session) AppendResultBatch added in v0.8.0

func (ses *Session) AppendResultBatch(bat *batch.Batch) error

func (*Session) AuthenticateUser added in v0.6.0

func (ses *Session) AuthenticateUser(userInput string, dbName string, authResponse []byte, salt []byte, checkPassword func(pwd, salt, auth []byte) bool) ([]byte, error)

AuthenticateUser Verify the user's password, and if the login information contains the database name, verify if the database exists

func (*Session) ClearAllMysqlResultSet added in v0.6.0

func (ses *Session) ClearAllMysqlResultSet()

func (*Session) ClearExportParam added in v1.0.0

func (ses *Session) ClearExportParam()

func (*Session) ClearOptionBits added in v0.6.0

func (ses *Session) ClearOptionBits(bit uint32)

func (*Session) ClearResultBatches added in v0.8.0

func (ses *Session) ClearResultBatches()

ClearResultBatches does not call Batch.Clear().

func (*Session) ClearServerStatus added in v0.6.0

func (ses *Session) ClearServerStatus(bit uint16)

func (*Session) ClearStmtProfile added in v1.0.0

func (ses *Session) ClearStmtProfile()

func (*Session) Close added in v0.8.0

func (ses *Session) Close()

func (*Session) CopyAllSessionVars added in v0.5.0

func (ses *Session) CopyAllSessionVars() map[string]interface{}

func (*Session) CopySeqToProc added in v0.8.0

func (ses *Session) CopySeqToProc(proc *process.Process)

func (*Session) CountPacket added in v1.1.2

func (ses *Session) CountPacket(delta int64)

func (*Session) CountPayload added in v1.1.2

func (ses *Session) CountPayload(length int)

func (*Session) DatabaseNameIsEmpty added in v0.5.0

func (ses *Session) DatabaseNameIsEmpty() bool

func (*Session) DeleteSeqValues added in v0.8.0

func (ses *Session) DeleteSeqValues(proc *process.Process)

func (*Session) EnableInitTempEngine added in v0.8.0

func (ses *Session) EnableInitTempEngine()

func (*Session) GenNewStmtId added in v0.6.0

func (ses *Session) GenNewStmtId() uint32

func (*Session) GetAllMysqlResultSet added in v0.6.0

func (ses *Session) GetAllMysqlResultSet() []*MysqlResultSet

func (*Session) GetAutoIncrCacheManager added in v0.8.0

func (ses *Session) GetAutoIncrCacheManager() *defines.AutoIncrCacheManager

func (*Session) GetBackgroundExec added in v0.6.0

func (ses *Session) GetBackgroundExec(ctx context.Context) BackgroundExec

GetBackgroundExec generates a background executor

func (*Session) GetBuffer added in v1.0.0

func (ses *Session) GetBuffer() *buffer.Buffer

func (*Session) GetCmd added in v0.6.0

func (ses *Session) GetCmd() CommandType

func (*Session) GetConnectContext added in v0.8.0

func (ses *Session) GetConnectContext() context.Context

func (*Session) GetConnectionID added in v0.5.1

func (ses *Session) GetConnectionID() uint32

func (*Session) GetData added in v0.6.0

func (ses *Session) GetData() [][]interface{}

func (*Session) GetDatabaseName added in v0.5.0

func (ses *Session) GetDatabaseName() string

func (*Session) GetDebugString added in v0.8.0

func (ses *Session) GetDebugString() string

func (*Session) GetErrInfo added in v0.6.0

func (ses *Session) GetErrInfo() *errInfo

func (*Session) GetExportConfig added in v1.0.0

func (ses *Session) GetExportConfig() *ExportConfig

func (*Session) GetFromRealUser added in v0.6.0

func (ses *Session) GetFromRealUser() bool

func (*Session) GetGlobalSysVars added in v0.6.0

func (ses *Session) GetGlobalSysVars() *GlobalSystemVariables

func (*Session) GetGlobalVar added in v0.5.0

func (ses *Session) GetGlobalVar(name string) (interface{}, error)

GetGlobalVar gets this value of the system variable in global

func (*Session) GetIncBlockIdx added in v0.7.0

func (ses *Session) GetIncBlockIdx() int

func (*Session) GetIsInternal added in v0.6.0

func (ses *Session) GetIsInternal() bool

func (*Session) GetLastInsertID added in v0.7.0

func (ses *Session) GetLastInsertID() uint64

func (*Session) GetLastStmtId added in v0.6.0

func (ses *Session) GetLastStmtId() uint32

func (*Session) GetMemPool added in v0.6.0

func (ses *Session) GetMemPool() *mpool.MPool

func (*Session) GetMysqlProtocol

func (ses *Session) GetMysqlProtocol() MysqlProtocol

func (*Session) GetMysqlResultSet added in v0.6.0

func (ses *Session) GetMysqlResultSet() *MysqlResultSet

func (*Session) GetOptionBits added in v0.8.0

func (ses *Session) GetOptionBits() uint32

func (*Session) GetOutputCallback added in v0.6.0

func (ses *Session) GetOutputCallback() func(interface{}, *batch.Batch) error

func (*Session) GetPacketCnt added in v1.1.2

func (ses *Session) GetPacketCnt() int64

func (*Session) GetParameterUnit added in v0.6.0

func (ses *Session) GetParameterUnit() *config.ParameterUnit

func (*Session) GetPrepareStmt added in v0.6.0

func (ses *Session) GetPrepareStmt(name string) (*PrepareStmt, error)

func (*Session) GetPrepareStmts added in v1.1.2

func (ses *Session) GetPrepareStmts() []*PrepareStmt

func (*Session) GetPrivilege added in v0.6.0

func (ses *Session) GetPrivilege() *privilege

func (*Session) GetPrivilegeCache added in v0.6.0

func (ses *Session) GetPrivilegeCache() *privilegeCache

func (*Session) GetQueryEnd added in v1.0.1

func (ses *Session) GetQueryEnd() time.Time

func (*Session) GetQueryInExecute added in v1.0.0

func (ses *Session) GetQueryInExecute() bool

func (*Session) GetQueryInProgress added in v1.0.1

func (ses *Session) GetQueryInProgress() bool

func (*Session) GetQueryStart added in v1.0.0

func (ses *Session) GetQueryStart() time.Time

func (*Session) GetQueryType added in v1.0.0

func (ses *Session) GetQueryType() string

func (*Session) GetRawBatchBackgroundExec added in v0.8.0

func (ses *Session) GetRawBatchBackgroundExec(ctx context.Context) *BackgroundHandler

func (*Session) GetRequestContext added in v0.6.0

func (ses *Session) GetRequestContext() context.Context

func (*Session) GetResultBatches added in v0.8.0

func (ses *Session) GetResultBatches() []*batch.Batch

func (*Session) GetSeqLastValue added in v0.8.0

func (ses *Session) GetSeqLastValue() string

func (*Session) GetServerStatus added in v0.8.0

func (ses *Session) GetServerStatus() uint16

func (*Session) GetSessionStart added in v1.0.0

func (ses *Session) GetSessionStart() time.Time

func (*Session) GetSessionVar added in v0.5.0

func (ses *Session) GetSessionVar(name string) (interface{}, error)

GetSessionVar gets this value of the system variable in session

func (*Session) GetSessionVarLocked added in v1.1.2

func (ses *Session) GetSessionVarLocked(name string) (interface{}, error)

func (*Session) GetShareTxnBackgroundExec added in v0.8.0

func (ses *Session) GetShareTxnBackgroundExec(ctx context.Context, newRawBatch bool) BackgroundExec

GetShareTxnBackgroundExec returns a background executor running the sql in a shared transaction. newRawBatch denotes we need the raw batch instead of mysql result set.

func (*Session) GetShowStmtType added in v0.6.0

func (ses *Session) GetShowStmtType() ShowStatementType

func (*Session) GetSql added in v0.5.0

func (ses *Session) GetSql() string

func (*Session) GetSqlHelper added in v0.8.0

func (ses *Session) GetSqlHelper() *SqlHelper

func (*Session) GetSqlOfStmt added in v1.0.0

func (ses *Session) GetSqlOfStmt() string

func (*Session) GetSqlSourceType added in v1.0.0

func (ses *Session) GetSqlSourceType() string

func (*Session) GetStmtId added in v1.0.0

func (ses *Session) GetStmtId() uuid.UUID

func (*Session) GetStmtType added in v1.0.0

func (ses *Session) GetStmtType() string

func (*Session) GetStorage added in v0.5.0

func (ses *Session) GetStorage() engine.Engine

func (*Session) GetSysVar added in v0.6.0

func (ses *Session) GetSysVar(name string) interface{}

func (*Session) GetSysVars added in v0.6.0

func (ses *Session) GetSysVars() map[string]interface{}

func (*Session) GetTempTableStorage added in v0.7.0

func (ses *Session) GetTempTableStorage() *memorystorage.Storage

func (*Session) GetTenantInfo added in v0.6.0

func (ses *Session) GetTenantInfo() *TenantInfo

func (*Session) GetTenantName added in v0.6.0

func (ses *Session) GetTenantName() string

func (*Session) GetTenantNameWithStmt added in v1.0.0

func (ses *Session) GetTenantNameWithStmt(stmt tree.Statement) string

GetTenantName return tenant name according to GetTenantInfo and stmt.

With stmt = nil, should be only called in TxnHandler.NewTxn, TxnHandler.CommitTxn, TxnHandler.RollbackTxn

func (*Session) GetTimeZone added in v0.6.0

func (ses *Session) GetTimeZone() *time.Location

func (*Session) GetTxnCompileCtx added in v0.5.0

func (ses *Session) GetTxnCompileCtx() *TxnCompilerContext

func (*Session) GetTxnHandler added in v0.5.0

func (ses *Session) GetTxnHandler() *TxnHandler

func (*Session) GetTxnId added in v1.0.0

func (ses *Session) GetTxnId() uuid.UUID

func (*Session) GetTxnInfo added in v1.1.0

func (ses *Session) GetTxnInfo() string

func (*Session) GetUUID added in v0.6.0

func (ses *Session) GetUUID() []byte

func (*Session) GetUUIDString added in v0.6.0

func (ses *Session) GetUUIDString() string

func (*Session) GetUserDefinedVar added in v0.5.0

func (ses *Session) GetUserDefinedVar(name string) (SystemVariableType, *UserDefinedVar, error)

GetUserDefinedVar gets value of the user defined variable

func (*Session) GetUserName added in v0.5.0

func (ses *Session) GetUserName() string

GetUserName returns the user_ame and the account_name

func (*Session) IfInitedTempEngine added in v0.7.0

func (ses *Session) IfInitedTempEngine() bool

func (*Session) InActiveMultiStmtTransaction added in v0.6.0

func (ses *Session) InActiveMultiStmtTransaction() bool

InActiveMultiStmtTransaction checks the session is in multi-statement transaction mode and there is an active transaction.

But sometimes, the session does not start an active transaction even if it is in multi- statement transaction mode.

For example: there is no active transaction. set autocommit = 0; select 1;

For example: there is an active transaction. begin; select 1;

When the statement starts the multi-statement transaction(select * from table), this flag won't be set until we access the tables.

func (*Session) InActiveTransaction added in v0.6.0

func (ses *Session) InActiveTransaction() bool

InActiveTransaction checks if it is in an active transaction.

func (*Session) InMultiStmtTransactionMode added in v0.6.0

func (ses *Session) InMultiStmtTransactionMode() bool

InMultiStmtTransactionMode checks the session is in multi-statement transaction mode. OPTION_NOT_AUTOCOMMIT: After the autocommit is off, the multi-statement transaction is started implicitly by the first statement of the transaction. OPTION_BEGIN: Whenever the autocommit is on or off, the multi-statement transaction is started explicitly by the BEGIN statement.

But it does not denote the transaction is active or not.

Cases | set Autocommit = 1/0 | BEGIN statement | --------------------------------------------------- Case1 1 Yes Case2 1 No Case3 0 Yes Case4 0 No ---------------------------------------------------

If it is Case1,Case3,Cass4, Then

InMultiStmtTransactionMode returns true.
Also, the bit SERVER_STATUS_IN_TRANS will be set.

If it is Case2, Then

InMultiStmtTransactionMode returns false

func (*Session) InheritSequenceData added in v0.8.0

func (ses *Session) InheritSequenceData(other *Session)

func (*Session) InitExportConfig added in v1.0.0

func (ses *Session) InitExportConfig(ep *tree.ExportParam)

func (*Session) InitGlobalSystemVariables added in v0.8.0

func (ses *Session) InitGlobalSystemVariables() error

func (*Session) InitSetSessionVar added in v0.8.0

func (ses *Session) InitSetSessionVar(name string, value interface{}) error

InitSetSessionVar sets the value of system variable in session when start a connection

func (*Session) InvalidatePrivilegeCache added in v0.6.0

func (ses *Session) InvalidatePrivilegeCache()

func (*Session) IsBackgroundSession added in v0.7.0

func (ses *Session) IsBackgroundSession() bool

func (*Session) IsDerivedStmt added in v1.0.0

func (ses *Session) IsDerivedStmt() bool

func (*Session) IsEntireEngine added in v0.7.0

func (ses *Session) IsEntireEngine() bool

func (*Session) Migrate added in v1.1.2

func (ses *Session) Migrate(req *query.MigrateConnToRequest) error

func (*Session) OptionBitsIsSet added in v0.6.0

func (ses *Session) OptionBitsIsSet(bit uint32) bool

func (*Session) RemovePrepareStmt added in v0.6.0

func (ses *Session) RemovePrepareStmt(name string)

func (*Session) ReplaceDerivedStmt added in v1.0.0

func (ses *Session) ReplaceDerivedStmt(b bool) bool

ReplaceDerivedStmt sets the derivedStmt and returns the previous value. if b is true, executing a derived statement.

func (*Session) ReplaceProtocol added in v0.8.0

func (ses *Session) ReplaceProtocol(proto Protocol) Protocol

func (*Session) ResetBlockIdx added in v0.7.0

func (ses *Session) ResetBlockIdx()

func (*Session) ResetPacketCounter added in v1.1.2

func (ses *Session) ResetPacketCounter()

func (*Session) SaveResultSet added in v0.8.0

func (ses *Session) SaveResultSet()

func (*Session) ServerStatusIsSet added in v0.6.0

func (ses *Session) ServerStatusIsSet(bit uint16) bool

func (*Session) SetAutoIncrCacheManager added in v0.8.0

func (ses *Session) SetAutoIncrCacheManager(aicm *defines.AutoIncrCacheManager)

The update version. Four function.

func (*Session) SetAutocommit added in v0.6.0

func (ses *Session) SetAutocommit(old, on bool) error

SetAutocommit sets the value of the system variable 'autocommit'.

The rule is that we can not execute the statement 'set parameter = value' in an active transaction whichever it is started by BEGIN or in 'set autocommit = 0;'.

func (*Session) SetCmd added in v0.6.0

func (ses *Session) SetCmd(cmd CommandType)

func (*Session) SetConnectContext added in v0.8.0

func (ses *Session) SetConnectContext(conn context.Context)

func (*Session) SetData added in v0.6.0

func (ses *Session) SetData(data [][]interface{})

func (*Session) SetDatabaseName added in v0.5.0

func (ses *Session) SetDatabaseName(db string)

func (*Session) SetFromRealUser added in v0.6.0

func (ses *Session) SetFromRealUser(b bool)

func (*Session) SetGlobalVar added in v0.5.0

func (ses *Session) SetGlobalVar(name string, value interface{}) error

SetGlobalVar sets the value of system variable in global. used by SET GLOBAL

func (*Session) SetLastInsertID added in v0.7.0

func (ses *Session) SetLastInsertID(num uint64)

func (*Session) SetLastStmtID added in v1.1.2

func (ses *Session) SetLastStmtID(id uint32)

func (*Session) SetMemPool added in v0.6.0

func (ses *Session) SetMemPool(mp *mpool.MPool)

func (*Session) SetMysqlResultSet added in v0.6.0

func (ses *Session) SetMysqlResultSet(mrs *MysqlResultSet)

func (*Session) SetMysqlResultSetOfBackgroundTask added in v0.8.0

func (ses *Session) SetMysqlResultSetOfBackgroundTask(mrs *MysqlResultSet)

func (*Session) SetNewResponse added in v0.8.1

func (ses *Session) SetNewResponse(category int, affectedRows uint64, cmd int, d interface{}, cwIndex, cwsLen int) *Response

func (*Session) SetOptionBits added in v0.6.0

func (ses *Session) SetOptionBits(bit uint32)

func (*Session) SetOutputCallback added in v0.6.0

func (ses *Session) SetOutputCallback(callback func(interface{}, *batch.Batch) error)

func (*Session) SetPrepareStmt added in v0.6.0

func (ses *Session) SetPrepareStmt(name string, prepareStmt *PrepareStmt) error

func (*Session) SetPrivilege added in v0.6.0

func (ses *Session) SetPrivilege(priv *privilege)

func (*Session) SetQueryEnd added in v1.0.1

func (ses *Session) SetQueryEnd(t time.Time)

func (*Session) SetQueryInExecute added in v1.0.0

func (ses *Session) SetQueryInExecute(b bool)

func (*Session) SetQueryInProgress added in v1.0.1

func (ses *Session) SetQueryInProgress(b bool)

func (*Session) SetQueryStart added in v1.0.0

func (ses *Session) SetQueryStart(t time.Time)

func (*Session) SetQueryType added in v1.0.0

func (ses *Session) SetQueryType(qt string)

func (*Session) SetRequestContext added in v0.6.0

func (ses *Session) SetRequestContext(reqCtx context.Context)

func (*Session) SetSeqLastValue added in v0.8.0

func (ses *Session) SetSeqLastValue(proc *process.Process)

func (*Session) SetServerStatus added in v0.6.0

func (ses *Session) SetServerStatus(bit uint16)

func (*Session) SetSessionRoutineStatus added in v1.0.0

func (ses *Session) SetSessionRoutineStatus(status string) error

func (*Session) SetSessionVar added in v0.5.0

func (ses *Session) SetSessionVar(name string, value interface{}) error

SetSessionVar sets the value of system variable in session

func (*Session) SetShowStmtType added in v0.6.0

func (ses *Session) SetShowStmtType(sst ShowStatementType)

func (*Session) SetSql added in v0.5.0

func (ses *Session) SetSql(sql string)

func (*Session) SetSqlOfStmt added in v1.0.0

func (ses *Session) SetSqlOfStmt(sot string)

func (*Session) SetSqlSourceType added in v1.0.0

func (ses *Session) SetSqlSourceType(st string)

func (*Session) SetStmtId added in v1.0.0

func (ses *Session) SetStmtId(id uuid.UUID)

func (*Session) SetStmtType added in v1.0.0

func (ses *Session) SetStmtType(st string)

func (*Session) SetSysVar added in v0.6.0

func (ses *Session) SetSysVar(name string, value interface{})

func (*Session) SetTStmt added in v1.0.0

func (ses *Session) SetTStmt(stmt *motrace.StatementInfo)

SetTStmt do set the Session.tStmt 1. init-set at RecordStatement, which means the statement is started. 2. reset at logStatementStringStatus, which means the statement is finished.

func (*Session) SetTempEngine added in v0.7.0

func (ses *Session) SetTempEngine(ctx context.Context, te engine.Engine) error

func (*Session) SetTempTableStorage added in v0.7.0

func (ses *Session) SetTempTableStorage(ck clock.Clock) (*metadata.TNService, error)

func (*Session) SetTenantInfo added in v0.6.0

func (ses *Session) SetTenantInfo(ti *TenantInfo)

func (*Session) SetTimeZone added in v0.6.0

func (ses *Session) SetTimeZone(loc *time.Location)

func (*Session) SetTxnId added in v1.0.0

func (ses *Session) SetTxnId(id []byte)

func (*Session) SetUserDefinedVar added in v0.5.0

func (ses *Session) SetUserDefinedVar(name string, value interface{}, sql string) error

SetUserDefinedVar sets the user defined variable to the value in session

func (*Session) SetUserName added in v0.5.0

func (ses *Session) SetUserName(uname string)

func (*Session) StatusSession added in v1.0.0

func (ses *Session) StatusSession() *status.Session

StatusSession implements the queryservice.Session interface.

func (*Session) TxnBegin added in v0.6.0

func (ses *Session) TxnBegin() error

TxnBegin begins a new transaction. It commits the current transaction implicitly.

func (*Session) TxnCommit added in v0.6.0

func (ses *Session) TxnCommit() error

TxnCommit commits the current transaction.

func (*Session) TxnCommitSingleStatement added in v0.6.0

func (ses *Session) TxnCommitSingleStatement(stmt tree.Statement) error

TxnCommitSingleStatement commits the single statement transaction.

Cases | set Autocommit = 1/0 | BEGIN statement | --------------------------------------------------- Case1 1 Yes Case2 1 No Case3 0 Yes Case4 0 No ---------------------------------------------------

If it is Case1,Case3,Cass4, Then

InMultiStmtTransactionMode returns true.
Also, the bit SERVER_STATUS_IN_TRANS will be set.

If it is Case2, Then

InMultiStmtTransactionMode returns false

func (*Session) TxnCreate added in v0.8.0

func (ses *Session) TxnCreate() (context.Context, TxnOperator, error)

TxnCreate creates the transaction implicitly and idempotent

When it is in multi-statement transaction mode:

Set SERVER_STATUS_IN_TRANS bit;
Starts a new transaction if there is none. Reuse the current transaction if there is one.

When it is not in single statement transaction mode:

Starts a new transaction if there is none. Reuse the current transaction if there is one.

func (*Session) TxnRollback added in v0.6.0

func (ses *Session) TxnRollback() error

TxnRollback rollbacks the current transaction.

func (*Session) TxnRollbackSingleStatement added in v0.6.0

func (ses *Session) TxnRollbackSingleStatement(stmt tree.Statement, inputErr error) error

TxnRollbackSingleStatement rollbacks the single statement transaction.

Cases | set Autocommit = 1/0 | BEGIN statement | --------------------------------------------------- Case1 1 Yes Case2 1 No Case3 0 Yes Case4 0 No ---------------------------------------------------

If it is Case1,Case3,Cass4, Then

InMultiStmtTransactionMode returns true.
Also, the bit SERVER_STATUS_IN_TRANS will be set.

If it is Case2, Then

InMultiStmtTransactionMode returns false

func (*Session) UpdateDebugString added in v0.8.0

func (ses *Session) UpdateDebugString()

type SessionAllocator added in v1.0.0

type SessionAllocator struct {
	// contains filtered or unexported fields
}

func NewSessionAllocator added in v1.0.0

func NewSessionAllocator(pu *config.ParameterUnit) *SessionAllocator

func (*SessionAllocator) Alloc added in v1.0.0

func (s *SessionAllocator) Alloc(capacity int) []byte

func (SessionAllocator) Free added in v1.0.0

func (s SessionAllocator) Free(bs []byte)

type SetDefaultRoleExecutor added in v0.6.0

type SetDefaultRoleExecutor struct {
	// contains filtered or unexported fields
}

type SetPasswordExecutor added in v0.6.0

type SetPasswordExecutor struct {
	// contains filtered or unexported fields
}

type SetRoleExecutor added in v0.6.0

type SetRoleExecutor struct {
	// contains filtered or unexported fields
}

func (*SetRoleExecutor) ExecuteImpl added in v0.6.0

func (sre *SetRoleExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type SetVarExecutor added in v0.6.0

type SetVarExecutor struct {
	// contains filtered or unexported fields
}

func (*SetVarExecutor) ExecuteImpl added in v0.6.0

func (sve *SetVarExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type ShowColumnsExecutor added in v0.6.0

type ShowColumnsExecutor struct {
	// contains filtered or unexported fields
}

func (ShowColumnsExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowColumnsExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowColumnsExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowColumnsExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

func (*ShowColumnsExecutor) Setup added in v0.6.0

func (sec *ShowColumnsExecutor) Setup(ctx context.Context, ses *Session) error

type ShowCreateDatabaseExecutor added in v0.6.0

type ShowCreateDatabaseExecutor struct {
	// contains filtered or unexported fields
}

func (ShowCreateDatabaseExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowCreateDatabaseExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowCreateDatabaseExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowCreateDatabaseExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowCreateTableExecutor added in v0.6.0

type ShowCreateTableExecutor struct {
	// contains filtered or unexported fields
}

func (ShowCreateTableExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowCreateTableExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowCreateTableExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowCreateTableExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowCreateViewExecutor added in v0.6.0

type ShowCreateViewExecutor struct {
	// contains filtered or unexported fields
}

func (ShowCreateViewExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowCreateViewExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowCreateViewExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowCreateViewExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowDatabasesExecutor added in v0.6.0

type ShowDatabasesExecutor struct {
	// contains filtered or unexported fields
}

func (ShowDatabasesExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowDatabasesExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowDatabasesExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowDatabasesExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowErrorsExecutor added in v0.6.0

type ShowErrorsExecutor struct {
	// contains filtered or unexported fields
}

func (*ShowErrorsExecutor) ExecuteImpl added in v0.6.0

func (see *ShowErrorsExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

func (ShowErrorsExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowErrorsExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowErrorsExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowErrorsExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowGrantsExecutor added in v0.6.0

type ShowGrantsExecutor struct {
	// contains filtered or unexported fields
}

func (ShowGrantsExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowGrantsExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowGrantsExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowGrantsExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowIndexExecutor added in v0.6.0

type ShowIndexExecutor struct {
	// contains filtered or unexported fields
}

func (ShowIndexExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowIndexExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowIndexExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowIndexExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowProcessListExecutor added in v0.6.0

type ShowProcessListExecutor struct {
	// contains filtered or unexported fields
}

func (ShowProcessListExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowProcessListExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowProcessListExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowProcessListExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowSequencesExecutor added in v0.8.0

type ShowSequencesExecutor struct {
	// contains filtered or unexported fields
}

func (ShowSequencesExecutor) ResponseAfterExec added in v0.8.0

func (rsse ShowSequencesExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowSequencesExecutor) ResponseBeforeExec added in v0.8.0

func (rsse ShowSequencesExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowStatementType added in v0.5.0

type ShowStatementType int
const (
	NotShowStatement ShowStatementType = 0
	ShowTableStatus  ShowStatementType = 1
)

type ShowStatusExecutor added in v0.6.0

type ShowStatusExecutor struct {
	// contains filtered or unexported fields
}

func (ShowStatusExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowStatusExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowStatusExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowStatusExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowTableStatusExecutor added in v0.6.0

type ShowTableStatusExecutor struct {
	// contains filtered or unexported fields
}

func (ShowTableStatusExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowTableStatusExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowTableStatusExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowTableStatusExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

func (*ShowTableStatusExecutor) Setup added in v0.6.0

func (sec *ShowTableStatusExecutor) Setup(ctx context.Context, ses *Session) error

type ShowTablesExecutor added in v0.6.0

type ShowTablesExecutor struct {
	// contains filtered or unexported fields
}

func (ShowTablesExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowTablesExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowTablesExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowTablesExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowTargetExecutor added in v0.6.0

type ShowTargetExecutor struct {
	// contains filtered or unexported fields
}

func (ShowTargetExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowTargetExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowTargetExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowTargetExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowVariablesExecutor added in v0.6.0

type ShowVariablesExecutor struct {
	// contains filtered or unexported fields
}

func (*ShowVariablesExecutor) ExecuteImpl added in v0.6.0

func (sve *ShowVariablesExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

func (ShowVariablesExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowVariablesExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowVariablesExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowVariablesExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type ShowWarningsExecutor added in v0.6.0

type ShowWarningsExecutor struct {
	// contains filtered or unexported fields
}

func (*ShowWarningsExecutor) ExecuteImpl added in v0.6.0

func (swe *ShowWarningsExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

func (ShowWarningsExecutor) ResponseAfterExec added in v0.6.0

func (rsse ShowWarningsExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ShowWarningsExecutor) ResponseBeforeExec added in v0.6.0

func (rsse ShowWarningsExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

type SpStatus added in v0.8.0

type SpStatus int
const (
	SpOk        SpStatus = 0
	SpNotOk     SpStatus = 1
	SpBranchHit SpStatus = 2
	SpLeaveLoop SpStatus = 3
	SpIterLoop  SpStatus = 4
)

type SqlHelper added in v0.8.0

type SqlHelper struct {
	// contains filtered or unexported fields
}

func (*SqlHelper) ExecSql added in v0.8.0

func (sh *SqlHelper) ExecSql(sql string) (ret []interface{}, err error)

Made for sequence func. nextval, setval.

func (*SqlHelper) GetCompilerContext added in v0.8.0

func (sh *SqlHelper) GetCompilerContext() any

type StmtExecutor added in v0.6.0

type StmtExecutor interface {
	ComputationWrapper

	// GetStatus returns the execution status
	GetStatus() stmtExecStatus

	// SetStatus sets the execution status
	SetStatus(err error)

	// Setup does preparation
	Setup(ctx context.Context, ses *Session) error

	// VerifyPrivilege ensures the user can execute this statement
	VerifyPrivilege(ctx context.Context, ses *Session) error

	// VerifyTxn checks the restriction of the transaction
	VerifyTxn(ctx context.Context, ses *Session) error

	// ResponseBeforeExec responses the client before the execution starts
	ResponseBeforeExec(ctx context.Context, ses *Session) error

	// ExecuteImpl runs the concrete logic of the statement. every statement has its implementation
	ExecuteImpl(ctx context.Context, ses *Session) error

	// ResponseAfterExec responses the client after the execution ends
	ResponseAfterExec(ctx context.Context, ses *Session) error

	// CommitOrRollbackTxn commits or rollbacks the transaction based on the status
	CommitOrRollbackTxn(ctx context.Context, ses *Session) error

	// Close does clean
	Close(ctx context.Context, ses *Session) error
}

StmtExecutor represents the single statement execution. it is also independent of the protocol

type SystemVariable added in v0.5.0

type SystemVariable struct {
	Name string

	// scope of the system variable includes Global,Session,Both
	Scope Scope

	// can be changed during runtime
	Dynamic bool

	//can be set for single query by SET_VAR()
	SetVarHintApplies bool

	Type SystemVariableType

	Default interface{}

	UpdateSessVar func(*Session, map[string]interface{}, string, interface{}) error
}

func (SystemVariable) GetDefault added in v0.5.0

func (sv SystemVariable) GetDefault() interface{}

func (SystemVariable) GetDynamic added in v0.5.0

func (sv SystemVariable) GetDynamic() bool

func (SystemVariable) GetName added in v0.5.0

func (sv SystemVariable) GetName() string

func (SystemVariable) GetScope added in v0.5.0

func (sv SystemVariable) GetScope() Scope

func (SystemVariable) GetSetVarHintApplies added in v0.5.0

func (sv SystemVariable) GetSetVarHintApplies() bool

func (SystemVariable) GetType added in v0.5.0

func (sv SystemVariable) GetType() SystemVariableType

type SystemVariableBoolType added in v0.5.0

type SystemVariableBoolType struct {
	// contains filtered or unexported fields
}

func InitSystemVariableBoolType added in v0.5.0

func InitSystemVariableBoolType(name string) SystemVariableBoolType

func (SystemVariableBoolType) Convert added in v0.5.0

func (svbt SystemVariableBoolType) Convert(value interface{}) (interface{}, error)

func (SystemVariableBoolType) ConvertFromString added in v0.8.0

func (svbt SystemVariableBoolType) ConvertFromString(value string) (interface{}, error)

func (SystemVariableBoolType) IsTrue added in v0.6.0

func (svbt SystemVariableBoolType) IsTrue(v interface{}) bool

func (SystemVariableBoolType) MysqlType added in v0.5.0

func (svbt SystemVariableBoolType) MysqlType() defines.MysqlType

func (SystemVariableBoolType) String added in v0.5.0

func (svbt SystemVariableBoolType) String() string

func (SystemVariableBoolType) Type added in v0.5.0

func (svbt SystemVariableBoolType) Type() types.T

func (SystemVariableBoolType) Zero added in v0.5.0

func (svbt SystemVariableBoolType) Zero() interface{}

type SystemVariableDoubleType added in v0.5.0

type SystemVariableDoubleType struct {
	// contains filtered or unexported fields
}

func (SystemVariableDoubleType) Convert added in v0.5.0

func (svdt SystemVariableDoubleType) Convert(value interface{}) (interface{}, error)

func (SystemVariableDoubleType) ConvertFromString added in v0.8.0

func (svdt SystemVariableDoubleType) ConvertFromString(value string) (interface{}, error)

func (SystemVariableDoubleType) MysqlType added in v0.5.0

func (svdt SystemVariableDoubleType) MysqlType() defines.MysqlType

func (SystemVariableDoubleType) String added in v0.5.0

func (svdt SystemVariableDoubleType) String() string

func (SystemVariableDoubleType) Type added in v0.5.0

func (svdt SystemVariableDoubleType) Type() types.T

func (SystemVariableDoubleType) Zero added in v0.5.0

func (svdt SystemVariableDoubleType) Zero() interface{}

type SystemVariableEnumType added in v0.5.0

type SystemVariableEnumType struct {
	// contains filtered or unexported fields
}

func InitSystemSystemEnumType added in v0.5.0

func InitSystemSystemEnumType(name string, values ...string) SystemVariableEnumType

func (SystemVariableEnumType) Convert added in v0.5.0

func (svet SystemVariableEnumType) Convert(value interface{}) (interface{}, error)

func (SystemVariableEnumType) ConvertFromString added in v0.8.0

func (svet SystemVariableEnumType) ConvertFromString(value string) (interface{}, error)

func (SystemVariableEnumType) MysqlType added in v0.5.0

func (svet SystemVariableEnumType) MysqlType() defines.MysqlType

func (SystemVariableEnumType) String added in v0.5.0

func (svet SystemVariableEnumType) String() string

func (SystemVariableEnumType) Type added in v0.5.0

func (svet SystemVariableEnumType) Type() types.T

func (SystemVariableEnumType) Zero added in v0.5.0

func (svet SystemVariableEnumType) Zero() interface{}

type SystemVariableIntType added in v0.5.0

type SystemVariableIntType struct {
	// contains filtered or unexported fields
}

func InitSystemVariableIntType added in v0.5.0

func InitSystemVariableIntType(name string, minimum, maximum int64, maybeMinusOne bool) SystemVariableIntType

func (SystemVariableIntType) Convert added in v0.5.0

func (svit SystemVariableIntType) Convert(value interface{}) (interface{}, error)

func (SystemVariableIntType) ConvertFromString added in v0.8.0

func (svit SystemVariableIntType) ConvertFromString(value string) (interface{}, error)

func (SystemVariableIntType) MysqlType added in v0.5.0

func (svit SystemVariableIntType) MysqlType() defines.MysqlType

func (SystemVariableIntType) String added in v0.5.0

func (svit SystemVariableIntType) String() string

func (SystemVariableIntType) Type added in v0.5.0

func (svit SystemVariableIntType) Type() types.T

func (SystemVariableIntType) Zero added in v0.5.0

func (svit SystemVariableIntType) Zero() interface{}

type SystemVariableNullType added in v0.5.0

type SystemVariableNullType struct {
}

func (SystemVariableNullType) Convert added in v0.5.0

func (svnt SystemVariableNullType) Convert(value interface{}) (interface{}, error)

func (SystemVariableNullType) ConvertFromString added in v0.8.0

func (svnt SystemVariableNullType) ConvertFromString(value string) (interface{}, error)

func (SystemVariableNullType) MysqlType added in v0.5.0

func (svnt SystemVariableNullType) MysqlType() defines.MysqlType

func (SystemVariableNullType) String added in v0.5.0

func (svnt SystemVariableNullType) String() string

func (SystemVariableNullType) Type added in v0.5.0

func (svnt SystemVariableNullType) Type() types.T

func (SystemVariableNullType) Zero added in v0.5.0

func (svnt SystemVariableNullType) Zero() interface{}

type SystemVariableSetType added in v0.5.0

type SystemVariableSetType struct {
	// contains filtered or unexported fields
}

func InitSystemVariableSetType added in v0.5.0

func InitSystemVariableSetType(name string, values ...string) SystemVariableSetType

func (SystemVariableSetType) Convert added in v0.5.0

func (svst SystemVariableSetType) Convert(value interface{}) (interface{}, error)

func (SystemVariableSetType) ConvertFromString added in v0.8.0

func (svst SystemVariableSetType) ConvertFromString(value string) (interface{}, error)

func (SystemVariableSetType) MysqlType added in v0.5.0

func (svst SystemVariableSetType) MysqlType() defines.MysqlType

func (SystemVariableSetType) String added in v0.5.0

func (svst SystemVariableSetType) String() string

func (SystemVariableSetType) Type added in v0.5.0

func (svst SystemVariableSetType) Type() types.T

func (SystemVariableSetType) Values added in v0.5.0

func (svst SystemVariableSetType) Values() []string

func (SystemVariableSetType) Zero added in v0.5.0

func (svst SystemVariableSetType) Zero() interface{}

type SystemVariableStringType added in v0.5.0

type SystemVariableStringType struct {
	// contains filtered or unexported fields
}

func InitSystemVariableStringType added in v0.5.0

func InitSystemVariableStringType(name string) SystemVariableStringType

func (SystemVariableStringType) Convert added in v0.5.0

func (svst SystemVariableStringType) Convert(value interface{}) (interface{}, error)

func (SystemVariableStringType) ConvertFromString added in v0.8.0

func (svst SystemVariableStringType) ConvertFromString(value string) (interface{}, error)

func (SystemVariableStringType) MysqlType added in v0.5.0

func (svst SystemVariableStringType) MysqlType() defines.MysqlType

func (SystemVariableStringType) String added in v0.5.0

func (svst SystemVariableStringType) String() string

func (SystemVariableStringType) Type added in v0.5.0

func (svst SystemVariableStringType) Type() types.T

func (SystemVariableStringType) Zero added in v0.5.0

func (svst SystemVariableStringType) Zero() interface{}

type SystemVariableType added in v0.5.0

type SystemVariableType interface {
	fmt.Stringer

	// Convert the value to another value of the type
	Convert(value interface{}) (interface{}, error)

	// Type gets the type in the computation engine
	Type() types.T

	// MysqlType gets the mysql type
	MysqlType() defines.MysqlType

	// Zero gets the zero value for the type
	Zero() interface{}

	// Convert the value from string to another value of the type
	ConvertFromString(value string) (interface{}, error)
}

type SystemVariableUintType added in v0.5.0

type SystemVariableUintType struct {
	// contains filtered or unexported fields
}

func InitSystemVariableUintType added in v0.5.0

func InitSystemVariableUintType(name string, minimum, maximum uint64) SystemVariableUintType

func (SystemVariableUintType) Convert added in v0.5.0

func (svut SystemVariableUintType) Convert(value interface{}) (interface{}, error)

func (SystemVariableUintType) ConvertFromString added in v0.8.0

func (svut SystemVariableUintType) ConvertFromString(value string) (interface{}, error)

func (SystemVariableUintType) MysqlType added in v0.5.0

func (svut SystemVariableUintType) MysqlType() defines.MysqlType

func (SystemVariableUintType) String added in v0.5.0

func (svut SystemVariableUintType) String() string

func (SystemVariableUintType) Type added in v0.5.0

func (svut SystemVariableUintType) Type() types.T

func (SystemVariableUintType) Zero added in v0.5.0

func (svut SystemVariableUintType) Zero() interface{}

type TS added in v1.1.0

type TS string
const (
	// Created
	TSCreatedStart TS = "TSCreatedStart"
	TSCreatedEnd   TS = "TSCreatedEnd"

	// Handler
	TSEstablishStart  TS = "TSEstablishStart"
	TSEstablishEnd    TS = "TSEstablishEnd"
	TSUpgradeTLSStart TS = "TSUpgradeTLSStart"
	TSUpgradeTLSEnd   TS = "TSUpgradeTLSEnd"

	// mysql protocol
	TSAuthenticateStart  TS = "TSAuthenticateStart"
	TSAuthenticateEnd    TS = "TSAuthenticateEnd"
	TSSendErrPacketStart TS = "TSSendErrPacketStart"
	TSSendErrPacketEnd   TS = "TSSendErrPacketEnd"
	TSSendOKPacketStart  TS = "TSSendOKPacketStart"
	TSSendOKPacketEnd    TS = "TSSendOKPacketEnd"

	// session
	TSCheckTenantStart      TS = "TSCheckTenantStart"
	TSCheckTenantEnd        TS = "TSCheckTenantEnd"
	TSCheckUserStart        TS = "TSCheckUserStart"
	TSCheckUserEnd          TS = "TSCheckUserEnd"
	TSCheckRoleStart        TS = "TSCheckRoleStart"
	TSCheckRoleEnd          TS = "TSCheckRoleEnd"
	TSCheckDbNameStart      TS = "TSCheckDbNameStart"
	TSCheckDbNameEnd        TS = "TSCheckDbNameEnd"
	TSInitGlobalSysVarStart TS = "TSInitGlobalSysVarStart"
	TSInitGlobalSysVarEnd   TS = "TSInitGlobalSysVarEnd"
)

type TableInfo added in v0.5.0

type TableInfo interface {
	GetColumns()
}

type TableInfoCache

type TableInfoCache struct {
	// contains filtered or unexported fields
}

TableInfoCache tableInfos of a database

type TenantInfo added in v0.6.0

type TenantInfo struct {
	Tenant      string
	User        string
	DefaultRole string

	TenantID      uint32
	UserID        uint32
	DefaultRoleID uint32
	// contains filtered or unexported fields
}

func GetTenantInfo added in v0.6.0

func GetTenantInfo(ctx context.Context, userInput string) (*TenantInfo, error)

GetTenantInfo extract tenant info from the input of the user. * The format of the user 1. tenant:user:role 2. tenant:user 3. user

a new format: 1. tenant#user#role 2. tenant#user

func (*TenantInfo) GetDefaultRole added in v0.6.0

func (ti *TenantInfo) GetDefaultRole() string

func (*TenantInfo) GetDefaultRoleID added in v0.6.0

func (ti *TenantInfo) GetDefaultRoleID() uint32

func (*TenantInfo) GetTenant added in v0.6.0

func (ti *TenantInfo) GetTenant() string

func (*TenantInfo) GetTenantID added in v0.6.0

func (ti *TenantInfo) GetTenantID() uint32

func (*TenantInfo) GetUseSecondaryRole added in v0.6.0

func (ti *TenantInfo) GetUseSecondaryRole() bool

func (*TenantInfo) GetUser added in v0.6.0

func (ti *TenantInfo) GetUser() string

func (*TenantInfo) GetUserID added in v0.6.0

func (ti *TenantInfo) GetUserID() uint32

func (*TenantInfo) GetVersion added in v0.7.0

func (ti *TenantInfo) GetVersion() string

func (*TenantInfo) HasDefaultRole added in v0.6.0

func (ti *TenantInfo) HasDefaultRole() bool

func (*TenantInfo) IsAccountAdminRole added in v0.6.0

func (ti *TenantInfo) IsAccountAdminRole() bool

func (*TenantInfo) IsAdminRole added in v0.6.0

func (ti *TenantInfo) IsAdminRole() bool

func (*TenantInfo) IsDefaultRole added in v0.6.0

func (ti *TenantInfo) IsDefaultRole() bool

func (*TenantInfo) IsMoAdminRole added in v0.6.0

func (ti *TenantInfo) IsMoAdminRole() bool

func (*TenantInfo) IsNameOfAdminRoles added in v0.6.0

func (ti *TenantInfo) IsNameOfAdminRoles(name string) bool

func (*TenantInfo) IsSysTenant added in v0.6.0

func (ti *TenantInfo) IsSysTenant() bool

func (*TenantInfo) SetDefaultRole added in v0.6.0

func (ti *TenantInfo) SetDefaultRole(r string)

func (*TenantInfo) SetDefaultRoleID added in v0.6.0

func (ti *TenantInfo) SetDefaultRoleID(id uint32)

func (*TenantInfo) SetTenantID added in v0.6.0

func (ti *TenantInfo) SetTenantID(id uint32)

func (*TenantInfo) SetUseSecondaryRole added in v0.6.0

func (ti *TenantInfo) SetUseSecondaryRole(v bool)

func (*TenantInfo) SetUser added in v0.8.0

func (ti *TenantInfo) SetUser(user string)

func (*TenantInfo) SetUserID added in v0.6.0

func (ti *TenantInfo) SetUserID(id uint32)

func (*TenantInfo) SetVersion added in v0.7.0

func (ti *TenantInfo) SetVersion(version string)

func (*TenantInfo) String added in v0.6.0

func (ti *TenantInfo) String() string

type Timeout

type Timeout struct {
	// contains filtered or unexported fields
}

func NewTimeout

func NewTimeout(tg time.Duration, autoUpdateWhenChecked bool) *Timeout

func (*Timeout) UpdateTime

func (t *Timeout) UpdateTime(tn time.Time)

type TruncateTableExecutor added in v0.6.0

type TruncateTableExecutor struct {
	// contains filtered or unexported fields
}

type TxnClient added in v0.6.0

type TxnClient = client.TxnClient

type TxnCompilerContext added in v0.5.0

type TxnCompilerContext struct {
	// contains filtered or unexported fields
}

func InitTxnCompilerContext added in v0.5.0

func InitTxnCompilerContext(txn *TxnHandler, db string) *TxnCompilerContext

func (*TxnCompilerContext) CheckSubscriptionValid added in v0.8.0

func (tcc *TxnCompilerContext) CheckSubscriptionValid(subName, accName, pubName string) error

func (*TxnCompilerContext) DatabaseExists added in v0.5.0

func (tcc *TxnCompilerContext) DatabaseExists(name string) bool

func (*TxnCompilerContext) DefaultDatabase added in v0.5.0

func (tcc *TxnCompilerContext) DefaultDatabase() string

func (*TxnCompilerContext) GetAccountId added in v0.6.0

func (tcc *TxnCompilerContext) GetAccountId() (uint32, error)

func (*TxnCompilerContext) GetBuildingAlterView added in v0.7.0

func (tcc *TxnCompilerContext) GetBuildingAlterView() (bool, string, string)

func (*TxnCompilerContext) GetContext added in v0.7.0

func (tcc *TxnCompilerContext) GetContext() context.Context

func (*TxnCompilerContext) GetDatabaseId added in v0.8.0

func (tcc *TxnCompilerContext) GetDatabaseId(dbName string) (uint64, error)

func (*TxnCompilerContext) GetPrimaryKeyDef added in v0.5.0

func (tcc *TxnCompilerContext) GetPrimaryKeyDef(dbName string, tableName string) []*plan2.ColDef

func (*TxnCompilerContext) GetProcess added in v0.7.0

func (tcc *TxnCompilerContext) GetProcess() *process.Process

func (*TxnCompilerContext) GetQueryResultMeta added in v0.7.0

func (tcc *TxnCompilerContext) GetQueryResultMeta(uuid string) ([]*plan.ColDef, string, error)

func (*TxnCompilerContext) GetQueryingSubscription added in v0.8.0

func (tcc *TxnCompilerContext) GetQueryingSubscription() *plan.SubscriptionMeta

func (*TxnCompilerContext) GetRootSql added in v0.6.0

func (tcc *TxnCompilerContext) GetRootSql() string

func (*TxnCompilerContext) GetSession added in v0.6.0

func (tcc *TxnCompilerContext) GetSession() *Session

func (*TxnCompilerContext) GetStatsCache added in v0.8.0

func (tcc *TxnCompilerContext) GetStatsCache() *plan2.StatsCache

func (*TxnCompilerContext) GetSubscriptionMeta added in v0.8.0

func (tcc *TxnCompilerContext) GetSubscriptionMeta(dbName string) (*plan.SubscriptionMeta, error)

func (*TxnCompilerContext) GetTxnHandler added in v0.6.0

func (tcc *TxnCompilerContext) GetTxnHandler() *TxnHandler

func (*TxnCompilerContext) GetUserName added in v0.6.0

func (tcc *TxnCompilerContext) GetUserName() string

func (*TxnCompilerContext) IsPublishing added in v0.8.0

func (tcc *TxnCompilerContext) IsPublishing(dbName string) (bool, error)

func (*TxnCompilerContext) Resolve added in v0.5.0

func (tcc *TxnCompilerContext) Resolve(dbName string, tableName string) (*plan2.ObjectRef, *plan2.TableDef)

func (*TxnCompilerContext) ResolveAccountIds added in v0.7.0

func (tcc *TxnCompilerContext) ResolveAccountIds(accountNames []string) (accountIds []uint32, err error)

func (*TxnCompilerContext) ResolveById added in v0.7.0

func (tcc *TxnCompilerContext) ResolveById(tableId uint64) (*plan2.ObjectRef, *plan2.TableDef)

func (*TxnCompilerContext) ResolveUdf added in v0.8.0

func (tcc *TxnCompilerContext) ResolveUdf(name string, args []*plan.Expr) (udf *function.Udf, err error)

func (*TxnCompilerContext) ResolveVariable added in v0.5.0

func (tcc *TxnCompilerContext) ResolveVariable(varName string, isSystemVar, isGlobalVar bool) (interface{}, error)

func (*TxnCompilerContext) SetBuildingAlterView added in v0.7.0

func (tcc *TxnCompilerContext) SetBuildingAlterView(yesOrNo bool, dbName, viewName string)

func (*TxnCompilerContext) SetDatabase added in v0.5.0

func (tcc *TxnCompilerContext) SetDatabase(db string)

func (*TxnCompilerContext) SetProcess added in v0.7.0

func (tcc *TxnCompilerContext) SetProcess(proc *process.Process)

func (*TxnCompilerContext) SetQueryingSubscription added in v0.8.0

func (tcc *TxnCompilerContext) SetQueryingSubscription(meta *plan.SubscriptionMeta)

func (*TxnCompilerContext) SetSession added in v0.5.0

func (tcc *TxnCompilerContext) SetSession(ses *Session)

func (*TxnCompilerContext) Stats added in v0.7.0

func (tcc *TxnCompilerContext) Stats(obj *plan2.ObjectRef) bool

type TxnComputationWrapper added in v0.5.0

type TxnComputationWrapper struct {
	// contains filtered or unexported fields
}

func InitTxnComputationWrapper added in v0.5.0

func InitTxnComputationWrapper(ses *Session, stmt tree.Statement, proc *process.Process) *TxnComputationWrapper

func (*TxnComputationWrapper) Compile added in v0.5.0

func (cwft *TxnComputationWrapper) Compile(requestCtx context.Context, u interface{}, fill func(interface{}, *batch.Batch) error) (interface{}, error)

func (*TxnComputationWrapper) Free added in v1.1.0

func (cwft *TxnComputationWrapper) Free()

func (*TxnComputationWrapper) GetAst added in v0.5.0

func (cwft *TxnComputationWrapper) GetAst() tree.Statement

func (*TxnComputationWrapper) GetClock added in v0.7.0

func (cwft *TxnComputationWrapper) GetClock() clock.Clock

func (*TxnComputationWrapper) GetColumns added in v0.5.0

func (cwft *TxnComputationWrapper) GetColumns() ([]interface{}, error)

func (*TxnComputationWrapper) GetLoadTag added in v0.6.0

func (cwft *TxnComputationWrapper) GetLoadTag() bool

func (*TxnComputationWrapper) GetProcess added in v0.6.0

func (cwft *TxnComputationWrapper) GetProcess() *process.Process

func (*TxnComputationWrapper) GetServerStatus added in v0.8.1

func (cwft *TxnComputationWrapper) GetServerStatus() uint16

func (*TxnComputationWrapper) GetUUID added in v0.6.0

func (cwft *TxnComputationWrapper) GetUUID() []byte

func (*TxnComputationWrapper) RecordExecPlan added in v0.6.0

func (cwft *TxnComputationWrapper) RecordExecPlan(ctx context.Context) error

func (*TxnComputationWrapper) Run added in v0.5.0

func (cwft *TxnComputationWrapper) Run(ts uint64) (*util2.RunResult, error)

type TxnHandler added in v0.5.0

type TxnHandler struct {
	// contains filtered or unexported fields
}

func InitTxnHandler added in v0.5.0

func InitTxnHandler(storage engine.Engine, txnClient TxnClient, txnCtx context.Context, txnOp TxnOperator) *TxnHandler

func (*TxnHandler) AttachTempStorageToTxnCtx added in v0.8.0

func (th *TxnHandler) AttachTempStorageToTxnCtx() error

func (*TxnHandler) CommitTxn added in v0.6.0

func (th *TxnHandler) CommitTxn() error

func (*TxnHandler) GetSession added in v0.6.0

func (th *TxnHandler) GetSession() *Session

func (*TxnHandler) GetStorage added in v0.5.0

func (th *TxnHandler) GetStorage() engine.Engine

func (*TxnHandler) GetTxn added in v0.5.0

func (th *TxnHandler) GetTxn() (context.Context, TxnOperator, error)

func (*TxnHandler) GetTxnClient added in v0.6.0

func (th *TxnHandler) GetTxnClient() TxnClient

func (*TxnHandler) GetTxnOperator added in v0.6.0

func (th *TxnHandler) GetTxnOperator() (context.Context, TxnOperator, error)

func (*TxnHandler) IsShareTxn added in v0.8.0

func (th *TxnHandler) IsShareTxn() bool

func (*TxnHandler) IsValidTxnOperator added in v0.8.0

func (th *TxnHandler) IsValidTxnOperator() bool

IsValidTxnOperator checks the txn operator is valid

func (*TxnHandler) NewTxn added in v0.6.0

func (th *TxnHandler) NewTxn() (context.Context, TxnOperator, error)

NewTxn commits the old transaction if it existed. Then it creates the new transaction by Engin.New.

func (*TxnHandler) NewTxnOperator added in v0.8.0

func (th *TxnHandler) NewTxnOperator() (context.Context, TxnOperator, error)

NewTxnOperator creates a new txn operator using TxnClient

func (*TxnHandler) RollbackTxn added in v0.6.0

func (th *TxnHandler) RollbackTxn() error

func (*TxnHandler) SetSession added in v0.6.0

func (th *TxnHandler) SetSession(ses *Session)

func (*TxnHandler) SetTempEngine added in v0.7.0

func (th *TxnHandler) SetTempEngine(te engine.Engine)

we don't need to lock. TxnHandler is holded by one session.

func (*TxnHandler) SetTxnOperatorInvalid added in v0.8.0

func (th *TxnHandler) SetTxnOperatorInvalid()

type TxnOperator added in v0.6.0

type TxnOperator = client.TxnOperator

type TxnOption added in v0.6.0

type TxnOption = client.TxnOption

type UpdateExecutor added in v0.6.0

type UpdateExecutor struct {
	// contains filtered or unexported fields
}

func (*UpdateExecutor) Setup added in v0.6.0

func (de *UpdateExecutor) Setup(ctx context.Context, ses *Session) error

type UseExecutor added in v0.6.0

type UseExecutor struct {
	// contains filtered or unexported fields
}

func (*UseExecutor) ExecuteImpl added in v0.6.0

func (ue *UseExecutor) ExecuteImpl(ctx context.Context, ses *Session) error

type UserDefinedVar added in v1.0.2

type UserDefinedVar struct {
	Value interface{}
	Sql   string
}

type UserInput added in v0.8.0

type UserInput struct {
	// contains filtered or unexported fields
}

UserInput normally, just use the sql. for some special statement, like 'set_var', we need to use the stmt. if the stmt is not nil, we neglect the sql.

type ValuesStmtExecutor added in v0.7.0

type ValuesStmtExecutor struct {
	// contains filtered or unexported fields
}

func (ValuesStmtExecutor) ResponseAfterExec added in v0.7.0

func (rsse ValuesStmtExecutor) ResponseAfterExec(ctx context.Context, ses *Session) error

func (ValuesStmtExecutor) ResponseBeforeExec added in v0.7.0

func (rsse ValuesStmtExecutor) ResponseBeforeExec(ctx context.Context, ses *Session) error

Directories

Path Synopsis
Package mock_frontend is a generated GoMock package.
Package mock_frontend is a generated GoMock package.

Jump to

Keyboard shortcuts

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