Documentation ¶
Index ¶
- Constants
- Variables
- func FillArgs(stmt Statement, args Args) error
- func WalkStmt(v Visitor, stmt Statement)
- type AliasedTableExpr
- 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 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 JoinCond
- type JoinTableExpr
- type Limit
- type Name
- type NameIndirection
- type NameList
- type NotExpr
- type NotNullConstraint
- type NullCheck
- 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 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 Update
- type UpdateExpr
- type UpdateExprs
- type UsingJoinCond
- type ValArg
- type Values
- type Visitor
- type When
- type Where
Constants ¶
const ABORT = 57358
const ABSOLUTE = 57359
const ACCESS = 57360
const ACTION = 57361
const ADD = 57362
const ADMIN = 57363
const AFTER = 57364
const AGGREGATE = 57365
const ALL = 57366
const ALSO = 57367
const ALTER = 57368
const ALWAYS = 57369
const ANALYSE = 57370
const ANALYZE = 57371
const AND = 57372
const ANY = 57373
const ARRAY = 57374
const AS = 57375
const ASC = 57376
const ASSERTION = 57377
const ASSIGNMENT = 57378
const ASYMMETRIC = 57379
const AT = 57380
const ATTRIBUTE = 57381
const AUTHORIZATION = 57382
const BACKWARD = 57383
const BCONST = 57349
const BEFORE = 57384
const BEGIN = 57385
const BETWEEN = 57386
const BIGINT = 57387
const BINARY = 57388
const BIT = 57389
const BLOB = 57390
const BOOL = 57391
const BOOLEAN = 57392
const BOTH = 57393
const BY = 57394
const BYTES = 57395
const CACHE = 57396
const CALLED = 57397
const CASCADE = 57398
const CASCADED = 57399
const CASE = 57400
const CAST = 57401
const CHAIN = 57402
const CHAR = 57403
const CHARACTER = 57404
const CHARACTERISTICS = 57405
const CHECK = 57406
const CHECKPOINT = 57407
const CLASS = 57408
const CLOSE = 57409
const CLUSTER = 57410
const COALESCE = 57411
const COLLATE = 57412
const COLLATION = 57413
const COLUMN = 57414
const COLUMNS = 57415
const COMMENT = 57416
const COMMENTS = 57417
const COMMIT = 57418
const COMMITTED = 57419
const CONCAT = 57420
const CONCURRENTLY = 57421
const CONFIGURATION = 57422
const CONFLICT = 57423
const CONNECTION = 57424
const CONSTRAINT = 57425
const CONSTRAINTS = 57426
const CONTENT = 57427
const CONTINUE = 57428
const CONVERSION = 57429
const COPY = 57430
const COST = 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 EXCLUDE = 57481
const EXCLUDING = 57482
const EXCLUSIVE = 57483
const EXECUTE = 57484
const EXISTS = 57485
const EXPLAIN = 57486
const EXTENSION = 57487
const EXTERNAL = 57488
const EXTRACT = 57489
const FALSE = 57490
const FAMILY = 57491
const FCONST = 57347
const FETCH = 57492
const FILTER = 57493
const FIRST = 57494
const FLOAT = 57495
const FOLLOWING = 57496
const FOR = 57497
const FORCE = 57498
const FOREIGN = 57499
const FORWARD = 57500
const FREEZE = 57501
const FROM = 57502
const FULL = 57503
const FUNCTION = 57504
const FUNCTIONS = 57505
const GLOBAL = 57506
const GRANT = 57507
const GRANTED = 57508
const GRANTS = 57509
const GREATER_EQUALS = 57355
const GREATEST = 57510
const GROUP = 57511
const GROUPING = 57512
const HANDLER = 57513
const HAVING = 57514
const HEADER = 57515
const HOLD = 57516
const HOUR = 57517
const ICONST = 57350
const IDENT = 57346
const IDENTITY = 57518
const IF = 57519
const IMMEDIATE = 57520
const IMMUTABLE = 57521
const IMPLICIT = 57522
const IMPORT = 57523
const IN = 57524
const INCLUDING = 57525
const INCREMENT = 57526
const INDEX = 57527
const INDEXES = 57528
const INHERIT = 57529
const INHERITS = 57530
const INITIALLY = 57531
const INLINE = 57532
const INNER = 57533
const INOUT = 57534
const INPUT = 57535
const INSENSITIVE = 57536
const INSERT = 57537
const INSTEAD = 57538
const INT = 57539
const INT64 = 57540
const INTEGER = 57541
const INTERSECT = 57542
const INTERVAL = 57543
const INTO = 57544
const INVOKER = 57545
const IS = 57546
const ISOLATION = 57547
const JOIN = 57548
const KEY = 57549
const LABEL = 57550
const LANGUAGE = 57551
const LARGE = 57552
const LAST = 57553
const LATERAL = 57554
const LEADING = 57555
const LEAKPROOF = 57556
const LEAST = 57557
const LEFT = 57558
const LESS_EQUALS = 57354
const LEVEL = 57559
const LIKE = 57560
const LIMIT = 57561
const LISTEN = 57562
const LOAD = 57563
const LOCAL = 57564
const LOCALTIME = 57565
const LOCALTIMESTAMP = 57566
const LOCATION = 57567
const LOCK = 57568
const LOCKED = 57569
const LOGGED = 57570
const LSHIFT = 57571
const MAPPING = 57572
const MATCH = 57573
const MATERIALIZED = 57574
const MAXVALUE = 57575
const MINUTE = 57576
const MINVALUE = 57577
const MODE = 57578
const MONTH = 57579
const MOVE = 57580
const NAME = 57581
const NAMES = 57582
const NATIONAL = 57583
const NATURAL = 57584
const NCHAR = 57585
const NEXT = 57586
const NO = 57587
const NONE = 57588
const NOT = 57589
const NOTHING = 57590
const NOTIFY = 57591
const NOT_EQUALS = 57356
const NOT_LA = 57756
const NOWAIT = 57592
const NULL = 57593
const NULLIF = 57594
const NULLS = 57595
const NULLS_LA = 57757
const NUMERIC = 57596
const OBJECT = 57597
const OF = 57598
const OFF = 57599
const OFFSET = 57600
const OIDS = 57601
const ON = 57602
const ONLY = 57603
const OPTION = 57604
const OPTIONS = 57605
const OR = 57606
const ORDER = 57607
const ORDINALITY = 57608
const OUT = 57609
const OUTER = 57610
const OVER = 57611
const OVERLAPS = 57612
const OVERLAY = 57613
const OWNED = 57614
const OWNER = 57615
const PARAM = 57351
const PARSER = 57616
const PARTIAL = 57617
const PARTITION = 57618
const PASSING = 57619
const PASSWORD = 57620
const PLACING = 57621
const PLANS = 57622
const POLICY = 57623
const POSITION = 57624
const POSTFIXOP = 57759
const PRECEDING = 57625
const PRECISION = 57626
const PREPARE = 57628
const PREPARED = 57629
const PRESERVE = 57627
const PRIMARY = 57630
const PRIOR = 57631
const PRIVILEGES = 57632
const PROCEDURAL = 57633
const PROCEDURE = 57634
const PROGRAM = 57635
const QUOTE = 57636
const RANGE = 57637
const READ = 57638
const REAL = 57639
const REASSIGN = 57640
const RECHECK = 57641
const RECURSIVE = 57642
const REF = 57643
const REFERENCES = 57644
const REFRESH = 57645
const REINDEX = 57646
const RELATIVE = 57647
const RELEASE = 57648
const RENAME = 57649
const REPEATABLE = 57650
const REPLACE = 57651
const REPLICA = 57652
const RESET = 57653
const RESTART = 57654
const RESTRICT = 57655
const RETURNING = 57656
const RETURNS = 57657
const REVOKE = 57658
const RIGHT = 57659
const ROLLBACK = 57660
const ROLLUP = 57661
const ROW = 57662
const ROWS = 57663
const RSHIFT = 57664
const RULE = 57665
const SAVEPOINT = 57666
const SCONST = 57348
const SCROLL = 57667
const SEARCH = 57668
const SECOND = 57669
const SECURITY = 57670
const SELECT = 57671
const SEQUENCE = 57672
const SEQUENCES = 57673
const SERIALIZABLE = 57674
const SERVER = 57675
const SESSION = 57676
const SESSION_USER = 57677
const SET = 57678
const SETOF = 57680
const SETS = 57679
const SHARE = 57681
const SHOW = 57682
const SIMILAR = 57683
const SIMPLE = 57684
const SKIP = 57685
const SMALLINT = 57686
const SNAPSHOT = 57687
const SOME = 57688
const SQL = 57689
const STABLE = 57690
const STANDALONE = 57691
const START = 57692
const STATEMENT = 57693
const STATISTICS = 57694
const STDIN = 57695
const STDOUT = 57696
const STRICT = 57697
const STRING = 57698
const STRIP = 57699
const SUBSTRING = 57700
const SYMMETRIC = 57701
const SYSID = 57702
const SYSTEM = 57703
const TABLE = 57704
const TABLES = 57705
const TEXT = 57706
const THEN = 57707
const TIME = 57708
const TIMESTAMP = 57709
const TO = 57710
const TRAILING = 57711
const TRANSACTION = 57712
const TRANSFORM = 57713
const TREAT = 57714
const TRIGGER = 57715
const TRIM = 57716
const TRUE = 57717
const TRUNCATE = 57718
const TRUSTED = 57719
const TYPE = 57720
const TYPECAST = 57352
const TYPES = 57721
const UMINUS = 57760
const UNBOUNDED = 57722
const UNCOMMITTED = 57723
const UNENCRYPTED = 57724
const UNION = 57725
const UNIQUE = 57726
const UNKNOWN = 57727
const UNLISTEN = 57728
const UNLOGGED = 57729
const UNTIL = 57730
const UPDATE = 57731
const USER = 57732
const USING = 57733
const VACUUM = 57734
const VALID = 57735
const VALIDATE = 57736
const VALUE = 57737
const VALUES = 57738
const VARCHAR = 57739
const VARIADIC = 57740
const VARYING = 57741
const VERBOSE = 57742
const VERSION = 57743
const WHEN = 57744
const WHERE = 57745
const WINDOW = 57746
const WITH = 57747
const WITHIN = 57748
const WITHOUT = 57749
const WITH_LA = 57758
const WORK = 57750
const WRAPPER = 57751
const WRITE = 57752
const YEAR = 57753
const YES = 57754
const ZONE = 57755
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 ¶
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 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{}
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 )
ComparisonExpr.Operator
func (ComparisonOp) String ¶
func (i ComparisonOp) String() string
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 }
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 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 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 Update ¶
type Update struct { Table TableExpr Exprs UpdateExprs Where *Where }
Update represents an UPDATE statement.
type UpdateExpr ¶
type UpdateExpr struct { Name *QualifiedName 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 ¶
- builtins.go
- create.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