Documentation ¶
Index ¶
- Constants
- Variables
- func ContainsVars(expr Expr) bool
- func FillArgs(stmt Statement, args Args) error
- func WalkStmt(v Visitor, stmt Statement)
- type AliasedTableExpr
- type AlterTable
- type AlterTableAddColumn
- type AlterTableAddConstraint
- type AlterTableCmd
- type AlterTableCmds
- type AndExpr
- type Args
- type Array
- type ArrayIndirection
- type BeginTransaction
- type BinaryExpr
- type BinaryOp
- type BoolType
- type BoolVal
- type BytesType
- type BytesVal
- type CaseExpr
- type CastExpr
- type ColumnConstraint
- type ColumnTableDef
- type ColumnType
- type CommitTransaction
- type ComparisonExpr
- type ComparisonOp
- type ConstraintTableDef
- type CreateDatabase
- type CreateIndex
- type CreateTable
- type DBool
- type DDate
- type DFloat
- type DInt
- type DInterval
- type DReference
- type DString
- type DTimestamp
- type DTuple
- type DateType
- type Datum
- type DecimalType
- type Delete
- type Direction
- type DropDatabase
- type DropTable
- type ExistsExpr
- type Explain
- type Expr
- type Exprs
- type FloatType
- type FuncExpr
- type Grant
- type GroupBy
- type IndexIndirection
- type IndexTableDef
- type Indirection
- type IndirectionElem
- type Insert
- type IntType
- type IntVal
- type IntervalType
- type IsExpr
- type IsOfTypeExpr
- type IsOp
- type IsolationLevel
- type JoinCond
- type JoinTableExpr
- type Limit
- type Name
- type NameIndirection
- type NameList
- type NotExpr
- type NotNullConstraint
- type NullConstraint
- type Nullability
- type NumVal
- type OnJoinCond
- type OrExpr
- type Order
- type OrderBy
- type ParenExpr
- type ParenSelect
- type ParenTableExpr
- type PrimaryKeyConstraint
- type QualifiedName
- func (n *QualifiedName) Column() string
- func (n *QualifiedName) Database() string
- func (n *QualifiedName) Index() string
- func (n *QualifiedName) IsStar() bool
- func (n *QualifiedName) NormalizeColumnName() error
- func (n *QualifiedName) NormalizeTableName(database string) error
- func (n *QualifiedName) String() string
- func (n *QualifiedName) Table() string
- type QualifiedNames
- type RangeCond
- type RenameColumn
- type RenameDatabase
- type RenameIndex
- type RenameTable
- type Revoke
- type RollbackTransaction
- type Row
- type Select
- type SelectExpr
- type SelectExprs
- type SelectStatement
- type Set
- type SetTransaction
- type Show
- type ShowColumns
- type ShowDatabases
- type ShowGrants
- type ShowIndex
- type ShowTables
- type SimpleTableExpr
- type StarIndirection
- type Statement
- type StatementList
- type StrVal
- type StringType
- type Subquery
- type Syntax
- type TableDef
- type TableDefs
- type TableExpr
- type TableExprs
- type TargetList
- type TargetType
- type TimestampType
- type Truncate
- type Tuple
- type UnaryExpr
- type UnaryOp
- type Union
- type UniqueConstraint
- type UniqueConstraintTableDef
- type Update
- type UpdateExpr
- type UpdateExprs
- type UsingJoinCond
- type ValArg
- type Values
- type Visitor
- type When
- type Where
Constants ¶
const ( IsNull = iota IsNotNull IsTrue IsNotTrue IsFalse IsNotFalse IsUnknown IsNotUnknown )
IsExpr.Operator
const ABSOLUTE = 57358
const ACCESS = 57359
const ACTION = 57360
const ADD = 57361
const ADMIN = 57362
const AFTER = 57363
const AGGREGATE = 57364
const ALL = 57365
const ALSO = 57366
const ALTER = 57367
const ALWAYS = 57368
const ANALYSE = 57369
const ANALYZE = 57370
const AND = 57371
const ANY = 57372
const ARRAY = 57373
const AS = 57374
const ASC = 57375
const ASSERTION = 57376
const ASSIGNMENT = 57377
const ASYMMETRIC = 57378
const AT = 57379
const ATTRIBUTE = 57380
const AUTHORIZATION = 57381
const BACKWARD = 57382
const BCONST = 57349
const BEFORE = 57383
const BEGIN = 57384
const BETWEEN = 57385
const BIGINT = 57386
const BINARY = 57387
const BIT = 57388
const BLOB = 57389
const BOOL = 57390
const BOOLEAN = 57391
const BOTH = 57392
const BY = 57393
const BYTES = 57394
const CACHE = 57395
const CALLED = 57396
const CASCADE = 57397
const CASCADED = 57398
const CASE = 57399
const CAST = 57400
const CHAIN = 57401
const CHAR = 57402
const CHARACTER = 57403
const CHARACTERISTICS = 57404
const CHECK = 57405
const CHECKPOINT = 57406
const CLASS = 57407
const CLOSE = 57408
const CLUSTER = 57409
const COALESCE = 57410
const COLLATE = 57411
const COLLATION = 57412
const COLUMN = 57413
const COLUMNS = 57414
const COMMENT = 57415
const COMMENTS = 57416
const COMMIT = 57417
const COMMITTED = 57418
const CONCAT = 57419
const CONCURRENTLY = 57420
const CONFIGURATION = 57421
const CONFLICT = 57422
const CONNECTION = 57423
const CONSTRAINT = 57424
const CONSTRAINTS = 57425
const CONTENT = 57426
const CONTINUE = 57427
const CONVERSION = 57428
const COPY = 57429
const COST = 57430
const COVERING = 57431
const CREATE = 57432
const CROSS = 57433
const CSV = 57434
const CUBE = 57435
const CURRENT = 57436
const CURRENT_CATALOG = 57437
const CURRENT_DATE = 57438
const CURRENT_ROLE = 57439
const CURRENT_TIME = 57440
const CURRENT_TIMESTAMP = 57441
const CURRENT_USER = 57442
const CURSOR = 57443
const CYCLE = 57444
const DATA = 57445
const DATABASE = 57446
const DATABASES = 57447
const DATE = 57448
const DAY = 57449
const DEALLOCATE = 57450
const DEC = 57451
const DECIMAL = 57452
const DECLARE = 57453
const DEFAULT = 57454
const DEFAULTS = 57455
const DEFERRABLE = 57456
const DEFERRED = 57457
const DEFINER = 57458
const DELETE = 57459
const DELIMITER = 57460
const DELIMITERS = 57461
const DESC = 57462
const DICTIONARY = 57463
const DISABLE = 57464
const DISCARD = 57465
const DISTINCT = 57466
const DO = 57467
const DOMAIN = 57468
const DOT_DOT = 57353
const DOUBLE = 57469
const DROP = 57470
const EACH = 57471
const ELSE = 57472
const ENABLE = 57473
const ENCODING = 57474
const ENCRYPTED = 57475
const END = 57476
const ENUM = 57477
const ERROR = 57357
const ESCAPE = 57478
const EVENT = 57479
const EXCEPT = 57480
const EXCLUSIVE = 57481
const EXECUTE = 57482
const EXISTS = 57483
const EXPLAIN = 57484
const EXTENSION = 57485
const EXTERNAL = 57486
const EXTRACT = 57487
const FALSE = 57488
const FAMILY = 57489
const FCONST = 57347
const FETCH = 57490
const FILTER = 57491
const FIRST = 57492
const FLOAT = 57493
const FOLLOWING = 57494
const FOR = 57495
const FORCE = 57496
const FOREIGN = 57497
const FORWARD = 57498
const FREEZE = 57499
const FROM = 57500
const FULL = 57501
const FUNCTION = 57502
const FUNCTIONS = 57503
const GLOBAL = 57504
const GRANT = 57505
const GRANTED = 57506
const GRANTS = 57507
const GREATER_EQUALS = 57355
const GREATEST = 57508
const GROUP = 57509
const GROUPING = 57510
const HANDLER = 57511
const HAVING = 57512
const HEADER = 57513
const HOLD = 57514
const HOUR = 57515
const ICONST = 57350
const IDENT = 57346
const IDENTITY = 57516
const IF = 57517
const IMMEDIATE = 57518
const IMMUTABLE = 57519
const IMPLICIT = 57520
const IMPORT = 57521
const IN = 57522
const INCLUDING = 57523
const INCREMENT = 57524
const INDEX = 57525
const INDEXES = 57526
const INHERIT = 57527
const INHERITS = 57528
const INITIALLY = 57529
const INLINE = 57530
const INNER = 57531
const INOUT = 57532
const INPUT = 57533
const INSENSITIVE = 57534
const INSERT = 57535
const INSTEAD = 57536
const INT = 57537
const INT64 = 57538
const INTEGER = 57539
const INTERSECT = 57540
const INTERVAL = 57541
const INTO = 57542
const INVOKER = 57543
const IS = 57544
const ISOLATION = 57545
const JOIN = 57546
const KEY = 57547
const LABEL = 57548
const LANGUAGE = 57549
const LARGE = 57550
const LAST = 57551
const LATERAL = 57552
const LEADING = 57553
const LEAKPROOF = 57554
const LEAST = 57555
const LEFT = 57556
const LESS_EQUALS = 57354
const LEVEL = 57557
const LIKE = 57558
const LIMIT = 57559
const LISTEN = 57560
const LOAD = 57561
const LOCAL = 57562
const LOCALTIME = 57563
const LOCALTIMESTAMP = 57564
const LOCATION = 57565
const LOCK = 57566
const LOCKED = 57567
const LOGGED = 57568
const LSHIFT = 57569
const MAPPING = 57570
const MATCH = 57571
const MATERIALIZED = 57572
const MAXVALUE = 57573
const MINUTE = 57574
const MINVALUE = 57575
const MODE = 57576
const MONTH = 57577
const MOVE = 57578
const NAME = 57579
const NAMES = 57580
const NATIONAL = 57581
const NATURAL = 57582
const NCHAR = 57583
const NEXT = 57584
const NO = 57585
const NONE = 57586
const NOT = 57587
const NOTHING = 57588
const NOTIFY = 57589
const NOT_EQUALS = 57356
const NOT_LA = 57751
const NOWAIT = 57590
const NULL = 57591
const NULLIF = 57592
const NULLS = 57593
const NULLS_LA = 57752
const NUMERIC = 57594
const OBJECT = 57595
const OF = 57596
const OFF = 57597
const OFFSET = 57598
const OIDS = 57599
const ON = 57600
const ONLY = 57601
const OPTION = 57602
const OPTIONS = 57603
const OR = 57604
const ORDER = 57605
const ORDINALITY = 57606
const OUT = 57607
const OUTER = 57608
const OVER = 57609
const OVERLAPS = 57610
const OVERLAY = 57611
const OWNED = 57612
const OWNER = 57613
const PARAM = 57351
const PARSER = 57614
const PARTIAL = 57615
const PARTITION = 57616
const PASSING = 57617
const PASSWORD = 57618
const PLACING = 57619
const PLANS = 57620
const POLICY = 57621
const POSITION = 57622
const POSTFIXOP = 57754
const PRECEDING = 57623
const PRECISION = 57624
const PREPARE = 57626
const PREPARED = 57627
const PRESERVE = 57625
const PRIMARY = 57628
const PRIOR = 57629
const PRIVILEGES = 57630
const PROCEDURAL = 57631
const PROCEDURE = 57632
const PROGRAM = 57633
const QUOTE = 57634
const RANGE = 57635
const READ = 57636
const REAL = 57637
const REASSIGN = 57638
const RECHECK = 57639
const RECURSIVE = 57640
const REF = 57641
const REFERENCES = 57642
const REFRESH = 57643
const REINDEX = 57644
const RELATIVE = 57645
const RELEASE = 57646
const RENAME = 57647
const REPEATABLE = 57648
const REPLACE = 57649
const REPLICA = 57650
const RESET = 57651
const RESTART = 57652
const RESTRICT = 57653
const RETURNING = 57654
const RETURNS = 57655
const REVOKE = 57656
const RIGHT = 57657
const ROLLBACK = 57658
const ROLLUP = 57659
const ROW = 57660
const ROWS = 57661
const RSHIFT = 57662
const RULE = 57663
const SCONST = 57348
const SCROLL = 57664
const SEARCH = 57665
const SECOND = 57666
const SECURITY = 57667
const SELECT = 57668
const SEQUENCE = 57669
const SEQUENCES = 57670
const SERIALIZABLE = 57671
const SERVER = 57672
const SESSION = 57673
const SESSION_USER = 57674
const SET = 57675
const SETS = 57676
const SHARE = 57677
const SHOW = 57678
const SIMILAR = 57679
const SIMPLE = 57680
const SKIP = 57681
const SMALLINT = 57682
const SNAPSHOT = 57683
const SOME = 57684
const SQL = 57685
const STABLE = 57686
const STANDALONE = 57687
const STATEMENT = 57688
const STATISTICS = 57689
const STDIN = 57690
const STDOUT = 57691
const STORING = 57695
const STRICT = 57692
const STRING = 57693
const STRIP = 57694
const SUBSTRING = 57696
const SYMMETRIC = 57697
const SYSID = 57698
const SYSTEM = 57699
const TABLE = 57700
const TABLES = 57701
const TEXT = 57702
const THEN = 57703
const TIME = 57704
const TIMESTAMP = 57705
const TO = 57706
const TRAILING = 57707
const TRANSACTION = 57708
const TRANSFORM = 57709
const TREAT = 57710
const TRIGGER = 57711
const TRIM = 57712
const TRUE = 57713
const TRUNCATE = 57714
const TRUSTED = 57715
const TYPE = 57716
const TYPECAST = 57352
const TYPES = 57717
const (
TimestampWithOffsetZoneFormat = "2006-01-02 15:04:05.999999999-07:00"
)
time.Time formats.
const UMINUS = 57755
const UNBOUNDED = 57718
const UNCOMMITTED = 57719
const UNENCRYPTED = 57720
const UNION = 57721
const UNIQUE = 57722
const UNKNOWN = 57723
const UNLISTEN = 57724
const UNLOGGED = 57725
const UNTIL = 57726
const UPDATE = 57727
const USER = 57728
const USING = 57729
const VACUUM = 57730
const VALID = 57731
const VALIDATE = 57732
const VALUE = 57733
const VALUES = 57734
const VARCHAR = 57735
const VARIADIC = 57736
const VARYING = 57737
const VERBOSE = 57738
const VERSION = 57739
const WHEN = 57740
const WHERE = 57741
const WINDOW = 57742
const WITH = 57743
const WITHIN = 57744
const WITHOUT = 57745
const WITH_LA = 57753
const WRAPPER = 57746
const WRITE = 57747
const YEAR = 57748
const YES = 57749
const ZONE = 57750
Variables ¶
var ( // DummyBool is a placeholder DBool value. DummyBool = DBool(false) // DummyInt is a placeholder DInt value. DummyInt = DInt(0) // DummyFloat is a placeholder DFloat value. DummyFloat = DFloat(0) // DummyString is a placeholder DString value. DummyString = DString("") // DummyDate is a placeholder DDate value. DummyDate = DDate{} // DummyTimestamp is a placeholder DTimestamp value. DummyTimestamp = DTimestamp{} // DummyInterval is a placeholder DInterval value. DummyInterval = DInterval{} // DummyTuple is a placeholder DTuple value. DummyTuple = DTuple{} // DNull is the NULL Datum. DNull = dNull{} )
Functions ¶
func ContainsVars ¶
ContainsVars returns true if the expression contains any variables.
Types ¶
type AliasedTableExpr ¶
type AliasedTableExpr struct { Expr SimpleTableExpr As Name }
AliasedTableExpr represents a table expression coupled with an optional alias.
func (*AliasedTableExpr) String ¶
func (node *AliasedTableExpr) String() string
type AlterTable ¶
type AlterTable struct { IfExists bool Table *QualifiedName Cmds AlterTableCmds }
AlterTable represents an ALTER TABLE statement.
func (*AlterTable) String ¶
func (node *AlterTable) String() string
type AlterTableAddColumn ¶
type AlterTableAddColumn struct { IfNotExists bool ColumnDef *ColumnTableDef // contains filtered or unexported fields }
AlterTableAddColumn represents an ADD COLUMN command.
func (*AlterTableAddColumn) String ¶
func (node *AlterTableAddColumn) String() string
type AlterTableAddConstraint ¶
type AlterTableAddConstraint struct {
ConstraintDef ConstraintTableDef
}
AlterTableAddConstraint represents an ADD CONSTRAINT command.
func (*AlterTableAddConstraint) String ¶
func (node *AlterTableAddConstraint) String() string
type AlterTableCmd ¶
type AlterTableCmd interface {
// contains filtered or unexported methods
}
AlterTableCmd represents a table modification operation.
type AlterTableCmds ¶
type AlterTableCmds []AlterTableCmd
AlterTableCmds represents a list of table alterations.
func (AlterTableCmds) String ¶
func (node AlterTableCmds) String() string
type Args ¶
Args defines the interface for retrieving arguments. Return false for the second return value if the argument cannot be found.
type ArrayIndirection ¶
ArrayIndirection represents "[<begin>:<end>]" in an indirection expression.
func (*ArrayIndirection) String ¶
func (a *ArrayIndirection) String() string
type BeginTransaction ¶
type BeginTransaction struct {
Isolation IsolationLevel
}
BeginTransaction represents a BEGIN statement
func (*BeginTransaction) String ¶
func (node *BeginTransaction) String() string
type BinaryExpr ¶
type BinaryExpr struct { Operator BinaryOp Left, Right Expr // contains filtered or unexported fields }
BinaryExpr represents a binary value expression.
func (*BinaryExpr) String ¶
func (node *BinaryExpr) String() string
type CastExpr ¶
type CastExpr struct { Expr Expr Type ColumnType }
CastExpr represents a CAST(expr AS type) expression.
type ColumnConstraint ¶
type ColumnConstraint interface {
// contains filtered or unexported methods
}
ColumnConstraint represents a constraint on a column.
type ColumnTableDef ¶
type ColumnTableDef struct { Name Name Type ColumnType Nullable Nullability PrimaryKey bool Unique bool }
ColumnTableDef represents a column definition within a CREATE TABLE statement.
func (*ColumnTableDef) String ¶
func (node *ColumnTableDef) String() string
type ColumnType ¶
ColumnType represents a type in a column definition.
type CommitTransaction ¶
type CommitTransaction struct{}
CommitTransaction represents a COMMIT statement.
func (*CommitTransaction) String ¶
func (node *CommitTransaction) String() string
type ComparisonExpr ¶
type ComparisonExpr struct { Operator ComparisonOp Left, Right Expr }
ComparisonExpr represents a two-value comparison expression.
func (*ComparisonExpr) String ¶
func (node *ComparisonExpr) String() string
type ComparisonOp ¶
type ComparisonOp int
ComparisonOp represents a binary operator.
const ( EQ ComparisonOp = iota LT GT LE GE NE In NotIn Like NotLike SimilarTo NotSimilarTo IsDistinctFrom IsNotDistinctFrom )
ComparisonExpr.Operator
func (ComparisonOp) String ¶
func (i ComparisonOp) String() string
type ConstraintTableDef ¶
type ConstraintTableDef interface { TableDef // contains filtered or unexported methods }
ConstraintTableDef represents a constraint definition within a CREATE TABLE statement.
type CreateDatabase ¶
CreateDatabase represents a CREATE DATABASE statement.
func (*CreateDatabase) String ¶
func (node *CreateDatabase) String() string
type CreateIndex ¶
type CreateIndex struct { Name Name Table *QualifiedName Unique bool IfNotExists bool Columns NameList Storing NameList }
CreateIndex represents a CREATE INDEX statement.
func (*CreateIndex) String ¶
func (node *CreateIndex) String() string
type CreateTable ¶
type CreateTable struct { IfNotExists bool Table *QualifiedName Defs TableDefs }
CreateTable represents a CREATE TABLE statement.
func (*CreateTable) String ¶
func (node *CreateTable) String() string
type DBool ¶
type DBool bool
DBool is the boolean Datum.
type DDate ¶
DDate is the date Datum.
type DFloat ¶
type DFloat float64
DFloat is the float Datum.
type DInt ¶
type DInt int64
DInt is the int Datum.
type DInterval ¶
DInterval is the interval Datum.
type DReference ¶
type DReference interface {
Datum() Datum
}
DReference holds a pointer to a Datum. It is used as a level of indirection to replace QualifiedNames with a node whose value can change on each row.
type DString ¶
type DString string
DString is the string Datum.
type DTimestamp ¶
DTimestamp is the timestamp Datum.
func ParseTimestamp ¶
func ParseTimestamp(s DString) (DTimestamp, error)
ParseTimestamp parses the timestamp.
func (DTimestamp) Compare ¶
func (d DTimestamp) Compare(other Datum) int
Compare implements the Datum interface.
func (DTimestamp) String ¶
func (d DTimestamp) String() string
TODO:(vivek) implement SET TIME ZONE to improve presentation.
type DTuple ¶
type DTuple []Datum
DTuple is the tuple Datum.
type Datum ¶
type Datum interface { Expr Type() string // Compare returns -1 if the receiver is less than other, 0 if receiver is // equal to other and +1 if receiver is greater than other. Compare(other Datum) int // Next returns the next datum. If the receiver is "a" and the returned datum // is "b", then "a < b" and no other datum will compare such that "a < c < // b". Next() Datum // IsMax returns true if the datum is equal to the maximum value the datum // type can hold. IsMax() bool // IsMin returns true if the datum is equal to the minimum value the datum // type can hold. IsMin() bool }
A Datum holds either a bool, int64, float64, string or []Datum.
func EvalExpr ¶
EvalExpr evaluates an SQL expression. Expression evaluation is a mostly straightforward walk over the parse tree. The only significant complexity is the handling of types and implicit conversions. See binOps and cmpOps for more details. Note that expression evaluation returns an error if certain node types are encountered: ValArg, QualifiedName or Subquery. These nodes should be replaced prior to expression evaluation by an appropriate WalkExpr. For example, ValArg should be replace by the argument passed from the client.
func TypeCheckExpr ¶
TypeCheckExpr type-checks an SQL expression. Expression checking is a mostly straightforward walk over the parse tree.
type DecimalType ¶
DecimalType represents a DECIMAL or NUMERIC type.
func (*DecimalType) String ¶
func (node *DecimalType) String() string
type DropDatabase ¶
DropDatabase represents a DROP DATABASE statement.
func (*DropDatabase) String ¶
func (node *DropDatabase) String() string
type DropTable ¶
type DropTable struct { Names QualifiedNames IfExists bool }
DropTable represents a DROP TABLE statement.
type ExistsExpr ¶
type ExistsExpr struct {
Subquery *Subquery
}
ExistsExpr represents an EXISTS expression.
func (*ExistsExpr) String ¶
func (node *ExistsExpr) String() string
type Expr ¶
Expr represents an expression.
func NormalizeAndTypeCheckExpr ¶
NormalizeAndTypeCheckExpr is a combination of NormalizeExpr and TypeCheckExpr. It returns returns an error if either of NormalizeExpr or TypeCheckExpr return one, and otherwise returns the Expr returned by NormalizeExpr.
func NormalizeExpr ¶
NormalizeExpr normalizes an expression, simplifying where possible, but guaranteeing that the result of evaluating the expression is unchanged. Example normalizations:
(a) -> a ROW(a, b, c) -> (a, b, c) a = 1 + 1 -> a = 2 a + 1 = 2 -> a = 1 a BETWEEN b AND c -> (a >= b) AND (a <= c) a NOT BETWEEN b AND c -> (a < b) OR (a > c)
func WalkExpr ¶
WalkExpr traverses the nodes in an expression. It starts by calling v.Visit(expr, true). If the visitor returned by v.Visit(expr, true) is not nil it recursively calls WalkExpr on the children of the node returned by v.Visit(expr, true) and finishes with a call to v.Visit(expr, false).
type Exprs ¶
type Exprs []Expr
Exprs represents a list of value expressions. It's not a valid expression because it's not parenthesized.
type FuncExpr ¶
type FuncExpr struct { Name *QualifiedName Distinct bool Exprs Exprs // contains filtered or unexported fields }
FuncExpr represents a function call.
type Grant ¶
type Grant struct { Privileges privilege.List Targets TargetList Grantees NameList }
Grant represents a GRANT statement.
type IndexIndirection ¶
type IndexIndirection Name
IndexIndirection represents ":<name>" in an indirection expression.
func (IndexIndirection) String ¶
func (n IndexIndirection) String() string
type IndexTableDef ¶
IndexTableDef represents an index definition within a CREATE TABLE statement.
func (*IndexTableDef) String ¶
func (node *IndexTableDef) String() string
type Indirection ¶
type Indirection []IndirectionElem
Indirection represents an indirection expression composed of a series of indirection elements.
func (Indirection) String ¶
func (i Indirection) String() string
type IndirectionElem ¶
type IndirectionElem interface { String() string // contains filtered or unexported methods }
IndirectionElem is a single element in an indirection expression.
type Insert ¶
type Insert struct { Table *QualifiedName Columns QualifiedNames Rows SelectStatement }
Insert represents an INSERT statement.
type IntervalType ¶
type IntervalType struct { }
IntervalType represents a INTERVAL type
func (*IntervalType) String ¶
func (node *IntervalType) String() string
type IsOfTypeExpr ¶
type IsOfTypeExpr struct { Not bool Expr Expr Types []ColumnType }
IsOfTypeExpr represents an IS {,NOT} OF (type_list) expression.
func (*IsOfTypeExpr) String ¶
func (node *IsOfTypeExpr) String() string
type IsolationLevel ¶
type IsolationLevel int
IsolationLevel holds the isolation level for a transaction.
const ( UnspecifiedIsolation IsolationLevel = iota SnapshotIsolation SerializableIsolation )
IsolationLevel values
func (IsolationLevel) String ¶
func (i IsolationLevel) String() string
type JoinCond ¶
type JoinCond interface {
// contains filtered or unexported methods
}
JoinCond represents a join condition.
type JoinTableExpr ¶
JoinTableExpr represents a TableExpr that's a JOIN operation.
func (*JoinTableExpr) String ¶
func (node *JoinTableExpr) String() string
type NameIndirection ¶
type NameIndirection Name
NameIndirection represents ".<name>" in an indirection expression.
func (NameIndirection) String ¶
func (n NameIndirection) String() string
type NameList ¶
type NameList []string
A NameList is a list of identifier. TODO(tschottdorf): would be nicer to have []Name here but unless we want to introduce new types to the grammar, NameList([]string{...}) needs to work.
type NotNullConstraint ¶
type NotNullConstraint struct{}
NotNullConstraint represents NOT NULL on a column.
type Nullability ¶
type Nullability int
Nullability represents either NULL, NOT NULL or an unspecified value (silent NULL).
const ( NotNull Nullability = iota Null SilentNull )
The values for NullType.
type OnJoinCond ¶
type OnJoinCond struct {
Expr Expr
}
OnJoinCond represents an ON join condition.
func (*OnJoinCond) String ¶
func (node *OnJoinCond) String() string
type ParenExpr ¶
type ParenExpr struct {
Expr Expr
}
ParenExpr represents a parenthesized expression.
type ParenSelect ¶
type ParenSelect struct {
Select SelectStatement
}
ParenSelect represents a parenthesized SELECT/UNION/VALUES statement.
func (*ParenSelect) String ¶
func (node *ParenSelect) String() string
type ParenTableExpr ¶
type ParenTableExpr struct {
Expr TableExpr
}
ParenTableExpr represents a parenthesized TableExpr.
func (*ParenTableExpr) String ¶
func (node *ParenTableExpr) String() string
type PrimaryKeyConstraint ¶
type PrimaryKeyConstraint struct{}
PrimaryKeyConstraint represents NULL on a column.
type QualifiedName ¶
type QualifiedName struct { Base Name Indirect Indirection // contains filtered or unexported fields }
QualifiedName is a base name and an optional indirection expression.
func StarExpr ¶
func StarExpr() *QualifiedName
StarExpr is a convenience function that represents an unqualified "*".
func (*QualifiedName) Column ¶
func (n *QualifiedName) Column() string
Column returns the column portion of the name. Note that the returned string is not quoted even if the name is a keyword.
func (*QualifiedName) Database ¶
func (n *QualifiedName) Database() string
Database returns the database portion of the name. Note that the returned string is not quoted even if the name is a keyword.
func (*QualifiedName) Index ¶
func (n *QualifiedName) Index() string
Index returns the index portion of the name. Note that the returned string is not quoted even if the name is a keyword.
func (*QualifiedName) IsStar ¶
func (n *QualifiedName) IsStar() bool
IsStar returns true iff the qualified name contains matches "".* or table.*.
func (*QualifiedName) NormalizeColumnName ¶
func (n *QualifiedName) NormalizeColumnName() error
NormalizeColumnName normalizes the qualified name to contain a table name as prefix, returning an error if unable to do so or if the name is not a valid column name (e.g. it contains too many indirections). If normalization occurred, the modified qualified name will have n.Base == "" to indicate no explicit table was specified. The incoming qualified name should have one of the following forms:
* table.* column column[array-indirection] table.column table.column[array-indirection]
Note that "table" may be the empty string. On successful normalization the qualified name will have one of the forms:
table.* table.column table.column[array-indirection]
func (*QualifiedName) NormalizeTableName ¶
func (n *QualifiedName) NormalizeTableName(database string) error
NormalizeTableName normalizes the qualified name to contain a database name as prefix, returning an error if unable to do so or if the name is not a valid table name (e.g. it contains an array indirection). The incoming qualified name should have one of the following forms:
table database.table table@index database.table@index
On successful normalization, the qualified name will have the form:
database.table@index
func (*QualifiedName) String ¶
func (n *QualifiedName) String() string
func (*QualifiedName) Table ¶
func (n *QualifiedName) Table() string
Table returns the table portion of the name. Note that the returned string is not quoted even if the name is a keyword.
type QualifiedNames ¶
type QualifiedNames []*QualifiedName
QualifiedNames represents a command separated list (see the String method) of qualified names.
func (QualifiedNames) String ¶
func (n QualifiedNames) String() string
type RenameColumn ¶
type RenameColumn struct { Table *QualifiedName Name Name NewName Name // IfExists refers to the table, not the column. IfExists bool }
RenameColumn represents a RENAME COLUMN statement.
func (*RenameColumn) String ¶
func (node *RenameColumn) String() string
type RenameDatabase ¶
RenameDatabase represents a RENAME DATABASE statement.
func (*RenameDatabase) String ¶
func (node *RenameDatabase) String() string
type RenameIndex ¶
type RenameIndex struct { Name *QualifiedName NewName Name IfExists bool }
RenameIndex represents a RENAME INDEX statement.
func (*RenameIndex) String ¶
func (node *RenameIndex) String() string
type RenameTable ¶
type RenameTable struct { Name *QualifiedName NewName *QualifiedName IfExists bool }
RenameTable represents a RENAME TABLE statement.
func (*RenameTable) String ¶
func (node *RenameTable) String() string
type Revoke ¶
type Revoke struct { Privileges privilege.List Targets TargetList Grantees NameList }
Revoke represents a REVOKE statements. PrivilegeList and TargetList are defined in grant.go
type RollbackTransaction ¶
type RollbackTransaction struct{}
RollbackTransaction represents a ROLLBACK statement.
func (*RollbackTransaction) String ¶
func (node *RollbackTransaction) String() string
type Row ¶
type Row Exprs
Row represents a parenthesized list of expressions. Similar to Tuple except in how it is textually represented.
type Select ¶
type Select struct { Distinct string Exprs SelectExprs From TableExprs Where *Where GroupBy GroupBy Having *Where OrderBy OrderBy Limit *Limit Lock string // contains filtered or unexported fields }
Select represents a SELECT statement.
type SelectExpr ¶
SelectExpr represents a SELECT expression.
func StarSelectExpr ¶
func StarSelectExpr() SelectExpr
StarSelectExpr is a convenience function that represents an unqualified "*" in a select expression.
func (SelectExpr) String ¶
func (node SelectExpr) String() string
type SelectExprs ¶
type SelectExprs []SelectExpr
SelectExprs represents SELECT expressions.
func (SelectExprs) String ¶
func (node SelectExprs) String() string
type SelectStatement ¶
type SelectStatement interface { Statement // contains filtered or unexported methods }
SelectStatement any SELECT statement.
type SetTransaction ¶
type SetTransaction struct {
Isolation IsolationLevel
}
SetTransaction represents a SET TRANSACTION statement.
func (*SetTransaction) String ¶
func (node *SetTransaction) String() string
type ShowColumns ¶
type ShowColumns struct {
Table *QualifiedName
}
ShowColumns represents a SHOW COLUMNS statement.
func (*ShowColumns) String ¶
func (node *ShowColumns) String() string
type ShowDatabases ¶
type ShowDatabases struct { }
ShowDatabases represents a SHOW DATABASES statement.
func (*ShowDatabases) String ¶
func (node *ShowDatabases) String() string
type ShowGrants ¶
type ShowGrants struct { Targets *TargetList Grantees NameList }
ShowGrants represents a SHOW GRANTS statement. TargetList is defined in grant.go.
func (*ShowGrants) String ¶
func (node *ShowGrants) String() string
type ShowIndex ¶
type ShowIndex struct {
Table *QualifiedName
}
ShowIndex represents a SHOW INDEX statement.
type ShowTables ¶
type ShowTables struct {
Name *QualifiedName
}
ShowTables represents a SHOW TABLES statement.
func (*ShowTables) String ¶
func (node *ShowTables) String() string
type SimpleTableExpr ¶
type SimpleTableExpr interface {
// contains filtered or unexported methods
}
SimpleTableExpr represents a simple table expression.
type StarIndirection ¶
type StarIndirection string
StarIndirection represents ".*" in an indirection expression.
func (StarIndirection) String ¶
func (s StarIndirection) String() string
type StatementList ¶
type StatementList []Statement
StatementList is a list of statements.
func Parse ¶
func Parse(sql string, syntax Syntax) (StatementList, error)
Parse parses the sql and returns a list of statements.
func ParseTraditional ¶
func ParseTraditional(sql string) (StatementList, error)
ParseTraditional is short-hand for Parse(sql, Traditional)
func (StatementList) String ¶
func (l StatementList) String() string
type StringType ¶
StringType represents a STRING, CHAR or VARCHAR type.
func (*StringType) String ¶
func (node *StringType) String() string
type TableDef ¶
type TableDef interface {
// contains filtered or unexported methods
}
TableDef represents a column or index definition within a CREATE TABLE statement.
type TableExpr ¶
type TableExpr interface {
// contains filtered or unexported methods
}
TableExpr represents a table expression.
type TableExprs ¶
type TableExprs []TableExpr
TableExprs represents a list of table expressions.
func (TableExprs) String ¶
func (node TableExprs) String() string
type TargetList ¶
type TargetList struct { Databases NameList Tables QualifiedNames }
TargetList represents a list of targets. Only one field may be non-nil.
func (TargetList) String ¶
func (tl TargetList) String() string
type TargetType ¶
type TargetType int
TargetType represents the type of target.
const (
TargetDatabase TargetType = iota
)
Enums for target and privilege types.
func (TargetType) String ¶
func (tt TargetType) String() string
type TimestampType ¶
type TimestampType struct { }
TimestampType represents a TIMESTAMP type.
func (*TimestampType) String ¶
func (node *TimestampType) String() string
type Truncate ¶
type Truncate struct {
Tables QualifiedNames
}
Truncate represents a TRUNCATE statement.
type Union ¶
type Union struct { Type string Left, Right SelectStatement }
Union represents a UNION statement.
type UniqueConstraint ¶
type UniqueConstraint struct{}
UniqueConstraint represents UNIQUE on a column.
type UniqueConstraintTableDef ¶
type UniqueConstraintTableDef struct { IndexTableDef PrimaryKey bool }
UniqueConstraintTableDef represents a unique constraint within a CREATE TABLE statement.
func (*UniqueConstraintTableDef) String ¶
func (node *UniqueConstraintTableDef) String() string
type Update ¶
type Update struct { Table TableExpr Exprs UpdateExprs Where *Where }
Update represents an UPDATE statement.
type UpdateExpr ¶
type UpdateExpr struct { Tuple bool Names QualifiedNames Expr Expr }
UpdateExpr represents an update expression.
func (*UpdateExpr) String ¶
func (node *UpdateExpr) String() string
type UpdateExprs ¶
type UpdateExprs []*UpdateExpr
UpdateExprs represents a list of update expressions.
func (UpdateExprs) String ¶
func (node UpdateExprs) String() string
type UsingJoinCond ¶
type UsingJoinCond struct {
Cols NameList
}
UsingJoinCond represents a USING join condition.
func (*UsingJoinCond) String ¶
func (node *UsingJoinCond) String() string
type Visitor ¶
The Visitor Visit method is invoked for each Expr node encountered by WalkExpr. The returned Expr replaces the pointer to the visited expression in the parent node and can be used for rewriting expressions. The pre argument indicates whether the visit is a pre-order or post-order visit. On a pre-order visit, if the result Visitor is nil children nodes are skipped from the traversal.
Source Files ¶
- alter_table.go
- builtins.go
- create.go
- datum.go
- delete.go
- drop.go
- encode.go
- eval.go
- explain.go
- expr.go
- grant.go
- indirection.go
- insert.go
- keywords.go
- name.go
- normalize.go
- parse.go
- rename.go
- reserved_keywords.go
- revoke.go
- scan.go
- select.go
- set.go
- show.go
- sql.y
- stmt.go
- syntax_string.go
- truncate.go
- txn.go
- type_check.go
- types.go
- union.go
- update.go
- values.go
- walk.go