Documentation
¶
Index ¶
- Constants
- Variables
- func AsInterface(node ValExpr) (interface{}, error)
- func EncodeValue(buf *bytes.Buffer, value interface{}) error
- func ForceEOF(yylex interface{})
- func FormatImpossible(buf *TrackedBuffer, node SQLNode)
- func GetColName(node Expr) string
- func GetDBName(sql string) (string, error)
- func GetShardList(sql string, bindVariables map[string]interface{}, tabletKeys []key.KeyspaceId) (shardlist []int, err error)
- func GetTableName(node SimpleTableExpr) string
- func HasINClause(conditions []BoolExpr) bool
- func IsColName(node ValExpr) bool
- func IsSimpleTuple(node ValExpr) bool
- func IsValue(node ValExpr) bool
- func SetAllowComments(yylex interface{}, allow bool)
- func SetParseTree(yylex interface{}, stmt Statement)
- func String(node SQLNode) string
- func StringIn(str string, values ...string) bool
- type AliasedTableExpr
- type AndExpr
- type BinaryExpr
- type BindLocation
- type BoolExpr
- type CaseExpr
- type ColName
- type Columns
- type Comments
- type ComparisonExpr
- type DDL
- type DDLPlan
- type Delete
- type EncoderFunc
- type ExecPlan
- type ExistsExpr
- type Expr
- type FuncExpr
- type GroupBy
- type IndexHints
- type IndexScore
- type Insert
- type InsertRows
- type JoinTableExpr
- type Limit
- type NonStarExpr
- type NotExpr
- type NullCheck
- type NullVal
- type NumVal
- type OnDup
- type OrExpr
- type Order
- type OrderBy
- type ParenBoolExpr
- type ParenTableExpr
- type ParsedQuery
- func GenerateDeleteOuterQuery(del *Delete, pkIndex *schema.Index) *ParsedQuery
- func GenerateDeleteSubquery(del *Delete, tableInfo *schema.Table) *ParsedQuery
- func GenerateEqualOuterQuery(sel *Select, tableInfo *schema.Table) *ParsedQuery
- func GenerateFieldQuery(statement Statement) *ParsedQuery
- func GenerateFullQuery(statement Statement) *ParsedQuery
- func GenerateInOuterQuery(sel *Select, tableInfo *schema.Table) *ParsedQuery
- func GenerateInsertOuterQuery(ins *Insert) *ParsedQuery
- func GenerateSelectLimitQuery(selStmt SelectStatement) *ParsedQuery
- func GenerateSelectSubquery(sel *Select, tableInfo *schema.Table, index string) *ParsedQuery
- func GenerateSubquery(columns []string, table *AliasedTableExpr, where *Where, order OrderBy, ...) *ParsedQuery
- func GenerateUpdateOuterQuery(upd *Update, pkIndex *schema.Index) *ParsedQuery
- func GenerateUpdateSubquery(upd *Update, tableInfo *schema.Table) *ParsedQuery
- type ParserError
- type PlanType
- type RangeCond
- type ReasonType
- type RoutingPlan
- type SQLNode
- type Select
- type SelectExpr
- type SelectExprs
- type SelectStatement
- type Set
- type SimpleTableExpr
- type StarExpr
- type Statement
- type StrVal
- type StreamExecPlan
- type Subquery
- type TableExpr
- type TableExprs
- type TableGetter
- type TableName
- type Tokenizer
- type TrackedBuffer
- type Tuple
- type UnaryExpr
- type Union
- type Update
- type UpdateExpr
- type UpdateExprs
- type ValArg
- type ValExpr
- type ValExprs
- type ValTuple
- type Values
- type When
- type Where
Constants ¶
const ( AST_FOR_UPDATE = " for update" AST_SHARE_MODE = " lock in share mode" )
Select.Lock
const ( AST_UNION = "union" AST_UNION_ALL = "union all" AST_SET_MINUS = "minus" AST_EXCEPT = "except" AST_INTERSECT = "intersect" )
Union.Type
const ( AST_CREATE = "create" AST_ALTER = "alter" AST_DROP = "drop" AST_RENAME = "rename" )
const ( AST_JOIN = "join" AST_STRAIGHT_JOIN = "straight_join" AST_LEFT_JOIN = "left join" AST_RIGHT_JOIN = "right join" AST_CROSS_JOIN = "cross join" AST_NATURAL_JOIN = "natural join" )
JoinTableExpr.Join
const ( AST_USE = "use" AST_IGNORE = "ignore" AST_FORCE = "force" )
const ( AST_WHERE = "where" AST_HAVING = "having" )
Where.Type
const ( AST_EQ = "=" AST_LT = "<" AST_GT = ">" AST_LE = "<=" AST_GE = ">=" AST_NE = "!=" AST_NSE = "<=>" AST_IN = "in" AST_NOT_IN = "not in" AST_LIKE = "like" AST_NOT_LIKE = "not like" )
ComparisonExpr.Operator
const ( AST_BETWEEN = "between" AST_NOT_BETWEEN = "not between" )
RangeCond.Operator
const ( AST_IS_NULL = "is null" AST_IS_NOT_NULL = "is not null" )
NullCheck.Operator
const ( AST_BITAND = '&' AST_BITOR = '|' AST_BITXOR = '^' AST_PLUS = '+' AST_MINUS = '-' AST_MULT = '*' AST_DIV = '/' AST_MOD = '%' )
BinaryExpr.Operator
const ( AST_UPLUS = '+' AST_UMINUS = '-' AST_TILDA = '~' )
UnaryExpr.Operator
const ( AST_ASC = "asc" AST_DESC = "desc" )
Order.Direction
const ( NO_MATCH = scoreValue(-1) PERFECT_SCORE = scoreValue(0) )
const ( EID_NODE = iota VALUE_NODE LIST_NODE OTHER_NODE )
const ALL = 57359
const ALTER = 57411
const AND = 57401
const AS = 57361
const ASC = 57368
const (
AST_DISTINCT = "distinct "
)
Select.Distinct
const BETWEEN = 57366
const BY = 57356
const CASE = 57405
const COMMENT = 57381
const CREATE = 57410
const CROSS = 57396
const DEFAULT = 57374
const DELETE = 57350
const DESC = 57369
const DISTINCT = 57360
const DROP = 57412
const DUPLICATE = 57372
const ELSE = 57408
const END = 57409
const EOFCHAR = 0x100
const EXCEPT = 57388
const EXISTS = 57362
const FOR = 57358
const FORCE = 57399
const FROM = 57351
const GE = 57383
const GROUP = 57353
const HAVING = 57354
const ID = 57377
const IF = 57419
const IGNORE = 57418
const IN = 57363
const INDEX = 57415
const INNER = 57394
const INSERT = 57348
const INTERSECT = 57389
const INTO = 57371
const IS = 57364
const JOIN = 57390
const KEY = 57373
const LE = 57382
const LEFT = 57392
const LEX_ERROR = 57346
const LIKE = 57365
const LIMIT = 57357
const LOCK = 57376
const MINUS = 57387
const NATURAL = 57397
const NE = 57384
const NOT = 57403
const NULL = 57367
const NULL_SAFE_EQUAL = 57385
const NUMBER = 57379
const ON = 57400
const OR = 57402
const ORDER = 57355
const OUTER = 57395
const RENAME = 57413
const RIGHT = 57393
const SELECT = 57347
const SET = 57375
const STRAIGHT_JOIN = 57391
const STRING = 57378
const TABLE = 57414
const THEN = 57407
const TO = 57417
const UNARY = 57404
const UNION = 57386
const UNIQUE = 57420
const UPDATE = 57349
const USE = 57398
const USING = 57421
const VALUES = 57370
const VALUE_ARG = 57380
const VIEW = 57416
const WHEN = 57406
const WHERE = 57352
Variables ¶
var ( SHARE = []byte("share") MODE = []byte("mode") IF_BYTES = []byte("if") VALUES_BYTES = []byte("values") )
Functions ¶
func AsInterface ¶
AsInterface converts the ValExpr to an interface. It converts ValTuple to []interface{}, ValArg to string, StrVal to sqltypes.String, NumVal to sqltypes.Numeric. Otherwise, it returns an error.
func EncodeValue ¶
func FormatImpossible ¶
func FormatImpossible(buf *TrackedBuffer, node SQLNode)
FormatImpossible is a callback function used by TrackedBuffer to generate a modified version of the query where all selects have impossible where clauses. It overrides a few node types and passes the rest down to the default FormatNode.
func GetColName ¶
GetColName returns the column name, only if it's a simple expression. Otherwise, it returns "".
func GetDBName ¶
GetDBName parses the specified DML and returns the db name if it was used to qualify the table name. It returns an error if parsing fails or if the statement is not a DML.
func GetShardList ¶
func GetTableName ¶
func GetTableName(node SimpleTableExpr) string
GetTableName returns the table name from the SimpleTableExpr only if it's a simple expression. Otherwise, it returns "".
func HasINClause ¶
HasINCaluse returns true if an yof the conditions has an IN clause.
func IsSimpleTuple ¶
IsSimpleTuple returns true if the ValExpr is a ValTuple that contains simple values.
func IsValue ¶
IsVal returns true if the ValExpr is a string, number or value arg. NULL is not considered to be a value.
func SetAllowComments ¶
func SetAllowComments(yylex interface{}, allow bool)
func SetParseTree ¶
func SetParseTree(yylex interface{}, stmt Statement)
Types ¶
type AliasedTableExpr ¶
type AliasedTableExpr struct { Expr SimpleTableExpr As []byte Hints *IndexHints }
AliasedTableExpr represents a table expression coupled with an optional alias or index hint.
func (*AliasedTableExpr) Format ¶
func (node *AliasedTableExpr) Format(buf *TrackedBuffer)
func (*AliasedTableExpr) ITableExpr ¶
func (*AliasedTableExpr) ITableExpr()
type AndExpr ¶
type AndExpr struct {
Left, Right BoolExpr
}
AndExpr represents an AND expression.
func (*AndExpr) Format ¶
func (node *AndExpr) Format(buf *TrackedBuffer)
type BinaryExpr ¶
BinaryExpr represents a binary value expression.
func (*BinaryExpr) Format ¶
func (node *BinaryExpr) Format(buf *TrackedBuffer)
func (*BinaryExpr) IExpr ¶
func (*BinaryExpr) IExpr()
func (*BinaryExpr) IValExpr ¶
func (*BinaryExpr) IValExpr()
type BindLocation ¶
type BindLocation struct {
Offset, Length int
}
type BoolExpr ¶
type BoolExpr interface { IBoolExpr() Expr }
BoolExpr represents a boolean expression.
type CaseExpr ¶
CaseExpr represents a CASE expression.
func (*CaseExpr) Format ¶
func (node *CaseExpr) Format(buf *TrackedBuffer)
type ColName ¶
type ColName struct {
Name, Qualifier []byte
}
ColName represents a column name.
func (*ColName) Format ¶
func (node *ColName) Format(buf *TrackedBuffer)
type Columns ¶
type Columns []SelectExpr
Columns represents an insert column list. The syntax for Columns is a subset of SelectExprs. So, it's castable to a SelectExprs and can be analyzed as such.
func (Columns) Format ¶
func (node Columns) Format(buf *TrackedBuffer)
type Comments ¶
type Comments [][]byte
Comments represents a list of comments.
func (Comments) Format ¶
func (node Comments) Format(buf *TrackedBuffer)
type ComparisonExpr ¶
ComparisonExpr represents a two-value comparison expression.
func (*ComparisonExpr) Format ¶
func (node *ComparisonExpr) Format(buf *TrackedBuffer)
func (*ComparisonExpr) IBoolExpr ¶
func (*ComparisonExpr) IBoolExpr()
func (*ComparisonExpr) IExpr ¶
func (*ComparisonExpr) IExpr()
type DDL ¶
DDL represents a CREATE, ALTER, DROP or RENAME statement. Table is set for AST_ALTER, AST_DROP, AST_RENAME. NewName is set for AST_ALTER, AST_CREATE, AST_RENAME.
func (*DDL) Format ¶
func (node *DDL) Format(buf *TrackedBuffer)
func (*DDL) IStatement ¶
func (*DDL) IStatement()
type Delete ¶
Delete represents a DELETE statement.
func (*Delete) Format ¶
func (node *Delete) Format(buf *TrackedBuffer)
func (*Delete) IStatement ¶
func (*Delete) IStatement()
type EncoderFunc ¶
type ExecPlan ¶
type ExecPlan struct { PlanId PlanType Reason ReasonType TableName string // FieldQuery is used to fetch field info FieldQuery *ParsedQuery // FullQuery will be set for all plans. FullQuery *ParsedQuery // For PK plans, only OuterQuery is set. // For SUBQUERY plans, Subquery is also set. // IndexUsed is set only for PLAN_SELECT_SUBQUERY OuterQuery *ParsedQuery Subquery *ParsedQuery IndexUsed string // For selects, columns to be returned // For PLAN_INSERT_SUBQUERY, columns to be inserted ColumnNumbers []int // PLAN_PK_EQUAL, PLAN_DML_PK: where clause values // PLAN_PK_IN: IN clause values // PLAN_INSERT_PK: values clause PKValues []interface{} // For update: set clause if pk is changing SecondaryPKValues []interface{} // For PLAN_INSERT_SUBQUERY: pk columns in the subquery result SubqueryPKColumns []int // PLAN_SET SetKey string SetValue interface{} }
ExecPlan is built for selects and DMLs. PK Values values within ExecPlan can be: sqltypes.Value: sourced form the query, or string: bind variable name starting with ':', or nil if no value was specified
type ExistsExpr ¶
type ExistsExpr struct {
Subquery *Subquery
}
ExistsExpr represents an EXISTS expression.
func (*ExistsExpr) Format ¶
func (node *ExistsExpr) Format(buf *TrackedBuffer)
func (*ExistsExpr) IBoolExpr ¶
func (*ExistsExpr) IBoolExpr()
func (*ExistsExpr) IExpr ¶
func (*ExistsExpr) IExpr()
type FuncExpr ¶
type FuncExpr struct { Name []byte Distinct bool Exprs SelectExprs }
FuncExpr represents a function call.
func (*FuncExpr) Format ¶
func (node *FuncExpr) Format(buf *TrackedBuffer)
type GroupBy ¶
type GroupBy []ValExpr
GroupBy represents a GROUP BY clause.
func (GroupBy) Format ¶
func (node GroupBy) Format(buf *TrackedBuffer)
type IndexHints ¶
IndexHints represents a list of index hints.
func (*IndexHints) Format ¶
func (node *IndexHints) Format(buf *TrackedBuffer)
type IndexScore ¶
func NewIndexScore ¶
func NewIndexScore(index *schema.Index) *IndexScore
func NewIndexScoreList ¶
func NewIndexScoreList(indexes []*schema.Index) []*IndexScore
func (*IndexScore) FindMatch ¶
func (is *IndexScore) FindMatch(columnName string) int
func (*IndexScore) GetScore ¶
func (is *IndexScore) GetScore() scoreValue
type Insert ¶
type Insert struct { Comments Comments Table *TableName Columns Columns Rows InsertRows OnDup OnDup }
Insert represents an INSERT statement.
func (*Insert) Format ¶
func (node *Insert) Format(buf *TrackedBuffer)
func (*Insert) IStatement ¶
func (*Insert) IStatement()
type InsertRows ¶
type InsertRows interface { IInsertRows() SQLNode }
InsertRows represents the rows for an INSERT statement.
type JoinTableExpr ¶
JoinTableExpr represents a TableExpr that's a JOIN operation.
func (*JoinTableExpr) Format ¶
func (node *JoinTableExpr) Format(buf *TrackedBuffer)
func (*JoinTableExpr) ITableExpr ¶
func (*JoinTableExpr) ITableExpr()
type Limit ¶
type Limit struct {
Offset, Rowcount ValExpr
}
Limit represents a LIMIT clause.
func (*Limit) Format ¶
func (node *Limit) Format(buf *TrackedBuffer)
type NonStarExpr ¶
NonStarExpr defines a non-'*' select expr.
func (*NonStarExpr) Format ¶
func (node *NonStarExpr) Format(buf *TrackedBuffer)
func (*NonStarExpr) ISelectExpr ¶
func (*NonStarExpr) ISelectExpr()
type NotExpr ¶
type NotExpr struct {
Expr BoolExpr
}
NotExpr represents a NOT expression.
func (*NotExpr) Format ¶
func (node *NotExpr) Format(buf *TrackedBuffer)
type NullCheck ¶
NullCheck represents an IS NULL or an IS NOT NULL expression.
func (*NullCheck) Format ¶
func (node *NullCheck) Format(buf *TrackedBuffer)
type NullVal ¶
type NullVal struct{}
NullVal represents a NULL value.
func (*NullVal) Format ¶
func (node *NullVal) Format(buf *TrackedBuffer)
type NumVal ¶
type NumVal []byte
NumVal represents a number.
func (NumVal) Format ¶
func (node NumVal) Format(buf *TrackedBuffer)
type OnDup ¶
type OnDup UpdateExprs
OnDup represents an ON DUPLICATE KEY clause.
func (OnDup) Format ¶
func (node OnDup) Format(buf *TrackedBuffer)
type OrExpr ¶
type OrExpr struct {
Left, Right BoolExpr
}
OrExpr represents an OR expression.
func (*OrExpr) Format ¶
func (node *OrExpr) Format(buf *TrackedBuffer)
type Order ¶
Order represents an ordering expression.
func (*Order) Format ¶
func (node *Order) Format(buf *TrackedBuffer)
type OrderBy ¶
type OrderBy []*Order
OrderBy represents an ORDER By clause.
func (OrderBy) Format ¶
func (node OrderBy) Format(buf *TrackedBuffer)
type ParenBoolExpr ¶
type ParenBoolExpr struct {
Expr BoolExpr
}
ParenBoolExpr represents a parenthesized boolean expression.
func (*ParenBoolExpr) Format ¶
func (node *ParenBoolExpr) Format(buf *TrackedBuffer)
func (*ParenBoolExpr) IBoolExpr ¶
func (*ParenBoolExpr) IBoolExpr()
func (*ParenBoolExpr) IExpr ¶
func (*ParenBoolExpr) IExpr()
type ParenTableExpr ¶
type ParenTableExpr struct {
Expr TableExpr
}
ParenTableExpr represents a parenthesized TableExpr.
func (*ParenTableExpr) Format ¶
func (node *ParenTableExpr) Format(buf *TrackedBuffer)
func (*ParenTableExpr) ITableExpr ¶
func (*ParenTableExpr) ITableExpr()
type ParsedQuery ¶
type ParsedQuery struct { Query string BindLocations []BindLocation }
func GenerateDeleteOuterQuery ¶
func GenerateDeleteOuterQuery(del *Delete, pkIndex *schema.Index) *ParsedQuery
func GenerateDeleteSubquery ¶
func GenerateDeleteSubquery(del *Delete, tableInfo *schema.Table) *ParsedQuery
func GenerateEqualOuterQuery ¶
func GenerateEqualOuterQuery(sel *Select, tableInfo *schema.Table) *ParsedQuery
func GenerateFieldQuery ¶
func GenerateFieldQuery(statement Statement) *ParsedQuery
func GenerateFullQuery ¶
func GenerateFullQuery(statement Statement) *ParsedQuery
----------------------------------------------- Query Generation
func GenerateInOuterQuery ¶
func GenerateInOuterQuery(sel *Select, tableInfo *schema.Table) *ParsedQuery
func GenerateInsertOuterQuery ¶
func GenerateInsertOuterQuery(ins *Insert) *ParsedQuery
func GenerateSelectLimitQuery ¶
func GenerateSelectLimitQuery(selStmt SelectStatement) *ParsedQuery
func GenerateSelectSubquery ¶
func GenerateSelectSubquery(sel *Select, tableInfo *schema.Table, index string) *ParsedQuery
func GenerateSubquery ¶
func GenerateSubquery(columns []string, table *AliasedTableExpr, where *Where, order OrderBy, limit *Limit, for_update bool) *ParsedQuery
func GenerateUpdateOuterQuery ¶
func GenerateUpdateOuterQuery(upd *Update, pkIndex *schema.Index) *ParsedQuery
func GenerateUpdateSubquery ¶
func GenerateUpdateSubquery(upd *Update, tableInfo *schema.Table) *ParsedQuery
func (*ParsedQuery) GenerateQuery ¶
func (*ParsedQuery) MarshalJSON ¶
func (pq *ParsedQuery) MarshalJSON() ([]byte, error)
type ParserError ¶
type ParserError struct {
Message string
}
ParserError: To be deprecated. TODO(sougou): deprecate.
func NewParserError ¶
func NewParserError(format string, args ...interface{}) ParserError
func (ParserError) Error ¶
func (err ParserError) Error() string
type PlanType ¶
type PlanType int
const ( // PLAN_PASS_SELECT is pass through select statements. This is the // default plan for select statements. PLAN_PASS_SELECT PlanType = iota // PLAN_PASS_DML is pass through update & delete statements. This is // the default plan for update and delete statements. PLAN_PASS_DML // PLAN_PK_EQUAL is select statement which has an equality where clause // on primary key PLAN_PK_EQUAL // PLAN_PK_IN is select statement with a single IN clause on primary key PLAN_PK_IN // PLAN_SELECT_SUBQUERY is select statement with a subselect statement PLAN_SELECT_SUBQUERY // PLAN_DML_PK is an update or delete with an equality where clause(s) // on primary key(s) PLAN_DML_PK // PLAN_DML_SUBQUERY is an update or delete with a subselect statement PLAN_DML_SUBQUERY // PLAN_INSERT_PK is insert statement where the PK value is // supplied with the query PLAN_INSERT_PK // PLAN_INSERT_SUBQUERY is same as PLAN_DML_SUBQUERY but for inserts PLAN_INSERT_SUBQUERY // PLAN_SET is for SET statements PLAN_SET // PLAN_DDL is for DDL statements PLAN_DDL NumPlans )
func PlanByName ¶
func (PlanType) MarshalJSON ¶
type RangeCond ¶
RangeCond represents a BETWEEN or a NOT BETWEEN expression.
func (*RangeCond) Format ¶
func (node *RangeCond) Format(buf *TrackedBuffer)
type ReasonType ¶
type ReasonType int
const ( REASON_DEFAULT ReasonType = iota REASON_SELECT REASON_TABLE REASON_NOCACHE REASON_SELECT_LIST REASON_LOCK REASON_WHERE REASON_ORDER REASON_PKINDEX REASON_NOINDEX_MATCH REASON_TABLE_NOINDEX REASON_PK_CHANGE REASON_COMPOSITE_PK REASON_HAS_HINTS REASON_UPSERT )
func (ReasonType) MarshalJSON ¶
func (rt ReasonType) MarshalJSON() ([]byte, error)
func (ReasonType) String ¶
func (rt ReasonType) String() string
type RoutingPlan ¶
type RoutingPlan struct {
// contains filtered or unexported fields
}
type SQLNode ¶
type SQLNode interface {
Format(buf *TrackedBuffer)
}
SQLNode defines the interface for all nodes generated by the parser.
type Select ¶
type Select struct { Comments Comments Distinct string SelectExprs SelectExprs From TableExprs Where *Where GroupBy GroupBy Having *Where OrderBy OrderBy Limit *Limit Lock string }
Select represents a SELECT statement.
func (*Select) Format ¶
func (node *Select) Format(buf *TrackedBuffer)
func (*Select) IInsertRows ¶
func (*Select) IInsertRows()
func (*Select) ISelectStatement ¶
func (*Select) ISelectStatement()
func (*Select) IStatement ¶
func (*Select) IStatement()
type SelectExpr ¶
type SelectExpr interface { ISelectExpr() SQLNode }
SelectExpr represents a SELECT expression.
type SelectExprs ¶
type SelectExprs []SelectExpr
SelectExprs represents SELECT expressions.
func (SelectExprs) Format ¶
func (node SelectExprs) Format(buf *TrackedBuffer)
type SelectStatement ¶
type SelectStatement interface { ISelectStatement() IStatement() IInsertRows() SQLNode }
SelectStatement any SELECT statement.
type Set ¶
type Set struct { Comments Comments Exprs UpdateExprs }
Set represents a SET statement.
func (*Set) Format ¶
func (node *Set) Format(buf *TrackedBuffer)
func (*Set) IStatement ¶
func (*Set) IStatement()
type SimpleTableExpr ¶
type SimpleTableExpr interface { ISimpleTableExpr() SQLNode }
SimpleTableExpr represents a simple table expression.
type StarExpr ¶
type StarExpr struct {
TableName []byte
}
StarExpr defines a '*' or 'table.*' expression.
func (*StarExpr) Format ¶
func (node *StarExpr) Format(buf *TrackedBuffer)
func (*StarExpr) ISelectExpr ¶
func (*StarExpr) ISelectExpr()
type Statement ¶
type Statement interface { IStatement() SQLNode }
Statement represents a statement.
type StrVal ¶
type StrVal []byte
StrVal represents a string value.
func (StrVal) Format ¶
func (node StrVal) Format(buf *TrackedBuffer)
type StreamExecPlan ¶
type StreamExecPlan struct {
FullQuery *ParsedQuery
}
func StreamExecParse ¶
func StreamExecParse(sql string) (plan *StreamExecPlan, err error)
type Subquery ¶
type Subquery struct {
Select SelectStatement
}
Subquery represents a subquery.
func (*Subquery) Format ¶
func (node *Subquery) Format(buf *TrackedBuffer)
func (*Subquery) ISimpleTableExpr ¶
func (*Subquery) ISimpleTableExpr()
type TableExpr ¶
type TableExpr interface { ITableExpr() SQLNode }
TableExpr represents a table expression.
type TableExprs ¶
type TableExprs []TableExpr
TableExprs represents a list of table expressions.
func (TableExprs) Format ¶
func (node TableExprs) Format(buf *TrackedBuffer)
type TableName ¶
type TableName struct {
Name, Qualifier []byte
}
TableName represents a table name.
func (*TableName) Format ¶
func (node *TableName) Format(buf *TrackedBuffer)
func (*TableName) ISimpleTableExpr ¶
func (*TableName) ISimpleTableExpr()
type Tokenizer ¶
type Tokenizer struct { InStream *strings.Reader AllowComments bool ForceEOF bool Position int LastError string ParseTree Statement // contains filtered or unexported fields }
Tokenizer is the struct used to generate SQL tokens for the parser.
func NewStringTokenizer ¶
NewStringTokenizer creates a new Tokenizer for the sql string.
func (*Tokenizer) ConsumeNext ¶
type TrackedBuffer ¶
TrackedBuffer is used to rebuild a query from the ast. bindLocations keeps track of locations in the buffer that use bind variables for efficient future substitutions. nodeFormatter is the formatting function the buffer will use to format a node. By default(nil), it's FormatNode. But you can supply a different formatting function if you want to generate a query that's different from the default.
func NewTrackedBuffer ¶
func NewTrackedBuffer(nodeFormatter func(buf *TrackedBuffer, node SQLNode)) *TrackedBuffer
func (*TrackedBuffer) Fprintf ¶
func (buf *TrackedBuffer) Fprintf(format string, values ...interface{})
Fprintf mimics fmt.Fprintf, but limited to Node(%v), Node.Value(%s) and string(%s). It also allows a %a for a value argument, in which case it adds tracking info for future substitutions.
func (*TrackedBuffer) ParsedQuery ¶
func (buf *TrackedBuffer) ParsedQuery() *ParsedQuery
func (*TrackedBuffer) WriteArg ¶
func (buf *TrackedBuffer) WriteArg(arg string)
WriteArg writes a value argument into the buffer. arg should not contain the ':' prefix. It also adds tracking info for future substitutions.
type Tuple ¶
type Tuple interface { ITuple() ValExpr }
Tuple represents a tuple. It can be ValTuple, Subquery.
type UnaryExpr ¶
UnaryExpr represents a unary value expression.
func (*UnaryExpr) Format ¶
func (node *UnaryExpr) Format(buf *TrackedBuffer)
type Union ¶
type Union struct { Type string Left, Right SelectStatement }
Union represents a UNION statement.
func (*Union) Format ¶
func (node *Union) Format(buf *TrackedBuffer)
func (*Union) IInsertRows ¶
func (*Union) IInsertRows()
func (*Union) ISelectStatement ¶
func (*Union) ISelectStatement()
func (*Union) IStatement ¶
func (*Union) IStatement()
type Update ¶
type Update struct { Comments Comments Table *TableName Exprs UpdateExprs Where *Where OrderBy OrderBy Limit *Limit }
Update represents an UPDATE statement.
func (*Update) Format ¶
func (node *Update) Format(buf *TrackedBuffer)
func (*Update) IStatement ¶
func (*Update) IStatement()
type UpdateExpr ¶
UpdateExpr represents an update expression.
func (*UpdateExpr) Format ¶
func (node *UpdateExpr) Format(buf *TrackedBuffer)
type UpdateExprs ¶
type UpdateExprs []*UpdateExpr
UpdateExprs represents a list of update expressions.
func (UpdateExprs) Format ¶
func (node UpdateExprs) Format(buf *TrackedBuffer)
type ValArg ¶
type ValArg []byte
ValArg represents a named bind var argument.
func (ValArg) Format ¶
func (node ValArg) Format(buf *TrackedBuffer)
type ValExprs ¶
type ValExprs []ValExpr
ValExprs represents a list of value expressions. It's not a valid expression because it's not parenthesized.
func (ValExprs) Format ¶
func (node ValExprs) Format(buf *TrackedBuffer)
type ValTuple ¶
type ValTuple ValExprs
ValTuple represents a tuple of actual values.
func (ValTuple) Format ¶
func (node ValTuple) Format(buf *TrackedBuffer)
type Values ¶
type Values []Tuple
Values represents a VALUES clause.
func (Values) Format ¶
func (node Values) Format(buf *TrackedBuffer)
func (Values) IInsertRows ¶
func (Values) IInsertRows()
type When ¶
When represents a WHEN sub-expression.
func (*When) Format ¶
func (node *When) Format(buf *TrackedBuffer)