Documentation ¶
Overview ¶
Package ast is the abstract syntax tree parsed from a SQL statement by parser. It can be analysed and transformed by optimizer.
Index ¶
- Constants
- Variables
- func HasAggFlag(expr ExprNode) bool
- func IsReadOnly(node Node) bool
- func SetFlag(n Node)
- type AdminStmt
- type AdminStmtType
- type AggregateFuncExpr
- type AlterTableSpec
- type AlterTableStmt
- type AlterTableType
- type AlterUserStmt
- type AnalyzeTableStmt
- type Assignment
- type AuthOption
- type BeginStmt
- type BetweenExpr
- type BinaryOperationExpr
- func (n *BinaryOperationExpr) Accept(v Visitor) (Node, bool)
- func (n *BinaryOperationExpr) Format(w io.Writer)
- func (en *BinaryOperationExpr) GetFlag() uint64
- func (en *BinaryOperationExpr) GetType() *types.FieldType
- func (en *BinaryOperationExpr) SetFlag(flag uint64)
- func (en *BinaryOperationExpr) SetType(tp *types.FieldType)
- type BinlogStmt
- type BoundType
- type ByItem
- type CaseExpr
- type CastFunctionType
- type CharsetOpt
- type ColumnDef
- type ColumnName
- type ColumnNameExpr
- type ColumnOption
- type ColumnOptionType
- type ColumnPosition
- type ColumnPositionType
- type CommitStmt
- type CompareSubqueryExpr
- func (n *CompareSubqueryExpr) Accept(v Visitor) (Node, bool)
- func (n *CompareSubqueryExpr) Format(w io.Writer)
- func (en *CompareSubqueryExpr) GetFlag() uint64
- func (en *CompareSubqueryExpr) GetType() *types.FieldType
- func (en *CompareSubqueryExpr) SetFlag(flag uint64)
- func (en *CompareSubqueryExpr) SetType(tp *types.FieldType)
- type Constraint
- type ConstraintType
- type CreateDatabaseStmt
- type CreateIndexStmt
- type CreateTableStmt
- type CreateUserStmt
- type CreateViewStmt
- type DDLNode
- type DMLNode
- type DatabaseOption
- type DatabaseOptionType
- type DateArithType
- type DeallocateStmt
- type DefaultExpr
- type DeleteStmt
- type DeleteTableList
- type DoStmt
- type DropDatabaseStmt
- type DropIndexStmt
- type DropStatsStmt
- type DropTableStmt
- type DropUserStmt
- type ExecuteStmt
- type ExistsSubqueryExpr
- func (n *ExistsSubqueryExpr) Accept(v Visitor) (Node, bool)
- func (n *ExistsSubqueryExpr) Format(w io.Writer)
- func (en *ExistsSubqueryExpr) GetFlag() uint64
- func (en *ExistsSubqueryExpr) GetType() *types.FieldType
- func (en *ExistsSubqueryExpr) SetFlag(flag uint64)
- func (en *ExistsSubqueryExpr) SetType(tp *types.FieldType)
- type ExplainStmt
- type ExprNode
- type FieldList
- type FieldsClause
- type FloatOpt
- type FlushStmt
- type FlushStmtType
- type FrameBound
- type FrameClause
- type FrameExtent
- type FrameType
- type FuncCallExpr
- type FuncCastExpr
- type FuncNode
- type GrantLevel
- type GrantLevelType
- type GrantStmt
- type GroupByClause
- type HandleRange
- type HavingClause
- type Ident
- type IndexColName
- type IndexHint
- type IndexHintScope
- type IndexHintType
- type IndexOption
- type InsertStmt
- type IsNullExpr
- type IsTruthExpr
- type Join
- type JoinType
- type KillStmt
- type Limit
- type LinesClause
- type LoadDataStmt
- type LoadStatsStmt
- type LockType
- type MaxValueExpr
- type Node
- type ObjectTypeType
- type OnCondition
- type OnDeleteOpt
- type OnDuplicateCreateTableSelectType
- type OnUpdateOpt
- type OptBinary
- type OrderByClause
- type ParamMarkerExpr
- type ParenthesesExpr
- func (n *ParenthesesExpr) Accept(v Visitor) (Node, bool)
- func (n *ParenthesesExpr) Format(w io.Writer)
- func (en *ParenthesesExpr) GetFlag() uint64
- func (en *ParenthesesExpr) GetType() *types.FieldType
- func (en *ParenthesesExpr) SetFlag(flag uint64)
- func (en *ParenthesesExpr) SetType(tp *types.FieldType)
- type PartitionByClause
- type PartitionDefinition
- type PartitionOptions
- type PatternInExpr
- type PatternLikeExpr
- func (n *PatternLikeExpr) Accept(v Visitor) (Node, bool)
- func (n *PatternLikeExpr) Format(w io.Writer)
- func (en *PatternLikeExpr) GetFlag() uint64
- func (en *PatternLikeExpr) GetType() *types.FieldType
- func (en *PatternLikeExpr) SetFlag(flag uint64)
- func (en *PatternLikeExpr) SetType(tp *types.FieldType)
- type PatternRegexpExpr
- func (n *PatternRegexpExpr) Accept(v Visitor) (Node, bool)
- func (n *PatternRegexpExpr) Format(w io.Writer)
- func (en *PatternRegexpExpr) GetFlag() uint64
- func (en *PatternRegexpExpr) GetType() *types.FieldType
- func (en *PatternRegexpExpr) SetFlag(flag uint64)
- func (en *PatternRegexpExpr) SetType(tp *types.FieldType)
- type PositionExpr
- type PrepareStmt
- type Prepared
- type PrivElem
- type ReferOptionType
- type ReferenceDef
- type RenameTableStmt
- type ResultField
- type ResultSetNode
- type RevokeStmt
- type RollbackStmt
- type RowExpr
- type SelectField
- type SelectLockType
- type SelectStmt
- type SelectStmtOpts
- type SensitiveStmtNode
- type SetPwdStmt
- type SetStmt
- type ShowSlow
- type ShowSlowKind
- type ShowSlowType
- type ShowStmt
- type ShowStmtType
- type StmtNode
- type SubqueryExpr
- type TableName
- type TableOptimizerHint
- type TableOption
- type TableOptionType
- type TableRefsClause
- type TableSource
- type TableToTable
- type TexprNode
- type TraceStmt
- type TrimDirectionType
- type TruncateTableStmt
- type TypeOpt
- type UnaryOperationExpr
- func (n *UnaryOperationExpr) Accept(v Visitor) (Node, bool)
- func (n *UnaryOperationExpr) Format(w io.Writer)
- func (en *UnaryOperationExpr) GetFlag() uint64
- func (en *UnaryOperationExpr) GetType() *types.FieldType
- func (en *UnaryOperationExpr) SetFlag(flag uint64)
- func (en *UnaryOperationExpr) SetType(tp *types.FieldType)
- type UnionSelectList
- type UnionStmt
- type UpdateStmt
- type UseStmt
- type UserSpec
- type ValueExpr
- type ValuesExpr
- type VariableAssignment
- type VariableExpr
- type Visitor
- type WhenClause
- type WildCardField
- type WindowFuncExpr
- type WindowSpec
Constants ¶
const ( FlagConstant uint64 = 0 FlagHasParamMarker uint64 = 1 << iota FlagHasFunc FlagHasReference FlagHasAggregateFunc FlagHasSubquery FlagHasVariable FlagHasDefault FlagPreEvaluated )
Flags indicates whether an expression contains certain types of expression.
const ( RowFormatDefault uint64 = iota + 1 RowFormatDynamic RowFormatFixed RowFormatCompressed RowFormatRedundant RowFormatCompact )
RowFormat types
const ( ShowNone = iota ShowEngines ShowDatabases ShowTables ShowTableStatus ShowColumns ShowWarnings ShowCharset ShowVariables ShowStatus ShowCollation ShowCreateTable ShowGrants ShowTriggers ShowProcedureStatus ShowIndex ShowProcessList ShowCreateDatabase ShowEvents ShowStatsMeta ShowStatsHistograms ShowStatsBuckets ShowStatsHealthy ShowPlugins ShowProfiles ShowMasterStatus ShowPrivileges ShowErrors )
Show statement types.
const ( Rows = iota Ranges Groups )
Window function frame types. MySQL only supports `ROWS` and `RANGES`.
const ( Following = iota Preceding CurrentRow )
Frame bound types.
const ( LogicAnd = "and" Cast = "cast" LeftShift = "leftshift" RightShift = "rightshift" LogicOr = "or" GE = "ge" LE = "le" EQ = "eq" NE = "ne" LT = "lt" GT = "gt" Plus = "plus" Minus = "minus" And = "bitand" Or = "bitor" Mod = "mod" Xor = "bitxor" Div = "div" Mul = "mul" UnaryNot = "not" // Avoid name conflict with Not in github/pingcap/check. BitNeg = "bitneg" IntDiv = "intdiv" LogicXor = "xor" NullEQ = "nulleq" UnaryPlus = "unaryplus" UnaryMinus = "unaryminus" In = "in" Like = "like" Case = "case" Regexp = "regexp" IsNull = "isnull" IsTruth = "istrue" // Avoid name conflict with IsTrue in github/pingcap/check. IsFalsity = "isfalse" // Avoid name conflict with IsFalse in github/pingcap/check. RowFunc = "row" SetVar = "setvar" GetVar = "getvar" Values = "values" BitCount = "bit_count" GetParam = "getparam" // common functions Coalesce = "coalesce" Greatest = "greatest" Least = "least" Interval = "interval" // math functions Abs = "abs" Acos = "acos" Asin = "asin" Atan = "atan" Atan2 = "atan2" Ceil = "ceil" Ceiling = "ceiling" Conv = "conv" Cos = "cos" Cot = "cot" CRC32 = "crc32" Degrees = "degrees" Exp = "exp" Floor = "floor" Ln = "ln" Log = "log" Log2 = "log2" Log10 = "log10" PI = "pi" Pow = "pow" Power = "power" Radians = "radians" Rand = "rand" Round = "round" Sign = "sign" Sin = "sin" Sqrt = "sqrt" Tan = "tan" Truncate = "truncate" // time functions AddDate = "adddate" AddTime = "addtime" ConvertTz = "convert_tz" Curdate = "curdate" CurrentDate = "current_date" CurrentTime = "current_time" CurrentTimestamp = "current_timestamp" Curtime = "curtime" Date = "date" DateLiteral = "dateliteral" DateAdd = "date_add" DateFormat = "date_format" DateSub = "date_sub" DateDiff = "datediff" Day = "day" DayName = "dayname" DayOfMonth = "dayofmonth" DayOfWeek = "dayofweek" DayOfYear = "dayofyear" Extract = "extract" FromDays = "from_days" FromUnixTime = "from_unixtime" GetFormat = "get_format" Hour = "hour" LocalTime = "localtime" LocalTimestamp = "localtimestamp" MakeDate = "makedate" MakeTime = "maketime" MicroSecond = "microsecond" Minute = "minute" Month = "month" MonthName = "monthname" Now = "now" PeriodAdd = "period_add" PeriodDiff = "period_diff" Quarter = "quarter" SecToTime = "sec_to_time" Second = "second" StrToDate = "str_to_date" SubDate = "subdate" SubTime = "subtime" Sysdate = "sysdate" Time = "time" TimeLiteral = "timeliteral" TimeFormat = "time_format" TimeToSec = "time_to_sec" TimeDiff = "timediff" Timestamp = "timestamp" TimestampLiteral = "timestampliteral" TimestampAdd = "timestampadd" TimestampDiff = "timestampdiff" ToDays = "to_days" ToSeconds = "to_seconds" UnixTimestamp = "unix_timestamp" UTCDate = "utc_date" UTCTime = "utc_time" UTCTimestamp = "utc_timestamp" Week = "week" Weekday = "weekday" WeekOfYear = "weekofyear" Year = "year" YearWeek = "yearweek" LastDay = "last_day" // string functions ASCII = "ascii" Bin = "bin" Concat = "concat" ConcatWS = "concat_ws" Convert = "convert" Elt = "elt" ExportSet = "export_set" Field = "field" Format = "format" FromBase64 = "from_base64" InsertFunc = "insert_func" Instr = "instr" Lcase = "lcase" Left = "left" Length = "length" LoadFile = "load_file" Locate = "locate" Lower = "lower" Lpad = "lpad" LTrim = "ltrim" MakeSet = "make_set" Mid = "mid" Oct = "oct" Ord = "ord" Position = "position" Quote = "quote" Repeat = "repeat" Replace = "replace" Reverse = "reverse" Right = "right" RTrim = "rtrim" Space = "space" Strcmp = "strcmp" Substring = "substring" Substr = "substr" SubstringIndex = "substring_index" ToBase64 = "to_base64" Trim = "trim" Upper = "upper" Ucase = "ucase" Hex = "hex" Unhex = "unhex" Rpad = "rpad" BitLength = "bit_length" CharFunc = "char_func" CharLength = "char_length" CharacterLength = "character_length" FindInSet = "find_in_set" // information functions Benchmark = "benchmark" Charset = "charset" Coercibility = "coercibility" Collation = "collation" ConnectionID = "connection_id" CurrentUser = "current_user" Database = "database" FoundRows = "found_rows" LastInsertId = "last_insert_id" RowCount = "row_count" Schema = "schema" SessionUser = "session_user" SystemUser = "system_user" User = "user" Version = "version" TiDBVersion = "tidb_version" TiDBIsDDLOwner = "tidb_is_ddl_owner" // control functions If = "if" Ifnull = "ifnull" Nullif = "nullif" // miscellaneous functions AnyValue = "any_value" DefaultFunc = "default_func" InetAton = "inet_aton" InetNtoa = "inet_ntoa" Inet6Aton = "inet6_aton" Inet6Ntoa = "inet6_ntoa" IsFreeLock = "is_free_lock" IsIPv4 = "is_ipv4" IsIPv4Compat = "is_ipv4_compat" IsIPv4Mapped = "is_ipv4_mapped" IsIPv6 = "is_ipv6" IsUsedLock = "is_used_lock" MasterPosWait = "master_pos_wait" NameConst = "name_const" ReleaseAllLocks = "release_all_locks" Sleep = "sleep" UUID = "uuid" UUIDShort = "uuid_short" // get_lock() and release_lock() is parsed but do nothing. // It is used for preventing error in Ruby's activerecord migrations. GetLock = "get_lock" ReleaseLock = "release_lock" // encryption and compression functions AesDecrypt = "aes_decrypt" AesEncrypt = "aes_encrypt" Compress = "compress" Decode = "decode" DesDecrypt = "des_decrypt" DesEncrypt = "des_encrypt" Encode = "encode" Encrypt = "encrypt" MD5 = "md5" OldPassword = "old_password" PasswordFunc = "password_func" RandomBytes = "random_bytes" SHA1 = "sha1" SHA = "sha" SHA2 = "sha2" Uncompress = "uncompress" UncompressedLength = "uncompressed_length" ValidatePasswordStrength = "validate_password_strength" // json functions JSONType = "json_type" JSONExtract = "json_extract" JSONUnquote = "json_unquote" JSONArray = "json_array" JSONObject = "json_object" JSONMerge = "json_merge" JSONSet = "json_set" JSONInsert = "json_insert" JSONReplace = "json_replace" JSONRemove = "json_remove" JSONContains = "json_contains" JSONContainsPath = "json_contains_path" JSONValid = "json_valid" JSONArrayAppend = "json_array_append" JSONArrayInsert = "json_array_insert" JSONMergePatch = "json_merge_patch" JSONMergePreserve = "json_merge_preserve" JSONPretty = "json_pretty" JSONQuote = "json_quote" JSONSearch = "json_search" JSONStorageSize = "json_storage_size" JSONDepth = "json_depth" JSONKeys = "json_keys" JSONLength = "json_length" )
List scalar function names.
const ( // AggFuncCount is the name of Count function. AggFuncCount = "count" // AggFuncSum is the name of Sum function. AggFuncSum = "sum" // AggFuncAvg is the name of Avg function. AggFuncAvg = "avg" // AggFuncFirstRow is the name of FirstRowColumn function. AggFuncFirstRow = "firstrow" // AggFuncMax is the name of max function. AggFuncMax = "max" // AggFuncMin is the name of min function. AggFuncMin = "min" // AggFuncGroupConcat is the name of group_concat function. AggFuncGroupConcat = "group_concat" // AggFuncBitOr is the name of bit_or function. AggFuncBitOr = "bit_or" // AggFuncBitXor is the name of bit_xor function. AggFuncBitXor = "bit_xor" // AggFuncBitAnd is the name of bit_and function. AggFuncBitAnd = "bit_and" // AggFuncStddevPop is the name of stddev_pop function AggFuncStddevPop = "stddev_pop" // AggFuncStddevSamp is the name of stddev_samp function AggFuncStddevSamp = "stddev_samp" )
const ( // WindowFuncRowNumber is the name of row_number function. WindowFuncRowNumber = "row_number" // WindowFuncRank is the name of rank function. WindowFuncRank = "rank" // WindowFuncDenseRank is the name of dense_rank function. WindowFuncDenseRank = "dense_rank" // WindowFuncCumeDist is the name of cume_dist function. WindowFuncCumeDist = "cume_dist" // WindowFuncPercentRank is the name of percent_rank function. WindowFuncPercentRank = "percent_rank" // WindowFuncNtile is the name of ntile function. WindowFuncNtile = "ntile" // WindowFuncLead is the name of lead function. WindowFuncLead = "lead" // WindowFuncLag is the name of lag function. WindowFuncLag = "lag" // WindowFuncFirstValue is the name of first_value function. WindowFuncFirstValue = "first_value" // WindowFuncLastValue is the name of last_value function. WindowFuncLastValue = "last_value" // WindowFuncNthValue is the name of nth_value function. WindowFuncNthValue = "nth_value" )
const ( ReadCommitted = "READ-COMMITTED" ReadUncommitted = "READ-UNCOMMITTED" Serializable = "SERIALIZABLE" RepeatableRead = "REPEATABLE-READ" // Valid formats for explain statement. ExplainFormatROW = "row" ExplainFormatDOT = "dot" )
Isolation level constants.
const ( AdminShowDDL = iota + 1 AdminCheckTable AdminShowDDLJobs AdminCancelDDLJobs AdminCheckIndex AdminRecoverIndex AdminCleanupIndex AdminCheckIndexRange AdminShowDDLJobQueries AdminChecksumTable AdminShowSlow AdminShowNextRowID )
Admin statement types.
const ( // SetNames is the const for set names/charset stmt. // If VariableAssignment.Name == Names, it should be set names/charset stmt. SetNames = "SetNAMES" )
Variables ¶
var ( // ExplainFormats stores the valid formats for explain statement, used by validator. ExplainFormats = []string{ ExplainFormatROW, ExplainFormatDOT, } )
var NewBitLiteral func(string) (interface{}, error)
NewBitLiteral creates a types.BitLiteral value, it's provided by parser driver.
var NewDecimal func(string) (interface{}, error)
NewDecimal creates a types.Decimal value, it's provided by parser driver.
var NewHexLiteral func(string) (interface{}, error)
NewHexLiteral creates a types.HexLiteral value, it's provided by parser driver.
var NewParamMarkerExpr func(offset int) ParamMarkerExpr
NewParamMarkerExpr creates a ParamMarkerExpr.
var NewValueExpr func(interface{}) ValueExpr
NewValueExpr creates a ValueExpr with value, and sets default field type.
Functions ¶
func HasAggFlag ¶
HasAggFlag checks if the expr contains FlagHasAggregateFunc.
func IsReadOnly ¶
IsReadOnly checks whether the input ast is readOnly.
Types ¶
type AdminStmt ¶
type AdminStmt struct { Tp AdminStmtType Index string Tables []*TableName JobIDs []int64 JobNumber int64 HandleRanges []HandleRange ShowSlow *ShowSlow // contains filtered or unexported fields }
AdminStmt is the struct for Admin statement.
type AggregateFuncExpr ¶
type AggregateFuncExpr struct { // F is the function name. F string // Args is the function args. Args []ExprNode // Distinct is true, function hence only aggregate distinct values. // For example, column c1 values are "1", "2", "2", "sum(c1)" is "5", // but "sum(distinct c1)" is "3". Distinct bool // contains filtered or unexported fields }
AggregateFuncExpr represents aggregate function expression.
func (*AggregateFuncExpr) Accept ¶
func (n *AggregateFuncExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*AggregateFuncExpr) Format ¶
func (n *AggregateFuncExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
type AlterTableSpec ¶
type AlterTableSpec struct { Tp AlterTableType Name string Constraint *Constraint Options []*TableOption NewTable *TableName NewColumns []*ColumnDef OldColumnName *ColumnName Position *ColumnPosition LockType LockType Comment string FromKey model.CIStr ToKey model.CIStr PartDefinitions []*PartitionDefinition // contains filtered or unexported fields }
AlterTableSpec represents alter table specification.
func (*AlterTableSpec) Accept ¶
func (n *AlterTableSpec) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type AlterTableStmt ¶
type AlterTableStmt struct { Table *TableName Specs []*AlterTableSpec // contains filtered or unexported fields }
AlterTableStmt is a statement to change the structure of a table. See https://dev.mysql.com/doc/refman/5.7/en/alter-table.html
type AlterTableType ¶
type AlterTableType int
AlterTableType is the type for AlterTableSpec.
const ( AlterTableOption AlterTableType = iota + 1 AlterTableAddColumns AlterTableAddConstraint AlterTableDropColumn AlterTableDropPrimaryKey AlterTableDropIndex AlterTableDropForeignKey AlterTableModifyColumn AlterTableChangeColumn AlterTableRenameTable AlterTableAlterColumn AlterTableLock AlterTableAlgorithm AlterTableRenameIndex AlterTableForce AlterTableAddPartitions AlterTableDropPartition )
AlterTable types.
type AlterUserStmt ¶
type AlterUserStmt struct { IfExists bool CurrentAuth *AuthOption Specs []*UserSpec // contains filtered or unexported fields }
AlterUserStmt modifies user account. See https://dev.mysql.com/doc/refman/5.7/en/alter-user.html
func (*AlterUserStmt) Accept ¶
func (n *AlterUserStmt) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*AlterUserStmt) SecureText ¶
func (n *AlterUserStmt) SecureText() string
SecureText implements SensitiveStatement interface.
type AnalyzeTableStmt ¶
type AnalyzeTableStmt struct { TableNames []*TableName PartitionNames []model.CIStr IndexNames []model.CIStr MaxNumBuckets uint64 // IndexFlag is true when we only analyze indices for a table. IndexFlag bool // contains filtered or unexported fields }
AnalyzeTableStmt is used to create table statistics.
type Assignment ¶
type Assignment struct { // Column is the column name to be assigned. Column *ColumnName // Expr is the expression assigning to ColName. Expr ExprNode // contains filtered or unexported fields }
Assignment is the expression for assignment, like a = 1.
func (*Assignment) Accept ¶
func (n *Assignment) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type AuthOption ¶
type AuthOption struct { // ByAuthString set as true, if AuthString is used for authorization. Otherwise, authorization is done by HashString. ByAuthString bool AuthString string HashString string }
AuthOption is used for parsing create use statement.
type BeginStmt ¶
type BeginStmt struct {
// contains filtered or unexported fields
}
BeginStmt is a statement to start a new transaction. See https://dev.mysql.com/doc/refman/5.7/en/commit.html
type BetweenExpr ¶
type BetweenExpr struct { // Expr is the expression to be checked. Expr ExprNode // Left is the expression for minimal value in the range. Left ExprNode // Right is the expression for maximum value in the range. Right ExprNode // Not is true, the expression is "not between and". Not bool // contains filtered or unexported fields }
BetweenExpr is for "between and" or "not between and" expression.
func (*BetweenExpr) Accept ¶
func (n *BetweenExpr) Accept(v Visitor) (Node, bool)
Accept implements Node interface.
func (*BetweenExpr) Format ¶
func (n *BetweenExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*BetweenExpr) GetFlag ¶
func (en *BetweenExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type BinaryOperationExpr ¶
type BinaryOperationExpr struct { // Op is the operator code for BinaryOperation. Op opcode.Op // L is the left expression in BinaryOperation. L ExprNode // R is the right expression in BinaryOperation. R ExprNode // contains filtered or unexported fields }
BinaryOperationExpr is for binary operation like `1 + 1`, `1 - 1`, etc.
func (*BinaryOperationExpr) Accept ¶
func (n *BinaryOperationExpr) Accept(v Visitor) (Node, bool)
Accept implements Node interface.
func (*BinaryOperationExpr) Format ¶
func (n *BinaryOperationExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*BinaryOperationExpr) GetFlag ¶
func (en *BinaryOperationExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type BinlogStmt ¶
type BinlogStmt struct { Str string // contains filtered or unexported fields }
BinlogStmt is an internal-use statement. We just parse and ignore it. See http://dev.mysql.com/doc/refman/5.7/en/binlog.html
type ByItem ¶
ByItem represents an item in order by or group by.
type CaseExpr ¶
type CaseExpr struct { // Value is the compare value expression. Value ExprNode // WhenClauses is the condition check expression. WhenClauses []*WhenClause // ElseClause is the else result expression. ElseClause ExprNode // contains filtered or unexported fields }
CaseExpr is the case expression.
func (*CaseExpr) GetFlag ¶
func (en *CaseExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type CastFunctionType ¶
type CastFunctionType int
CastFunctionType is the type for cast function.
const ( CastFunction CastFunctionType = iota + 1 CastConvertFunction CastBinaryOperator )
CastFunction types
type CharsetOpt ¶
CharsetOpt is used for parsing charset option from SQL.
type ColumnDef ¶
type ColumnDef struct { Name *ColumnName Tp *types.FieldType Options []*ColumnOption // contains filtered or unexported fields }
ColumnDef is used for parsing column definition from SQL.
type ColumnName ¶
type ColumnName struct { Schema model.CIStr Table model.CIStr Name model.CIStr // contains filtered or unexported fields }
ColumnName represents column name.
func (*ColumnName) Accept ¶
func (n *ColumnName) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*ColumnName) OrigColName ¶
func (n *ColumnName) OrigColName() (ret string)
OrigColName returns the full original column name.
func (*ColumnName) SetText ¶
func (n *ColumnName) SetText(text string)
SetText implements Node interface.
func (*ColumnName) String ¶
func (n *ColumnName) String() string
String implements Stringer interface.
type ColumnNameExpr ¶
type ColumnNameExpr struct { // Name is the referenced column name. Name *ColumnName // Refer is the result field the column name refers to. // The value of Refer.Expr is used as the value of the expression. Refer *ResultField // contains filtered or unexported fields }
ColumnNameExpr represents a column name expression.
func (*ColumnNameExpr) Accept ¶
func (n *ColumnNameExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*ColumnNameExpr) Format ¶
func (n *ColumnNameExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*ColumnNameExpr) GetFlag ¶
func (en *ColumnNameExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type ColumnOption ¶
type ColumnOption struct { Tp ColumnOptionType // Expr is used for ColumnOptionDefaultValue/ColumnOptionOnUpdateColumnOptionGenerated. // For ColumnOptionDefaultValue or ColumnOptionOnUpdate, it's the target value. // For ColumnOptionGenerated, it's the target expression. Expr ExprNode // Stored is only for ColumnOptionGenerated, default is false. Stored bool // Refer is used for foreign key. Refer *ReferenceDef // contains filtered or unexported fields }
ColumnOption is used for parsing column constraint info from SQL.
func (*ColumnOption) Accept ¶
func (n *ColumnOption) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type ColumnOptionType ¶
type ColumnOptionType int
ColumnOptionType is the type for ColumnOption.
const ( ColumnOptionNoOption ColumnOptionType = iota ColumnOptionPrimaryKey ColumnOptionNotNull ColumnOptionAutoIncrement ColumnOptionDefaultValue ColumnOptionUniqKey ColumnOptionNull ColumnOptionOnUpdate // For Timestamp and Datetime only. ColumnOptionFulltext ColumnOptionComment ColumnOptionGenerated ColumnOptionReference )
ColumnOption types.
type ColumnPosition ¶
type ColumnPosition struct { // Tp is either ColumnPositionNone, ColumnPositionFirst or ColumnPositionAfter. Tp ColumnPositionType // RelativeColumn is the column the newly added column after if type is ColumnPositionAfter RelativeColumn *ColumnName // contains filtered or unexported fields }
ColumnPosition represent the position of the newly added column
func (*ColumnPosition) Accept ¶
func (n *ColumnPosition) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type ColumnPositionType ¶
type ColumnPositionType int
ColumnPositionType is the type for ColumnPosition.
const ( ColumnPositionNone ColumnPositionType = iota ColumnPositionFirst ColumnPositionAfter )
ColumnPosition Types
type CommitStmt ¶
type CommitStmt struct {
// contains filtered or unexported fields
}
CommitStmt is a statement to commit the current transaction. See https://dev.mysql.com/doc/refman/5.7/en/commit.html
type CompareSubqueryExpr ¶
type CompareSubqueryExpr struct { // L is the left expression L ExprNode // Op is the comparison opcode. Op opcode.Op // R is the subquery for right expression, may be rewritten to other type of expression. R ExprNode // All is true, we should compare all records in subquery. All bool // contains filtered or unexported fields }
CompareSubqueryExpr is the expression for "expr cmp (select ...)". See https://dev.mysql.com/doc/refman/5.7/en/comparisons-using-subqueries.html See https://dev.mysql.com/doc/refman/5.7/en/any-in-some-subqueries.html See https://dev.mysql.com/doc/refman/5.7/en/all-subqueries.html
func (*CompareSubqueryExpr) Accept ¶
func (n *CompareSubqueryExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*CompareSubqueryExpr) Format ¶
func (n *CompareSubqueryExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*CompareSubqueryExpr) GetFlag ¶
func (en *CompareSubqueryExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type Constraint ¶
type Constraint struct { Tp ConstraintType Name string Keys []*IndexColName // Used for PRIMARY KEY, UNIQUE, ...... Refer *ReferenceDef // Used for foreign key. Option *IndexOption // Index Options // contains filtered or unexported fields }
Constraint is constraint for table definition.
func (*Constraint) Accept ¶
func (n *Constraint) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type ConstraintType ¶
type ConstraintType int
ConstraintType is the type for Constraint.
const ( ConstraintNoConstraint ConstraintType = iota ConstraintPrimaryKey ConstraintKey ConstraintIndex ConstraintUniq ConstraintUniqKey ConstraintUniqIndex ConstraintForeignKey ConstraintFulltext )
ConstraintTypes
type CreateDatabaseStmt ¶
type CreateDatabaseStmt struct { IfNotExists bool Name string Options []*DatabaseOption // contains filtered or unexported fields }
CreateDatabaseStmt is a statement to create a database. See https://dev.mysql.com/doc/refman/5.7/en/create-database.html
type CreateIndexStmt ¶
type CreateIndexStmt struct { IndexName string Table *TableName Unique bool IndexColNames []*IndexColName IndexOption *IndexOption // contains filtered or unexported fields }
CreateIndexStmt is a statement to create an index. See https://dev.mysql.com/doc/refman/5.7/en/create-index.html
type CreateTableStmt ¶
type CreateTableStmt struct { IfNotExists bool Table *TableName ReferTable *TableName Cols []*ColumnDef Constraints []*Constraint Options []*TableOption Partition *PartitionOptions OnDuplicate OnDuplicateCreateTableSelectType Select ResultSetNode // contains filtered or unexported fields }
CreateTableStmt is a statement to create a table. See https://dev.mysql.com/doc/refman/5.7/en/create-table.html
type CreateUserStmt ¶
type CreateUserStmt struct { IfNotExists bool Specs []*UserSpec // contains filtered or unexported fields }
CreateUserStmt creates user account. See https://dev.mysql.com/doc/refman/5.7/en/create-user.html
func (*CreateUserStmt) Accept ¶
func (n *CreateUserStmt) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*CreateUserStmt) SecureText ¶
func (n *CreateUserStmt) SecureText() string
SecureText implements SensitiveStatement interface.
type CreateViewStmt ¶
type CreateViewStmt struct { OrReplace bool ViewName *TableName Cols []model.CIStr Select StmtNode // contains filtered or unexported fields }
CreateViewStmt is a statement to create a View. See https://dev.mysql.com/doc/refman/5.7/en/create-view.html
type DDLNode ¶
type DDLNode interface { StmtNode // contains filtered or unexported methods }
DDLNode represents DDL statement node.
type DMLNode ¶
type DMLNode interface { StmtNode // contains filtered or unexported methods }
DMLNode represents DML statement node.
type DatabaseOption ¶
type DatabaseOption struct { Tp DatabaseOptionType Value string }
DatabaseOption represents database option.
type DatabaseOptionType ¶
type DatabaseOptionType int
DatabaseOptionType is the type for database options.
const ( DatabaseOptionNone DatabaseOptionType = iota DatabaseOptionCharset DatabaseOptionCollate )
Database option types.
type DateArithType ¶
type DateArithType byte
DateArithType is type for DateArith type.
const ( // DateArithAdd is to run adddate or date_add function option. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_adddate // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-add DateArithAdd DateArithType = iota + 1 // DateArithSub is to run subdate or date_sub function option. // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_subdate // See https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-sub DateArithSub )
type DeallocateStmt ¶
type DeallocateStmt struct { Name string // contains filtered or unexported fields }
DeallocateStmt is a statement to release PreparedStmt. See https://dev.mysql.com/doc/refman/5.7/en/deallocate-prepare.html
type DefaultExpr ¶
type DefaultExpr struct { // Name is the column name. Name *ColumnName // contains filtered or unexported fields }
DefaultExpr is the default expression using default value for a column.
func (*DefaultExpr) Accept ¶
func (n *DefaultExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*DefaultExpr) Format ¶
func (n *DefaultExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*DefaultExpr) GetFlag ¶
func (en *DefaultExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type DeleteStmt ¶
type DeleteStmt struct { // TableRefs is used in both single table and multiple table delete statement. TableRefs *TableRefsClause // Tables is only used in multiple table delete statement. Tables *DeleteTableList Where ExprNode Order *OrderByClause Limit *Limit Priority mysql.PriorityEnum IgnoreErr bool Quick bool IsMultiTable bool BeforeFrom bool // TableHints represents the table level Optimizer Hint for join type. TableHints []*TableOptimizerHint // contains filtered or unexported fields }
DeleteStmt is a statement to delete rows from table. See https://dev.mysql.com/doc/refman/5.7/en/delete.html
type DeleteTableList ¶
type DeleteTableList struct { Tables []*TableName // contains filtered or unexported fields }
DeleteTableList is the tablelist used in delete statement multi-table mode.
func (*DeleteTableList) Accept ¶
func (n *DeleteTableList) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type DoStmt ¶
type DoStmt struct { Exprs []ExprNode // contains filtered or unexported fields }
DoStmt is the struct for DO statement.
type DropDatabaseStmt ¶
type DropDatabaseStmt struct { IfExists bool Name string // contains filtered or unexported fields }
DropDatabaseStmt is a statement to drop a database and all tables in the database. See https://dev.mysql.com/doc/refman/5.7/en/drop-database.html
type DropIndexStmt ¶
type DropIndexStmt struct { IfExists bool IndexName string Table *TableName // contains filtered or unexported fields }
DropIndexStmt is a statement to drop the index. See https://dev.mysql.com/doc/refman/5.7/en/drop-index.html
type DropStatsStmt ¶
type DropStatsStmt struct { Table *TableName // contains filtered or unexported fields }
DropStatsStmt is used to drop table statistics.
type DropTableStmt ¶
type DropTableStmt struct { IfExists bool Tables []*TableName // contains filtered or unexported fields }
DropTableStmt is a statement to drop one or more tables. See https://dev.mysql.com/doc/refman/5.7/en/drop-table.html
type DropUserStmt ¶
type DropUserStmt struct { IfExists bool UserList []*auth.UserIdentity // contains filtered or unexported fields }
DropUserStmt creates user account. See http://dev.mysql.com/doc/refman/5.7/en/drop-user.html
type ExecuteStmt ¶
type ExecuteStmt struct { Name string UsingVars []ExprNode ExecID uint32 // contains filtered or unexported fields }
ExecuteStmt is a statement to execute PreparedStmt. See https://dev.mysql.com/doc/refman/5.7/en/execute.html
type ExistsSubqueryExpr ¶
type ExistsSubqueryExpr struct { // Sel is the subquery, may be rewritten to other type of expression. Sel ExprNode // contains filtered or unexported fields }
ExistsSubqueryExpr is the expression for "exists (select ...)". See https://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html
func (*ExistsSubqueryExpr) Accept ¶
func (n *ExistsSubqueryExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*ExistsSubqueryExpr) Format ¶
func (n *ExistsSubqueryExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*ExistsSubqueryExpr) GetFlag ¶
func (en *ExistsSubqueryExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type ExplainStmt ¶
type ExplainStmt struct { Stmt StmtNode Format string Analyze bool // contains filtered or unexported fields }
ExplainStmt is a statement to provide information about how is SQL statement executed or get columns information in a table. See https://dev.mysql.com/doc/refman/5.7/en/explain.html
type ExprNode ¶
type ExprNode interface { // Node is embedded in ExprNode. Node // SetType sets evaluation type to the expression. SetType(tp *types.FieldType) // GetType gets the evaluation type of the expression. GetType() *types.FieldType // SetFlag sets flag to the expression. // Flag indicates whether the expression contains // parameter marker, reference, aggregate function... SetFlag(flag uint64) // GetFlag returns the flag of the expression. GetFlag() uint64 // Format formats the AST into a writer. Format(w io.Writer) }
ExprNode is a node that can be evaluated. Name of implementations should have 'Expr' suffix.
type FieldList ¶
type FieldList struct { Fields []*SelectField // contains filtered or unexported fields }
FieldList represents field list in select statement.
type FieldsClause ¶
FieldsClause represents fields references clause in load data statement.
type FloatOpt ¶
FloatOpt is used for parsing floating-point type option from SQL. See http://dev.mysql.com/doc/refman/5.7/en/floating-point-types.html
type FlushStmt ¶
type FlushStmt struct { Tp FlushStmtType // Privileges/Tables/... NoWriteToBinLog bool Tables []*TableName // For FlushTableStmt, if Tables is empty, it means flush all tables. ReadLock bool // contains filtered or unexported fields }
FlushStmt is a statement to flush tables/privileges/optimizer costs and so on.
type FlushStmtType ¶
type FlushStmtType int
FlushStmtType is the type for FLUSH statement.
const ( FlushNone FlushStmtType = iota FlushTables FlushPrivileges FlushStatus )
Flush statement types.
type FrameBound ¶
type FrameBound struct { Type BoundType UnBounded bool Expr ExprNode // `Unit` is used to indicate the units in which the `Expr` should be interpreted. // For example: '2:30' MINUTE_SECOND. Unit ExprNode // contains filtered or unexported fields }
FrameBound represents frame bound.
func (*FrameBound) Accept ¶
func (n *FrameBound) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type FrameClause ¶
type FrameClause struct { Type FrameType Extent FrameExtent // contains filtered or unexported fields }
FrameClause represents frame clause.
func (*FrameClause) Accept ¶
func (n *FrameClause) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type FrameExtent ¶
type FrameExtent struct { Start FrameBound End FrameBound }
FrameExtent represents frame extent.
type FuncCallExpr ¶
type FuncCallExpr struct { // FnName is the function name. FnName model.CIStr // Args is the function args. Args []ExprNode // contains filtered or unexported fields }
FuncCallExpr is for function expression.
func (*FuncCallExpr) Accept ¶
func (n *FuncCallExpr) Accept(v Visitor) (Node, bool)
Accept implements Node interface.
func (*FuncCallExpr) Format ¶
func (n *FuncCallExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
type FuncCastExpr ¶
type FuncCastExpr struct { // Expr is the expression to be converted. Expr ExprNode // Tp is the conversion type. Tp *types.FieldType // FunctionType is either Cast, Convert or Binary. FunctionType CastFunctionType // contains filtered or unexported fields }
FuncCastExpr is the cast function converting value to another type, e.g, cast(expr AS signed). See https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html
func (*FuncCastExpr) Accept ¶
func (n *FuncCastExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*FuncCastExpr) Format ¶
func (n *FuncCastExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
type FuncNode ¶
type FuncNode interface { ExprNode // contains filtered or unexported methods }
FuncNode represents function call expression node.
type GrantLevel ¶
type GrantLevel struct { Level GrantLevelType DBName string TableName string }
GrantLevel is used for store the privilege scope.
type GrantLevelType ¶
type GrantLevelType int
GrantLevelType is the type for grant level.
const ( // GrantLevelNone is the dummy const for default value. GrantLevelNone GrantLevelType = iota + 1 // GrantLevelGlobal means the privileges are administrative or apply to all databases on a given server. GrantLevelGlobal // GrantLevelDB means the privileges apply to all objects in a given database. GrantLevelDB // GrantLevelTable means the privileges apply to all columns in a given table. GrantLevelTable )
type GrantStmt ¶
type GrantStmt struct { Privs []*PrivElem ObjectType ObjectTypeType Level *GrantLevel Users []*UserSpec WithGrant bool // contains filtered or unexported fields }
GrantStmt is the struct for GRANT statement.
func (*GrantStmt) SecureText ¶
SecureText implements SensitiveStatement interface.
type GroupByClause ¶
type GroupByClause struct { Items []*ByItem // contains filtered or unexported fields }
GroupByClause represents group by clause.
func (*GroupByClause) Accept ¶
func (n *GroupByClause) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type HandleRange ¶
HandleRange represents a range where handle value >= Begin and < End.
type HavingClause ¶
type HavingClause struct { Expr ExprNode // contains filtered or unexported fields }
HavingClause represents having clause.
func (*HavingClause) Accept ¶
func (n *HavingClause) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type IndexColName ¶
type IndexColName struct { Column *ColumnName Length int // contains filtered or unexported fields }
IndexColName is used for parsing index column name from SQL.
func (*IndexColName) Accept ¶
func (n *IndexColName) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type IndexHint ¶
type IndexHint struct { IndexNames []model.CIStr HintType IndexHintType HintScope IndexHintScope }
IndexHint represents a hint for optimizer to use/ignore/force for join/order by/group by.
type IndexHintScope ¶
type IndexHintScope int
IndexHintScope is the type for index hint for join, order by or group by.
const ( HintForScan IndexHintScope = 1 HintForJoin IndexHintScope = 2 HintForOrderBy IndexHintScope = 3 HintForGroupBy IndexHintScope = 4 )
Index hint scopes.
type IndexHintType ¶
type IndexHintType int
IndexHintType is the type for index hint use, ignore or force.
const ( HintUse IndexHintType = 1 HintIgnore IndexHintType = 2 HintForce IndexHintType = 3 )
IndexHintUseType values.
type IndexOption ¶
type IndexOption struct { KeyBlockSize uint64 Tp model.IndexType Comment string // contains filtered or unexported fields }
IndexOption is the index options.
KEY_BLOCK_SIZE [=] value | index_type | WITH PARSER parser_name | COMMENT 'string'
See http://dev.mysql.com/doc/refman/5.7/en/create-table.html
func (*IndexOption) Accept ¶
func (n *IndexOption) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type InsertStmt ¶
type InsertStmt struct { IsReplace bool IgnoreErr bool Table *TableRefsClause Columns []*ColumnName Lists [][]ExprNode Setlist []*Assignment Priority mysql.PriorityEnum OnDuplicate []*Assignment Select ResultSetNode // contains filtered or unexported fields }
InsertStmt is a statement to insert new rows into an existing table. See https://dev.mysql.com/doc/refman/5.7/en/insert.html
type IsNullExpr ¶
type IsNullExpr struct { // Expr is the expression to be checked. Expr ExprNode // Not is true, the expression is "is not null". Not bool // contains filtered or unexported fields }
IsNullExpr is the expression for null check.
func (*IsNullExpr) Accept ¶
func (n *IsNullExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*IsNullExpr) Format ¶
func (n *IsNullExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*IsNullExpr) GetFlag ¶
func (en *IsNullExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type IsTruthExpr ¶
type IsTruthExpr struct { // Expr is the expression to be checked. Expr ExprNode // Not is true, the expression is "is not true/false". Not bool // True indicates checking true or false. True int64 // contains filtered or unexported fields }
IsTruthExpr is the expression for true/false check.
func (*IsTruthExpr) Accept ¶
func (n *IsTruthExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*IsTruthExpr) Format ¶
func (n *IsTruthExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*IsTruthExpr) GetFlag ¶
func (en *IsTruthExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type Join ¶
type Join struct { // Left table can be TableSource or JoinNode. Left ResultSetNode // Right table can be TableSource or JoinNode or nil. Right ResultSetNode // Tp represents join type. Tp JoinType // On represents join on condition. On *OnCondition // Using represents join using clause. Using []*ColumnName // NaturalJoin represents join is natural join. NaturalJoin bool // StraightJoin represents a straight join. StraightJoin bool // contains filtered or unexported fields }
Join represents table join.
type KillStmt ¶
type KillStmt struct { // Query indicates whether terminate a single query on this connection or the whole connection. // If Query is true, terminates the statement the connection is currently executing, but leaves the connection itself intact. // If Query is false, terminates the connection associated with the given ConnectionID, after terminating any statement the connection is executing. Query bool ConnectionID uint64 // TiDBExtension is used to indicate whether the user knows he is sending kill statement to the right tidb-server. // When the SQL grammar is "KILL TIDB [CONNECTION | QUERY] connectionID", TiDBExtension will be set. // It's a special grammar extension in TiDB. This extension exists because, when the connection is: // client -> LVS proxy -> TiDB, and type Ctrl+C in client, the following action will be executed: // new a connection; kill xxx; // kill command may send to the wrong TiDB, because the exists of LVS proxy, and kill the wrong session. // So, "KILL TIDB" grammar is introduced, and it REQUIRES DIRECT client -> TiDB TOPOLOGY. // TODO: The standard KILL grammar will be supported once we have global connectionID. TiDBExtension bool // contains filtered or unexported fields }
KillStmt is a statement to kill a query or connection.
type Limit ¶
Limit is the limit clause.
type LinesClause ¶
LinesClause represents lines references clause in load data statement.
type LoadDataStmt ¶
type LoadDataStmt struct { IsLocal bool Path string Table *TableName Columns []*ColumnName FieldsInfo *FieldsClause LinesInfo *LinesClause IgnoreLines uint64 // contains filtered or unexported fields }
LoadDataStmt is a statement to load data from a specified file, then insert this rows into an existing table. See https://dev.mysql.com/doc/refman/5.7/en/load-data.html
type LoadStatsStmt ¶
type LoadStatsStmt struct { Path string // contains filtered or unexported fields }
LoadStatsStmt is the statement node for loading statistic.
type LockType ¶
type LockType byte
LockType is the type for AlterTableSpec. See https://dev.mysql.com/doc/refman/5.7/en/alter-table.html#alter-table-concurrency
type MaxValueExpr ¶
type MaxValueExpr struct {
// contains filtered or unexported fields
}
MaxValueExpr is the expression for "maxvalue" used in partition.
func (*MaxValueExpr) Accept ¶
func (n *MaxValueExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*MaxValueExpr) Format ¶
func (n *MaxValueExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*MaxValueExpr) GetFlag ¶
func (en *MaxValueExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type Node ¶
type Node interface { // Accept accepts Visitor to visit itself. // The returned node should replace original node. // ok returns false to stop visiting. // // Implementation of this method should first call visitor.Enter, // assign the returned node to its method receiver, if skipChildren returns true, // children should be skipped. Otherwise, call its children in particular order that // later elements depends on former elements. Finally, return visitor.Leave. Accept(v Visitor) (node Node, ok bool) // Text returns the original text of the element. Text() string // SetText sets original text to the Node. SetText(text string) }
Node is the basic element of the AST. Interfaces embed Node should have 'Node' name suffix.
type ObjectTypeType ¶
type ObjectTypeType int
ObjectTypeType is the type for object type.
const ( // ObjectTypeNone is for empty object type. ObjectTypeNone ObjectTypeType = iota + 1 // ObjectTypeTable means the following object is a table. ObjectTypeTable )
type OnCondition ¶
type OnCondition struct { Expr ExprNode // contains filtered or unexported fields }
OnCondition represents JOIN on condition.
func (*OnCondition) Accept ¶
func (n *OnCondition) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type OnDeleteOpt ¶
type OnDeleteOpt struct { ReferOpt ReferOptionType // contains filtered or unexported fields }
OnDeleteOpt is used for optional on delete clause.
func (*OnDeleteOpt) Accept ¶
func (n *OnDeleteOpt) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type OnDuplicateCreateTableSelectType ¶
type OnDuplicateCreateTableSelectType int
OnDuplicateCreateTableSelectType is the option that handle unique key values in 'CREATE TABLE ... SELECT'. See https://dev.mysql.com/doc/refman/5.7/en/create-table-select.html
const ( OnDuplicateCreateTableSelectError OnDuplicateCreateTableSelectType = iota OnDuplicateCreateTableSelectIgnore OnDuplicateCreateTableSelectReplace )
OnDuplicateCreateTableSelect types
type OnUpdateOpt ¶
type OnUpdateOpt struct { ReferOpt ReferOptionType // contains filtered or unexported fields }
OnUpdateOpt is used for optional on update clause.
func (*OnUpdateOpt) Accept ¶
func (n *OnUpdateOpt) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type OrderByClause ¶
type OrderByClause struct { Items []*ByItem ForUnion bool // contains filtered or unexported fields }
OrderByClause represents order by clause.
func (*OrderByClause) Accept ¶
func (n *OrderByClause) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type ParamMarkerExpr ¶
ParamMarkerExpr expression holds a place for another expression. Used in parsing prepare statement.
type ParenthesesExpr ¶
type ParenthesesExpr struct { // Expr is the expression in parentheses. Expr ExprNode // contains filtered or unexported fields }
ParenthesesExpr is the parentheses expression.
func (*ParenthesesExpr) Accept ¶
func (n *ParenthesesExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*ParenthesesExpr) Format ¶
func (n *ParenthesesExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*ParenthesesExpr) GetFlag ¶
func (en *ParenthesesExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type PartitionByClause ¶
type PartitionByClause struct { Items []*ByItem // contains filtered or unexported fields }
PartitionByClause represents partition by clause.
func (*PartitionByClause) Accept ¶
func (n *PartitionByClause) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type PartitionDefinition ¶
type PartitionDefinition struct { Name model.CIStr LessThan []ExprNode MaxValue bool Comment string }
PartitionDefinition defines a single partition.
type PartitionOptions ¶
type PartitionOptions struct { Tp model.PartitionType Expr ExprNode ColumnNames []*ColumnName Definitions []*PartitionDefinition Num uint64 }
PartitionOptions specifies the partition options.
type PatternInExpr ¶
type PatternInExpr struct { // Expr is the value expression to be compared. Expr ExprNode // List is the list expression in compare list. List []ExprNode // Not is true, the expression is "not in". Not bool // Sel is the subquery, may be rewritten to other type of expression. Sel ExprNode // contains filtered or unexported fields }
PatternInExpr is the expression for in operator, like "expr in (1, 2, 3)" or "expr in (select c from t)".
func (*PatternInExpr) Accept ¶
func (n *PatternInExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*PatternInExpr) Format ¶
func (n *PatternInExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*PatternInExpr) GetFlag ¶
func (en *PatternInExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type PatternLikeExpr ¶
type PatternLikeExpr struct { // Expr is the expression to be checked. Expr ExprNode // Pattern is the like expression. Pattern ExprNode // Not is true, the expression is "not like". Not bool Escape byte PatChars []byte PatTypes []byte // contains filtered or unexported fields }
PatternLikeExpr is the expression for like operator, e.g, expr like "%123%"
func (*PatternLikeExpr) Accept ¶
func (n *PatternLikeExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*PatternLikeExpr) Format ¶
func (n *PatternLikeExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*PatternLikeExpr) GetFlag ¶
func (en *PatternLikeExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type PatternRegexpExpr ¶
type PatternRegexpExpr struct { // Expr is the expression to be checked. Expr ExprNode // Pattern is the expression for pattern. Pattern ExprNode // Not is true, the expression is "not rlike", Not bool // Re is the compiled regexp. Re *regexp.Regexp // Sexpr is the string for Expr expression. Sexpr *string // contains filtered or unexported fields }
PatternRegexpExpr is the pattern expression for pattern match.
func (*PatternRegexpExpr) Accept ¶
func (n *PatternRegexpExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*PatternRegexpExpr) Format ¶
func (n *PatternRegexpExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*PatternRegexpExpr) GetFlag ¶
func (en *PatternRegexpExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type PositionExpr ¶
type PositionExpr struct { // N is the position, started from 1 now. N int // Refer is the result field the position refers to. Refer *ResultField // contains filtered or unexported fields }
PositionExpr is the expression for order by and group by position. MySQL use position expression started from 1, it looks a little confused inner. maybe later we will use 0 at first.
func (*PositionExpr) Accept ¶
func (n *PositionExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*PositionExpr) Format ¶
func (n *PositionExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*PositionExpr) GetFlag ¶
func (en *PositionExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type PrepareStmt ¶
type PrepareStmt struct { Name string SQLText string SQLVar *VariableExpr // contains filtered or unexported fields }
PrepareStmt is a statement to prepares a SQL statement which contains placeholders, and it is executed with ExecuteStmt and released with DeallocateStmt. See https://dev.mysql.com/doc/refman/5.7/en/prepare.html
type Prepared ¶
type Prepared struct { Stmt StmtNode Params []ParamMarkerExpr SchemaVersion int64 UseCache bool }
Prepared represents a prepared statement.
type PrivElem ¶
type PrivElem struct { Priv mysql.PrivilegeType Cols []*ColumnName // contains filtered or unexported fields }
PrivElem is the privilege type and optional column list.
type ReferOptionType ¶
type ReferOptionType int
ReferOptionType is the type for refer options.
const ( ReferOptionNoOption ReferOptionType = iota ReferOptionRestrict ReferOptionCascade ReferOptionSetNull ReferOptionNoAction )
Refer option types.
func (ReferOptionType) String ¶
func (r ReferOptionType) String() string
String implements fmt.Stringer interface.
type ReferenceDef ¶
type ReferenceDef struct { Table *TableName IndexColNames []*IndexColName OnDelete *OnDeleteOpt OnUpdate *OnUpdateOpt // contains filtered or unexported fields }
ReferenceDef is used for parsing foreign key reference option from SQL. See http://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html
func (*ReferenceDef) Accept ¶
func (n *ReferenceDef) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type RenameTableStmt ¶
type RenameTableStmt struct { OldTable *TableName NewTable *TableName // TableToTables is only useful for syncer which depends heavily on tidb parser to do some dirty work for now. // TODO: Refactor this when you are going to add full support for multiple schema changes. TableToTables []*TableToTable // contains filtered or unexported fields }
RenameTableStmt is a statement to rename a table. See http://dev.mysql.com/doc/refman/5.7/en/rename-table.html
type ResultField ¶
type ResultField struct { Column *model.ColumnInfo ColumnAsName model.CIStr Table *model.TableInfo TableAsName model.CIStr DBName model.CIStr // Expr represents the expression for the result field. If it is generated from a select field, it would // be the expression of that select field, otherwise the type would be ValueExpr and value // will be set for every retrieved row. Expr ExprNode TableName *TableName // Referenced indicates the result field has been referenced or not. // If not, we don't need to get the values. Referenced bool }
ResultField represents a result field which can be a column from a table, or an expression in select field. It is a generated property during binding process. ResultField is the key element to evaluate a ColumnNameExpr. After resolving process, every ColumnNameExpr will be resolved to a ResultField. During execution, every row retrieved from table will set the row value to ResultFields of that table, so ColumnNameExpr resolved to that ResultField can be easily evaluated.
type ResultSetNode ¶
type ResultSetNode interface { Node }
ResultSetNode interface has a ResultFields property, represents a Node that returns result set. Implementations include SelectStmt, SubqueryExpr, TableSource, TableName and Join.
type RevokeStmt ¶
type RevokeStmt struct { Privs []*PrivElem ObjectType ObjectTypeType Level *GrantLevel Users []*UserSpec // contains filtered or unexported fields }
RevokeStmt is the struct for REVOKE statement.
type RollbackStmt ¶
type RollbackStmt struct {
// contains filtered or unexported fields
}
RollbackStmt is a statement to roll back the current transaction. See https://dev.mysql.com/doc/refman/5.7/en/commit.html
type RowExpr ¶
type RowExpr struct { Values []ExprNode // contains filtered or unexported fields }
RowExpr is the expression for row constructor. See https://dev.mysql.com/doc/refman/5.7/en/row-subqueries.html
func (*RowExpr) GetFlag ¶
func (en *RowExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type SelectField ¶
type SelectField struct { // Offset is used to get original text. Offset int // WildCard is not nil, Expr will be nil. WildCard *WildCardField // Expr is not nil, WildCard will be nil. Expr ExprNode // AsName is alias name for Expr. AsName model.CIStr // Auxiliary stands for if this field is auxiliary. // When we add a Field into SelectField list which is used for having/orderby clause but the field is not in select clause, // we should set its Auxiliary to true. Then the TrimExec will trim the field. Auxiliary bool // contains filtered or unexported fields }
SelectField represents fields in select statement. There are two type of select field: wildcard and expression with optional alias name.
func (*SelectField) Accept ¶
func (n *SelectField) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type SelectLockType ¶
type SelectLockType int
SelectLockType is the lock type for SelectStmt.
const ( SelectLockNone SelectLockType = iota SelectLockForUpdate )
Select lock types.
func (SelectLockType) String ¶
func (slt SelectLockType) String() string
String implements fmt.Stringer.
type SelectStmt ¶
type SelectStmt struct { // SelectStmtOpts wraps around select hints and switches. *SelectStmtOpts // Distinct represents whether the select has distinct option. Distinct bool // From is the from clause of the query. From *TableRefsClause // Where is the where clause in select statement. Where ExprNode // Fields is the select expression list. Fields *FieldList // GroupBy is the group by expression list. GroupBy *GroupByClause // Having is the having condition. Having *HavingClause // WindowSpecs is the window specification list. WindowSpecs []WindowSpec // OrderBy is the ordering expression list. OrderBy *OrderByClause // Limit is the limit clause. Limit *Limit // LockTp is the lock type LockTp SelectLockType // TableHints represents the table level Optimizer Hint for join type TableHints []*TableOptimizerHint // IsAfterUnionDistinct indicates whether it's a stmt after "union distinct". IsAfterUnionDistinct bool // IsInBraces indicates whether it's a stmt in brace. IsInBraces bool // contains filtered or unexported fields }
SelectStmt represents the select query node. See https://dev.mysql.com/doc/refman/5.7/en/select.html
type SelectStmtOpts ¶
type SelectStmtOpts struct { Distinct bool SQLCache bool CalcFoundRows bool StraightJoin bool Priority mysql.PriorityEnum TableHints []*TableOptimizerHint }
SelectStmtOpts wrap around select hints and switches
type SensitiveStmtNode ¶
type SensitiveStmtNode interface { StmtNode // SecureText is different from Text that it hide password information. SecureText() string }
SensitiveStmtNode overloads StmtNode and provides a SecureText method.
type SetPwdStmt ¶
type SetPwdStmt struct { User *auth.UserIdentity Password string // contains filtered or unexported fields }
SetPwdStmt is a statement to assign a password to user account. See https://dev.mysql.com/doc/refman/5.7/en/set-password.html
func (*SetPwdStmt) Accept ¶
func (n *SetPwdStmt) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*SetPwdStmt) SecureText ¶
func (n *SetPwdStmt) SecureText() string
SecureText implements SensitiveStatement interface.
type SetStmt ¶
type SetStmt struct { // Variables is the list of variable assignment. Variables []*VariableAssignment // contains filtered or unexported fields }
SetStmt is the statement to set variables.
type ShowSlow ¶
type ShowSlow struct { Tp ShowSlowType Count uint64 Kind ShowSlowKind }
ShowSlow is used for the following command:
admin show slow top [ internal | all] N admin show slow recent N
type ShowSlowKind ¶
type ShowSlowKind int
ShowSlowKind defines the kind for SlowSlow statement when the type is ShowSlowTop.
const ( // ShowSlowKindDefault is a ShowSlowKind constant. ShowSlowKindDefault ShowSlowKind = iota // ShowSlowKindInternal is a ShowSlowKind constant. ShowSlowKindInternal // ShowSlowKindAll is a ShowSlowKind constant. ShowSlowKindAll )
type ShowSlowType ¶
type ShowSlowType int
ShowSlowType defines the type for SlowSlow statement.
const ( // ShowSlowTop is a ShowSlowType constant. ShowSlowTop ShowSlowType = iota // ShowSlowRecent is a ShowSlowType constant. ShowSlowRecent )
type ShowStmt ¶
type ShowStmt struct { Tp ShowStmtType // Databases/Tables/Columns/.... DBName string Table *TableName // Used for showing columns. Column *ColumnName // Used for `desc table column`. Flag int // Some flag parsed from sql, such as FULL. Full bool User *auth.UserIdentity // Used for show grants. // GlobalScope is used by show variables GlobalScope bool Pattern *PatternLikeExpr Where ExprNode // contains filtered or unexported fields }
ShowStmt is a statement to provide information about databases, tables, columns and so on. See https://dev.mysql.com/doc/refman/5.7/en/show.html
type StmtNode ¶
type StmtNode interface { Node // contains filtered or unexported methods }
StmtNode represents statement node. Name of implementations should have 'Stmt' suffix.
type SubqueryExpr ¶
type SubqueryExpr struct { // Query is the query SelectNode. Query ResultSetNode Evaluated bool MultiRows bool Exists bool // contains filtered or unexported fields }
SubqueryExpr represents a subquery.
func (*SubqueryExpr) Accept ¶
func (n *SubqueryExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*SubqueryExpr) Format ¶
func (n *SubqueryExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*SubqueryExpr) GetFlag ¶
func (en *SubqueryExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type TableName ¶
type TableName struct { Schema model.CIStr Name model.CIStr DBInfo *model.DBInfo TableInfo *model.TableInfo IndexHints []*IndexHint // contains filtered or unexported fields }
TableName represents a table name.
type TableOptimizerHint ¶
type TableOptimizerHint struct { // HintName is the name or alias of the table(s) which the hint will affect. // Table hints has no schema info // It allows only table name or alias (if table has an alias) HintName model.CIStr Tables []model.CIStr // Statement Execution Time Optimizer Hints // See https://dev.mysql.com/doc/refman/5.7/en/optimizer-hints.html#optimizer-hints-execution-time MaxExecutionTime uint64 // contains filtered or unexported fields }
TableOptimizerHint is Table level optimizer hint
func (*TableOptimizerHint) Accept ¶
func (n *TableOptimizerHint) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type TableOption ¶
type TableOption struct { Tp TableOptionType StrValue string UintValue uint64 }
TableOption is used for parsing table option from SQL.
type TableOptionType ¶
type TableOptionType int
TableOptionType is the type for TableOption
const ( TableOptionNone TableOptionType = iota TableOptionEngine TableOptionCharset TableOptionCollate TableOptionAutoIncrement TableOptionComment TableOptionAvgRowLength TableOptionCheckSum TableOptionCompression TableOptionConnection TableOptionPassword TableOptionKeyBlockSize TableOptionMaxRows TableOptionMinRows TableOptionDelayKeyWrite TableOptionRowFormat TableOptionStatsPersistent TableOptionShardRowID TableOptionPackKeys )
TableOption types.
type TableRefsClause ¶
type TableRefsClause struct { TableRefs *Join // contains filtered or unexported fields }
TableRefsClause represents table references clause in dml statement.
func (*TableRefsClause) Accept ¶
func (n *TableRefsClause) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type TableSource ¶
type TableSource struct { // Source is the source of the data, can be a TableName, // a SelectStmt, a UnionStmt, or a JoinNode. Source ResultSetNode // AsName is the alias name of the table source. AsName model.CIStr // contains filtered or unexported fields }
TableSource represents table source with a name.
func (*TableSource) Accept ¶
func (n *TableSource) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type TableToTable ¶
type TableToTable struct { OldTable *TableName NewTable *TableName // contains filtered or unexported fields }
TableToTable represents renaming old table to new table used in RenameTableStmt.
func (*TableToTable) Accept ¶
func (n *TableToTable) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type TrimDirectionType ¶
type TrimDirectionType int
TrimDirectionType is the type for trim direction.
const ( // TrimBothDefault trims from both direction by default. TrimBothDefault TrimDirectionType = iota // TrimBoth trims from both direction with explicit notation. TrimBoth // TrimLeading trims from left. TrimLeading // TrimTrailing trims from right. TrimTrailing )
type TruncateTableStmt ¶
type TruncateTableStmt struct { Table *TableName // contains filtered or unexported fields }
TruncateTableStmt is a statement to empty a table completely. See https://dev.mysql.com/doc/refman/5.7/en/truncate-table.html
type UnaryOperationExpr ¶
type UnaryOperationExpr struct { // Op is the operator opcode. Op opcode.Op // V is the unary expression. V ExprNode // contains filtered or unexported fields }
UnaryOperationExpr is the expression for unary operator.
func (*UnaryOperationExpr) Accept ¶
func (n *UnaryOperationExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*UnaryOperationExpr) Format ¶
func (n *UnaryOperationExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*UnaryOperationExpr) GetFlag ¶
func (en *UnaryOperationExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type UnionSelectList ¶
type UnionSelectList struct { Selects []*SelectStmt // contains filtered or unexported fields }
UnionSelectList represents the select list in a union statement.
func (*UnionSelectList) Accept ¶
func (n *UnionSelectList) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type UnionStmt ¶
type UnionStmt struct { SelectList *UnionSelectList OrderBy *OrderByClause Limit *Limit // contains filtered or unexported fields }
UnionStmt represents "union statement" See https://dev.mysql.com/doc/refman/5.7/en/union.html
type UpdateStmt ¶
type UpdateStmt struct { TableRefs *TableRefsClause List []*Assignment Where ExprNode Order *OrderByClause Limit *Limit Priority mysql.PriorityEnum IgnoreErr bool MultipleTable bool TableHints []*TableOptimizerHint // contains filtered or unexported fields }
UpdateStmt is a statement to update columns of existing rows in tables with new values. See https://dev.mysql.com/doc/refman/5.7/en/update.html
type UseStmt ¶
type UseStmt struct { DBName string // contains filtered or unexported fields }
UseStmt is a statement to use the DBName database as the current database. See https://dev.mysql.com/doc/refman/5.7/en/use.html
type UserSpec ¶
type UserSpec struct { User *auth.UserIdentity AuthOpt *AuthOption }
UserSpec is used for parsing create user statement.
func (*UserSpec) EncodedPassword ¶
EncodedPassword returns the encoded password (which is the real data mysql.user). The boolean value indicates input's password format is legal or not.
func (*UserSpec) SecurityString ¶
SecurityString formats the UserSpec without password information.
type ValueExpr ¶
type ValueExpr interface { ExprNode SetValue(val interface{}) GetValue() interface{} GetDatumString() string GetString() string GetProjectionOffset() int SetProjectionOffset(offset int) }
ValueExpr define a interface for ValueExpr.
type ValuesExpr ¶
type ValuesExpr struct { // Column is column name. Column *ColumnNameExpr // contains filtered or unexported fields }
ValuesExpr is the expression used in INSERT VALUES.
func (*ValuesExpr) Accept ¶
func (n *ValuesExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*ValuesExpr) Format ¶
func (n *ValuesExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*ValuesExpr) GetFlag ¶
func (en *ValuesExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type VariableAssignment ¶
type VariableAssignment struct { Name string Value ExprNode IsGlobal bool IsSystem bool // ExtendValue is a way to store extended info. // VariableAssignment should be able to store information for SetCharset/SetPWD Stmt. // For SetCharsetStmt, Value is charset, ExtendValue is collation. // TODO: Use SetStmt to implement set password statement. ExtendValue ValueExpr // contains filtered or unexported fields }
VariableAssignment is a variable assignment struct.
func (*VariableAssignment) Accept ¶
func (n *VariableAssignment) Accept(v Visitor) (Node, bool)
Accept implements Node interface.
type VariableExpr ¶
type VariableExpr struct { // Name is the variable name. Name string // IsGlobal indicates whether this variable is global. IsGlobal bool // IsSystem indicates whether this variable is a system variable in current session. IsSystem bool // ExplicitScope indicates whether this variable scope is set explicitly. ExplicitScope bool // Value is the variable value. Value ExprNode // contains filtered or unexported fields }
VariableExpr is the expression for variable.
func (*VariableExpr) Accept ¶
func (n *VariableExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*VariableExpr) Format ¶
func (n *VariableExpr) Format(w io.Writer)
Format the ExprNode into a Writer.
func (*VariableExpr) GetFlag ¶
func (en *VariableExpr) GetFlag() uint64
GetFlag implements ExprNode interface.
type Visitor ¶
type Visitor interface { // Enter is called before children nodes are visited. // The returned node must be the same type as the input node n. // skipChildren returns true means children nodes should be skipped, // this is useful when work is done in Enter and there is no need to visit children. Enter(n Node) (node Node, skipChildren bool) // Leave is called after children nodes have been visited. // The returned node's type can be different from the input node if it is a ExprNode, // Non-expression node must be the same type as the input node n. // ok returns false to stop visiting. Leave(n Node) (node Node, ok bool) }
Visitor visits a Node.
type WhenClause ¶
type WhenClause struct { // Expr is the condition expression in WhenClause. Expr ExprNode // Result is the result expression in WhenClause. Result ExprNode // contains filtered or unexported fields }
WhenClause is the when clause in Case expression for "when condition then result".
func (*WhenClause) Accept ¶
func (n *WhenClause) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type WildCardField ¶
type WildCardField struct { Table model.CIStr Schema model.CIStr // contains filtered or unexported fields }
WildCardField is a special type of select field content.
func (*WildCardField) Accept ¶
func (n *WildCardField) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
type WindowFuncExpr ¶
type WindowFuncExpr struct { // F is the function name. F string // Args is the function args. Args []ExprNode // Distinct cannot be true for most window functions, except `max` and `min`. // We need to raise error if it is not allowed to be true. Distinct bool // IgnoreNull indicates how to handle null value. // MySQL only supports `RESPECT NULLS`, so we need to raise error if it is true. IgnoreNull bool // FromLast indicates the calculation direction of this window function. // MySQL only supports calculation from first, so we need to raise error if it is true. FromLast bool // Spec is the specification of this window. Spec WindowSpec // contains filtered or unexported fields }
WindowFuncExpr represents window function expression.
func (*WindowFuncExpr) Accept ¶
func (n *WindowFuncExpr) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.
func (*WindowFuncExpr) Format ¶
func (n *WindowFuncExpr) Format(w io.Writer)
Format formats the window function expression into a Writer.
type WindowSpec ¶
type WindowSpec struct { Name model.CIStr // Ref is the reference window of this specification. For example, in `w2 as (w1 order by a)`, // the definition of `w2` references `w1`. Ref model.CIStr PartitionBy *PartitionByClause OrderBy *OrderByClause Frame *FrameClause // contains filtered or unexported fields }
WindowSpec is the specification of a window.
func (*WindowSpec) Accept ¶
func (n *WindowSpec) Accept(v Visitor) (Node, bool)
Accept implements Node Accept interface.