- 1.86.1 (latest)
- 1.86.0
- 1.85.1
- 1.84.1
- 1.83.0
- 1.82.0
- 1.81.1
- 1.80.0
- 1.79.0
- 1.78.0
- 1.77.0
- 1.76.1
- 1.75.0
- 1.74.0
- 1.73.0
- 1.72.0
- 1.71.0
- 1.70.0
- 1.69.0
- 1.68.0
- 1.67.0
- 1.66.0
- 1.65.0
- 1.64.0
- 1.63.0
- 1.62.0
- 1.61.0
- 1.60.0
- 1.59.0
- 1.58.0
- 1.57.0
- 1.56.0
- 1.55.0
- 1.54.0
- 1.53.1
- 1.52.0
- 1.49.0
- 1.48.0
- 1.47.0
- 1.46.0
- 1.45.1
- 1.44.0
- 1.43.0
- 1.42.0
- 1.41.0
- 1.40.0
- 1.39.0
- 1.38.0
- 1.37.0
- 1.36.0
- 1.35.0
- 1.34.1
- 1.33.0
- 1.32.0
- 1.31.0
- 1.30.1
- 1.29.0
- 1.28.0
- 1.27.0
- 1.26.0
- 1.25.0
- 1.24.1
- 1.23.0
- 1.22.0
- 1.21.0
- 1.20.0
- 1.19.0
- 1.18.0
- 1.17.0
- 1.16.0
- 1.15.0
- 1.14.1
- 1.13.0
Package spansql contains types and a parser for the Cloud Spanner SQL dialect.
To parse, use one of the Parse functions (ParseDDL, ParseDDLStmt, ParseQuery, etc.).
Sources:
https://cloud.google.com/spanner/docs/lexical https://cloud.google.com/spanner/docs/query-syntax https://cloud.google.com/spanner/docs/data-definition-language
Constants
True, False
const (
True = BoolLiteral(true)
False = BoolLiteral(false)
)MaxLen
MaxLen is a sentinel for Type's Len field, representing the MAX value.
Null
const Null = NullLiteral(0)Star
const Star = StarExpr(0)Star represents a "*" in an expression.
Functions
func IsKeyword
IsKeyword reports whether the identifier is a reserved keyword.
AddColumn
type AddColumn struct{ Def ColumnDef }func (AddColumn) SQL
AddConstraint
type AddConstraint struct{ Constraint TableConstraint }func (AddConstraint) SQL
func (ac AddConstraint) SQL() stringAlterColumn
type AlterColumn struct {
Name ID
Alteration ColumnAlteration
}func (AlterColumn) SQL
func (ac AlterColumn) SQL() stringAlterTable
type AlterTable struct {
Name ID
Alteration TableAlteration
Position Position // position of the "ALTER" token
}AlterTable represents an ALTER TABLE statement. https://cloud.google.com/spanner/docs/data-definition-language#alter_table
func (*AlterTable) Pos
func (at *AlterTable) Pos() Positionfunc (AlterTable) SQL
func (at AlterTable) SQL() stringfunc (*AlterTable) String
func (at *AlterTable) String() stringArithOp
type ArithOp struct {
Op ArithOperator
LHS, RHS Expr // only RHS is set for Neg, Plus, BitNot
}func (ArithOp) SQL
ArithOperator
type ArithOperator intNeg, Plus, BitNot, Mul, Div, Concat, Add, Sub, BitShl, BitShr, BitAnd, BitXor, BitOr
const (
Neg ArithOperator = iota // unary -
Plus // unary +
BitNot // unary ~
Mul // *
Div // /
Concat // ||
Add // +
Sub // -
BitShl // < bitshr="">>
BitAnd // &
BitXor // ^
BitOr // |
)Array
type Array []ExprArray represents an array literal.
func (Array) SQL
BoolExpr
type BoolExpr interface {
Expr
// contains filtered or unexported methods
}BoolLiteral
type BoolLiteral boolfunc (BoolLiteral) SQL
func (b BoolLiteral) SQL() stringBytesLiteral
type BytesLiteral stringBytesLiteral represents a bytes literal. https://cloud.google.com/spanner/docs/lexical#string-and-bytes-literals
func (BytesLiteral) SQL
func (bl BytesLiteral) SQL() stringCheck
Check represents a check constraint as part of a CREATE TABLE or ALTER TABLE statement.
func (Check) Pos
func (Check) SQL
ColumnAlteration
type ColumnAlteration interface {
SQL() string
// contains filtered or unexported methods
}ColumnAlteration is satisfied by SetColumnType and SetColumnOptions.
ColumnDef
type ColumnDef struct {
Name ID
Type Type
NotNull bool
Generated Expr // set of this is a generated column
Options ColumnOptions
Position Position // position of the column name
}ColumnDef represents a column definition as part of a CREATE TABLE or ALTER TABLE statement.
func (ColumnDef) Pos
func (ColumnDef) SQL
ColumnOptions
type ColumnOptions struct {
// AllowCommitTimestamp represents a column OPTIONS.
// `true` if query is `OPTIONS (allow_commit_timestamp = true)`
// `false` if query is `OPTIONS (allow_commit_timestamp = null)`
// `nil` if there are no OPTIONS
AllowCommitTimestamp *bool
}ColumnOptions represents options on a column as part of a CREATE TABLE or ALTER TABLE statement.
func (ColumnOptions) SQL
func (co ColumnOptions) SQL() stringComment
type Comment struct {
Marker string // Opening marker; one of "#", "--", "/*".
Isolated bool // Whether this comment is on its own line.
// Start and End are the position of the opening and terminating marker.
Start, End Position
Text []string
}Comment represents a comment.
func (*Comment) Pos
func (*Comment) String
ComparisonOp
type ComparisonOp struct {
Op ComparisonOperator
LHS, RHS Expr
// RHS2 is the third operand for BETWEEN.
// "func (ComparisonOp) SQL
func (co ComparisonOp) SQL() stringComparisonOperator
type ComparisonOperator intLt, Le, Gt, Ge, Eq, Ne, Like, NotLike, Between, NotBetween
const (
Lt ComparisonOperator = iota
Le
Gt
Ge
Eq
Ne // both "!=" and "<>"
Like
NotLike
Between
NotBetween
)Constraint
CreateIndex
type CreateIndex struct {
Name ID
Table ID
Columns []KeyPart
Unique bool
NullFiltered bool
Storing []ID
Interleave ID
Position Position // position of the "CREATE" token
}CreateIndex represents a CREATE INDEX statement. https://cloud.google.com/spanner/docs/data-definition-language#create-index
func (*CreateIndex) Pos
func (ci *CreateIndex) Pos() Positionfunc (CreateIndex) SQL
func (ci CreateIndex) SQL() stringfunc (*CreateIndex) String
func (ci *CreateIndex) String() stringCreateTable
type CreateTable struct {
Name ID
Columns []ColumnDef
Constraints []TableConstraint
PrimaryKey []KeyPart
Interleave *Interleave
Position Position // position of the "CREATE" token
}CreateTable represents a CREATE TABLE statement. https://cloud.google.com/spanner/docs/data-definition-language#create_table
func (*CreateTable) Pos
func (ct *CreateTable) Pos() Positionfunc (CreateTable) SQL
func (ct CreateTable) SQL() stringfunc (*CreateTable) String
func (ct *CreateTable) String() stringDDL
type DDL struct {
List []DDLStmt
Filename string // if known at parse time
Comments []*Comment // all comments, sorted by position
}DDL represents a Data Definition Language (DDL) file.
func ParseDDL
ParseDDL parses a DDL file.
The provided filename is used for error reporting and will appear in the returned structure.
func (*DDL) InlineComment
InlineComment returns the comment on the same line as a node, or nil if there's no inline comment. The returned comment is guaranteed to be a single line.
func (*DDL) LeadingComment
LeadingComment returns the comment that immediately precedes a node, or nil if there's no such comment.
DDLStmt
DDLStmt is satisfied by a type that can appear in a DDL.
func ParseDDLStmt
ParseDDLStmt parses a single DDL statement.
DMLStmt
type DMLStmt interface {
SQL() string
// contains filtered or unexported methods
}DMLStmt is satisfied by a type that is a DML statement.
func ParseDMLStmt
ParseDMLStmt parses a single DML statement.
DateLiteral
DateLiteral represents a date literal. https://cloud.google.com/spanner/docs/lexical#date_literals
func (DateLiteral) SQL
func (dl DateLiteral) SQL() stringDelete
Delete represents a DELETE statement. https://cloud.google.com/spanner/docs/dml-syntax#delete-statement
func (*Delete) SQL
func (*Delete) String
DropColumn
type DropColumn struct{ Name ID }func (DropColumn) SQL
func (dc DropColumn) SQL() stringDropConstraint
type DropConstraint struct{ Name ID }func (DropConstraint) SQL
func (dc DropConstraint) SQL() stringDropIndex
DropIndex represents a DROP INDEX statement. https://cloud.google.com/spanner/docs/data-definition-language#drop-index
func (*DropIndex) Pos
func (DropIndex) SQL
func (*DropIndex) String
DropTable
DropTable represents a DROP TABLE statement. https://cloud.google.com/spanner/docs/data-definition-language#drop_table
func (*DropTable) Pos
func (DropTable) SQL
func (*DropTable) String
Expr
type Expr interface {
SQL() string
// contains filtered or unexported methods
}FloatLiteral
type FloatLiteral float64FloatLiteral represents a floating point literal. https://cloud.google.com/spanner/docs/lexical#floating-point-literals
func (FloatLiteral) SQL
func (fl FloatLiteral) SQL() stringForeignKey
type ForeignKey struct {
Columns []ID
RefTable ID
RefColumns []ID
Position Position // position of the "FOREIGN" token
}ForeignKey represents a foreign key definition as part of a CREATE TABLE or ALTER TABLE statement.
func (ForeignKey) Pos
func (fk ForeignKey) Pos() Positionfunc (ForeignKey) SQL
func (fk ForeignKey) SQL() stringFunc
Func represents a function call.
func (Func) SQL
ID
type ID stringID represents an identifier. https://cloud.google.com/spanner/docs/lexical#identifiers
func (ID) SQL
InOp
func (InOp) SQL
IntegerLiteral
type IntegerLiteral int64IntegerLiteral represents an integer literal. https://cloud.google.com/spanner/docs/lexical#integer-literals
func (IntegerLiteral) SQL
func (il IntegerLiteral) SQL() stringInterleave
Interleave represents an interleave clause of a CREATE TABLE statement.
IsExpr
type IsExpr interface {
Expr
// contains filtered or unexported methods
}IsOp
func (IsOp) SQL
JoinType
type JoinType intInnerJoin, CrossJoin, FullJoin, LeftJoin, RightJoin
KeyPart
KeyPart represents a column specification as part of a primary key or index definition.
func (KeyPart) SQL
LiteralOrParam
type LiteralOrParam interface {
SQL() string
// contains filtered or unexported methods
}LiteralOrParam is implemented by integer literal and parameter values.
LogicalOp
type LogicalOp struct {
Op LogicalOperator
LHS, RHS BoolExpr // only RHS is set for Not
}func (LogicalOp) SQL
LogicalOperator
type LogicalOperator intAnd, Or, Not
const (
And LogicalOperator = iota
Or
Not
)Node
type Node interface {
Pos() Position
}Node is implemented by concrete types in this package that represent things appearing in a DDL file.
NullLiteral
type NullLiteral intfunc (NullLiteral) SQL
func (NullLiteral) SQL() stringOnDelete
type OnDelete intNoActionOnDelete, CascadeOnDelete
func (OnDelete) SQL
Order
func (Order) SQL
Param
type Param stringParam represents a query parameter.
func (Param) SQL
Paren
type Paren struct {
Expr Expr
}Paren represents a parenthesised expression.
func (Paren) SQL
PathExp
type PathExp []IDPathExp represents a path expression.
The grammar for path expressions is not defined (see b/169017423 internally), so this captures the most common form only, namely a dotted sequence of identifiers.
func (PathExp) SQL
Position
Position describes a source position in an input DDL file. It is only valid if the line number is positive.
func (Position) IsValid
func (Position) String
Query
type Query struct {
Select Select
Order []Order
Limit, Offset LiteralOrParam
}Query represents a query statement. https://cloud.google.com/spanner/docs/query-syntax#sql-syntax
func ParseQuery
ParseQuery parses a query string.
func (Query) SQL
Select
type Select struct {
Distinct bool
List []Expr
From []SelectFrom
Where BoolExpr
GroupBy []Expr
// When the FROM clause has TABLESAMPLE operators,
// TableSamples will be populated 1:1 with From;
// FROM clauses without will have a nil value.
TableSamples []*TableSample
// If the SELECT list has explicit aliases ("AS alias"),
// ListAliases will be populated 1:1 with List;
// aliases that are present will be non-empty.
ListAliases []ID
}Select represents a SELECT statement. https://cloud.google.com/spanner/docs/query-syntax#select-list
func (Select) SQL
SelectFrom
type SelectFrom interface {
SQL() string
// contains filtered or unexported methods
}SelectFrom represents the FROM clause of a SELECT. https://cloud.google.com/spanner/docs/query-syntax#from_clause
SelectFromJoin
type SelectFromJoin struct {
Type JoinType
LHS, RHS SelectFrom
// Join condition.
// At most one of {On,Using} may be set.
On BoolExpr
Using []ID
// Hints are suggestions for how to evaluate a join.
// https://cloud.google.com/spanner/docs/query-syntax#join-hints
Hints map[string]string
}SelectFromJoin is a SelectFrom that joins two other SelectFroms. https://cloud.google.com/spanner/docs/query-syntax#join_types
func (SelectFromJoin) SQL
func (sfj SelectFromJoin) SQL() stringSelectFromTable
SelectFromTable is a SelectFrom that specifies a table to read from.
func (SelectFromTable) SQL
func (sft SelectFromTable) SQL() stringSelectFromUnnest
SelectFromUnnest is a SelectFrom that yields a virtual table from an array. https://cloud.google.com/spanner/docs/query-syntax#unnest
func (SelectFromUnnest) SQL
func (sfu SelectFromUnnest) SQL() stringSetColumnOptions
type SetColumnOptions struct{ Options ColumnOptions }func (SetColumnOptions) SQL
func (sco SetColumnOptions) SQL() stringSetColumnType
func (SetColumnType) SQL
func (sct SetColumnType) SQL() stringSetOnDelete
type SetOnDelete struct{ Action OnDelete }func (SetOnDelete) SQL
func (sod SetOnDelete) SQL() stringStarExpr
type StarExpr intfunc (StarExpr) SQL
StringLiteral
type StringLiteral stringStringLiteral represents a string literal. https://cloud.google.com/spanner/docs/lexical#string-and-bytes-literals
func (StringLiteral) SQL
func (sl StringLiteral) SQL() stringTableAlteration
type TableAlteration interface {
SQL() string
// contains filtered or unexported methods
}TableAlteration is satisfied by AddColumn, DropColumn, AddConstraint, DropConstraint, SetOnDelete and AlterColumn.
TableConstraint
type TableConstraint struct {
Name ID // may be empty
Constraint Constraint
Position Position // position of the "CONSTRAINT" token, or Constraint.Pos()
}TableConstraint represents a constraint on a table.
func (TableConstraint) Pos
func (tc TableConstraint) Pos() Positionfunc (TableConstraint) SQL
func (tc TableConstraint) SQL() stringTableSample
type TableSample struct {
Method TableSampleMethod
Size Expr
SizeType TableSampleSizeType
}TableSampleMethod
type TableSampleMethod intBernoulli, Reservoir
const (
Bernoulli TableSampleMethod = iota
Reservoir
)TableSampleSizeType
type TableSampleSizeType intPercentTableSample, RowsTableSample
const (
PercentTableSample TableSampleSizeType = iota
RowsTableSample
)TimestampLiteral
TimestampLiteral represents a timestamp literal. https://cloud.google.com/spanner/docs/lexical#timestamp_literals
func (TimestampLiteral) SQL
func (tl TimestampLiteral) SQL() stringType
type Type struct {
Array bool
Base TypeBase // Bool, Int64, Float64, Numeric, String, Bytes, Date, Timestamp
Len int64 // if Base is String or Bytes; may be MaxLen
}Type represents a column type.
func (Type) SQL
TypeBase
type TypeBase intBool, Int64, Float64, Numeric, String, Bytes, Date, Timestamp
func (TypeBase) SQL
Update
type Update struct {
Table ID
Items []UpdateItem
Where BoolExpr
}Update represents an UPDATE statement. https://cloud.google.com/spanner/docs/dml-syntax#update-statement