Documentation
¶
Overview ¶
Package ast provides Abstract Syntax Tree (AST) node definitions for SQL statements. It includes comprehensive support for DDL and DML operations, Common Table Expressions (CTEs), set operations, and window functions, with object pooling for performance optimization.
Phase 2 Features (v1.2.0+):
- WithClause and CommonTableExpr for CTE support
- SetOperation for UNION, EXCEPT, INTERSECT operations
- Recursive CTE support with proper AST representation
- Integration with all statement types
Phase 2.5 Features (v1.3.0+):
- WindowSpec for window function specifications
- WindowFrame and WindowFrameBound for frame clauses
- Enhanced FunctionCall with Over field for window functions
- Complete window function AST integration
Index ¶
- func GetExpressionSlice() *[]Expression
- func GetSpan(node interface{}) models.Span
- func Inspect(node Node, f func(Node) bool)
- func ParseStructTags(tag string) map[string]string
- func PutBinaryExpression(expr *BinaryExpression)
- func PutDeleteStatement(stmt *DeleteStatement)
- func PutExpression(expr Expression)
- func PutExpressionSlice(slice *[]Expression)
- func PutIdentifier(ident *Identifier)
- func PutInsertStatement(stmt *InsertStatement)
- func PutLiteralValue(lit *LiteralValue)
- func PutSelectStatement(stmt *SelectStatement)
- func PutUpdateExpression(expr *UpdateExpression)
- func PutUpdateStatement(stmt *UpdateStatement)
- func ReleaseAST(ast *AST)
- func SetSpan(node interface{}, span models.Span)
- func UnionSpans(spans []models.Span) models.Span
- func Walk(v Visitor, node Node) error
- type AST
- type AlterColumnOperation
- type AlterConnectorOperation
- type AlterConnectorOwner
- type AlterOperation
- type AlterPolicyOpType
- type AlterPolicyOperation
- type AlterRoleOpType
- type AlterRoleOperation
- type AlterStatement
- type AlterTableAction
- type AlterTableOpType
- type AlterTableOperation
- type AlterTableStatement
- type AlterType
- type ArrayBracketType
- type ArrayElemTypeDef
- type ArrayType
- type AttachedToken
- func (a AttachedToken) Compare(other AttachedToken) int
- func (a AttachedToken) Empty() AttachedToken
- func (a AttachedToken) Equal(other AttachedToken) bool
- func (a AttachedToken) GoString() string
- func (a AttachedToken) Hash(h hash.Hash)
- func (a AttachedToken) String() string
- func (a AttachedToken) UnwrapToken() TokenWithSpan
- type BetweenExpression
- type BinaryExpression
- type BinaryLength
- type BinaryOperator
- type BinaryType
- type BooleanType
- type CaseExpression
- type CastExpression
- type CharLengthUnits
- type CharacterLength
- type CharacterType
- type ClusteredBy
- type ColumnConstraint
- type ColumnDef
- type ColumnPosition
- type CommentDef
- type CommonTableExpr
- type CreateIndexStatement
- type CreateTable
- type CreateTableBuilder
- func (b *CreateTableBuilder) Build() *StatementImpl
- func (b *CreateTableBuilder) SetAggregationPolicy(v *ObjectName) *CreateTableBuilder
- func (b *CreateTableBuilder) SetAutoIncrementOffset(v *uint32) *CreateTableBuilder
- func (b *CreateTableBuilder) SetBaseLocation(v *string) *CreateTableBuilder
- func (b *CreateTableBuilder) SetCatalog(v *string) *CreateTableBuilder
- func (b *CreateTableBuilder) SetCatalogSync(v *string) *CreateTableBuilder
- func (b *CreateTableBuilder) SetChangeTracking(v *bool) *CreateTableBuilder
- func (b *CreateTableBuilder) SetClone(v *ObjectName) *CreateTableBuilder
- func (b *CreateTableBuilder) SetClusterBy(v *WrappedCollection[[]Ident]) *CreateTableBuilder
- func (b *CreateTableBuilder) SetClusteredBy(v *ClusteredBy) *CreateTableBuilder
- func (b *CreateTableBuilder) SetCollation(v *string) *CreateTableBuilder
- func (b *CreateTableBuilder) SetColumns(v []ColumnDef) *CreateTableBuilder
- func (b *CreateTableBuilder) SetComment(v *CommentDef) *CreateTableBuilder
- func (b *CreateTableBuilder) SetConstraints(v []TableConstraint) *CreateTableBuilder
- func (b *CreateTableBuilder) SetCopyGrants(v bool) *CreateTableBuilder
- func (b *CreateTableBuilder) SetDataRetentionDays(v *uint64) *CreateTableBuilder
- func (b *CreateTableBuilder) SetDefaultCharset(v *string) *CreateTableBuilder
- func (b *CreateTableBuilder) SetDefaultDDLCollation(v *string) *CreateTableBuilder
- func (b *CreateTableBuilder) SetEnableSchemaEvolution(v *bool) *CreateTableBuilder
- func (b *CreateTableBuilder) SetEngine(v *TableEngine) *CreateTableBuilder
- func (b *CreateTableBuilder) SetExternal(v bool) *CreateTableBuilder
- func (b *CreateTableBuilder) SetExternalVolume(v *string) *CreateTableBuilder
- func (b *CreateTableBuilder) SetFileFormat(v *FileFormat) *CreateTableBuilder
- func (b *CreateTableBuilder) SetGlobal(v *bool) *CreateTableBuilder
- func (b *CreateTableBuilder) SetHiveDistribution(v HiveDistributionStyle) *CreateTableBuilder
- func (b *CreateTableBuilder) SetHiveFormats(v *HiveFormat) *CreateTableBuilder
- func (b *CreateTableBuilder) SetIceberg(v bool) *CreateTableBuilder
- func (b *CreateTableBuilder) SetIfNotExists(v bool) *CreateTableBuilder
- func (b *CreateTableBuilder) SetLike(v *ObjectName) *CreateTableBuilder
- func (b *CreateTableBuilder) SetLocation(v *string) *CreateTableBuilder
- func (b *CreateTableBuilder) SetMaxDataExtensionDays(v *uint64) *CreateTableBuilder
- func (b *CreateTableBuilder) SetOnCluster(v *Ident) *CreateTableBuilder
- func (b *CreateTableBuilder) SetOnCommit(v *OnCommit) *CreateTableBuilder
- func (b *CreateTableBuilder) SetOptions(v *[]SqlOption) *CreateTableBuilder
- func (b *CreateTableBuilder) SetOrReplace(v bool) *CreateTableBuilder
- func (b *CreateTableBuilder) SetOrderBy(v *OneOrManyWithParens[Expr]) *CreateTableBuilder
- func (b *CreateTableBuilder) SetPartitionBy(v *Expr) *CreateTableBuilder
- func (b *CreateTableBuilder) SetPrimaryKey(v *Expr) *CreateTableBuilder
- func (b *CreateTableBuilder) SetQuery(v *Query) *CreateTableBuilder
- func (b *CreateTableBuilder) SetRowAccessPolicy(v *RowAccessPolicy) *CreateTableBuilder
- func (b *CreateTableBuilder) SetSerializationPolicy(v *StorageSerializationPolicy) *CreateTableBuilder
- func (b *CreateTableBuilder) SetStrict(v bool) *CreateTableBuilder
- func (b *CreateTableBuilder) SetTableProperties(v []SqlOption) *CreateTableBuilder
- func (b *CreateTableBuilder) SetTags(v *[]Tag) *CreateTableBuilder
- func (b *CreateTableBuilder) SetTemporary(v bool) *CreateTableBuilder
- func (b *CreateTableBuilder) SetTransient(v bool) *CreateTableBuilder
- func (b *CreateTableBuilder) SetVolatile(v bool) *CreateTableBuilder
- func (b *CreateTableBuilder) SetWithOptions(v []SqlOption) *CreateTableBuilder
- func (b *CreateTableBuilder) SetWithoutRowID(v bool) *CreateTableBuilder
- type CreateTableStatement
- type CustomBinaryOperator
- type CustomType
- type DataLoadingOption
- type DataLoadingOptionType
- type DataLoadingOptions
- type DataType
- type DataTypeVariant
- type DateTimeField
- type DateType
- type Delete
- type DeleteStatement
- type DollarQuotedString
- type DropBehavior
- type EnumMember
- type EnumType
- type ExactNumberInfo
- type ExistsExpression
- type Expr
- type Expression
- type ExtractExpression
- type FileFormat
- type FileStagingCommand
- type FloatType
- type FunctionCall
- type FunctionDesc
- type HiveDistributionStyle
- type HiveFormat
- type Ident
- type Identifier
- type InExpression
- type IndexColumn
- type IndexOption
- type IndexOptionType
- type IndexType
- type InputFormatClause
- type Insert
- type InsertStatement
- type Inspector
- type IntegerType
- type JoinClause
- type JsonType
- type ListExpression
- type LiteralValue
- type Location
- type Node
- type NormalizationForm
- type NullsDistinctOption
- type Number
- type NumericType
- type ObjectName
- type OnCommit
- type OnConflict
- type OnConflictAction
- type OneOrManyWithParens
- type Partition
- type PartitionBy
- type PositionExpression
- type Query
- type ReferenceDefinition
- type RoleOption
- type RoleOptionType
- type RowAccessPolicy
- type Select
- type SelectStatement
- type SetOperation
- type SetType
- type Setting
- type Span
- type Spanned
- type SpannedNode
- type SqlOption
- type StageLoadSelectItem
- type StageParamsObject
- type Statement
- type StatementImpl
- type StatementVariant
- type StorageSerializationPolicy
- type StructBracketKind
- type StructField
- type SubstringExpression
- type Table
- type TableConstraint
- type TableEngine
- type TableOption
- type TableReference
- type TableType
- type Tag
- type TimeType
- type TimestampType
- type TimezoneInfo
- type Token
- type TokenType
- type TokenWithSpan
- type TriggerEvent
- type TriggerEventType
- type TriggerExecBody
- type TriggerExecBodyType
- type TriggerObject
- type TriggerPeriod
- type TriggerReferencing
- type TriggerReferencingType
- type TrimWhereField
- type UnaryExpression
- type UnaryOperator
- type Update
- type UpdateExpression
- type UpdateStatement
- type UpsertClause
- type Value
- type ValueType
- type Values
- type VarcharType
- type VisitFunc
- type Visitor
- type WhenClause
- type WindowFrame
- type WindowFrameBound
- type WindowSpec
- type WithClause
- type WrappedCollection
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetExpressionSlice ¶
func GetExpressionSlice() *[]Expression
GetExpressionSlice gets a slice of Expression from the pool
func Inspect ¶
Inspect traverses an AST in depth-first order: It starts by calling f(node); node must not be nil. If f returns true, Inspect invokes f recursively for each of the non-nil children of node, followed by a call of f(nil).
func ParseStructTags ¶
ParseStructTags parses struct field tags into a map
func PutBinaryExpression ¶
func PutBinaryExpression(expr *BinaryExpression)
PutBinaryExpression returns a BinaryExpression to the pool
func PutDeleteStatement ¶
func PutDeleteStatement(stmt *DeleteStatement)
PutDeleteStatement returns a DeleteStatement to the pool
func PutExpression ¶
func PutExpression(expr Expression)
PutExpression returns any Expression to the appropriate pool
func PutExpressionSlice ¶
func PutExpressionSlice(slice *[]Expression)
PutExpressionSlice returns a slice of Expression to the pool
func PutIdentifier ¶
func PutIdentifier(ident *Identifier)
PutIdentifier returns an Identifier to the pool
func PutInsertStatement ¶
func PutInsertStatement(stmt *InsertStatement)
PutInsertStatement returns an InsertStatement to the pool
func PutLiteralValue ¶
func PutLiteralValue(lit *LiteralValue)
PutLiteralValue returns a LiteralValue to the pool
func PutSelectStatement ¶
func PutSelectStatement(stmt *SelectStatement)
PutSelectStatement returns a SelectStatement to the pool
func PutUpdateExpression ¶
func PutUpdateExpression(expr *UpdateExpression)
PutUpdateExpression returns an UpdateExpression to the pool
func PutUpdateStatement ¶
func PutUpdateStatement(stmt *UpdateStatement)
PutUpdateStatement returns an UpdateStatement to the pool
func UnionSpans ¶
UnionSpans returns the union of all spans in the given slice
Types ¶
type AST ¶
type AST struct {
Statements []Statement
}
AST represents the root of the Abstract Syntax Tree
func (AST) TokenLiteral ¶
type AlterColumnOperation ¶
type AlterColumnOperation int
AlterColumnOperation represents operations that can be performed on columns
const ( AlterColumnSetDefault AlterColumnOperation = iota AlterColumnDropDefault AlterColumnSetNotNull AlterColumnDropNotNull )
func (*AlterColumnOperation) Children ¶
func (a *AlterColumnOperation) Children() []Node
Make AlterColumnOperation implement Node interface
func (*AlterColumnOperation) TokenLiteral ¶
func (a *AlterColumnOperation) TokenLiteral() string
type AlterConnectorOperation ¶
type AlterConnectorOperation struct {
Properties map[string]string
URL string
Owner *AlterConnectorOwner
}
AlterConnectorOperation represents operations that can be performed on a connector
func (AlterConnectorOperation) Children ¶
func (a AlterConnectorOperation) Children() []Node
func (AlterConnectorOperation) TokenLiteral ¶
func (a AlterConnectorOperation) TokenLiteral() string
type AlterConnectorOwner ¶
AlterConnectorOwner represents the new owner of a connector
type AlterOperation ¶
type AlterOperation interface {
Node
// contains filtered or unexported methods
}
AlterOperation represents the operation to be performed
type AlterPolicyOpType ¶
type AlterPolicyOpType int
AlterPolicyOpType represents the type of policy alteration
const ( RenamePolicy AlterPolicyOpType = iota ModifyPolicy )
type AlterPolicyOperation ¶
type AlterPolicyOperation struct {
Type AlterPolicyOpType
NewName string
To []string
Using Expression
WithCheck Expression
}
AlterPolicyOperation represents operations that can be performed on a policy
func (AlterPolicyOperation) Children ¶
func (a AlterPolicyOperation) Children() []Node
func (AlterPolicyOperation) TokenLiteral ¶
func (a AlterPolicyOperation) TokenLiteral() string
type AlterRoleOpType ¶
type AlterRoleOpType int
AlterRoleOpType represents the type of role alteration
const ( RenameRole AlterRoleOpType = iota AddMember DropMember SetConfig ResetConfig WithOptions )
type AlterRoleOperation ¶
type AlterRoleOperation struct {
Type AlterRoleOpType
NewName string
Options []RoleOption
MemberName string
ConfigName string
ConfigValue Expression
InDatabase string
}
AlterRoleOperation represents operations that can be performed on a role
func (AlterRoleOperation) Children ¶
func (a AlterRoleOperation) Children() []Node
func (AlterRoleOperation) TokenLiteral ¶
func (a AlterRoleOperation) TokenLiteral() string
type AlterStatement ¶
type AlterStatement struct {
Type AlterType
Name string // Name of the object being altered
Operation AlterOperation
}
AlterStatement represents an ALTER statement
func (AlterStatement) Children ¶
func (a AlterStatement) Children() []Node
func (AlterStatement) TokenLiteral ¶
func (a AlterStatement) TokenLiteral() string
type AlterTableAction ¶
type AlterTableAction struct {
Type string // ADD COLUMN, DROP COLUMN, MODIFY COLUMN, etc.
ColumnName string
ColumnDef *ColumnDef
Constraint *TableConstraint
}
AlterTableAction represents an action in ALTER TABLE
func (AlterTableAction) Children ¶
func (a AlterTableAction) Children() []Node
func (AlterTableAction) TokenLiteral ¶
func (a AlterTableAction) TokenLiteral() string
type AlterTableOpType ¶
type AlterTableOpType int
AlterTableOpType represents the type of table alteration
const ( AddConstraint AlterTableOpType = iota AddColumn AddProjection AlterColumn ChangeColumn ClearProjection DropColumn DropConstraint DropPartition DropProjection MaterializeProjection ModifyColumn RenameColumn RenameConstraint RenamePartitions RenameTable )
type AlterTableOperation ¶
type AlterTableOperation struct {
Type AlterTableOpType
ColumnKeyword bool // Used for AddColumn
IfNotExists bool // Used for AddColumn, AddPartition
IfExists bool // Used for DropColumn, DropConstraint, DropPartition
ColumnDef *ColumnDef // Used for AddColumn
ColumnPosition *ColumnPosition // Used for AddColumn, ChangeColumn, ModifyColumn
Constraint *TableConstraint // Used for AddConstraint
ProjectionName *Ident // Used for AddProjection, DropProjection
ProjectionSelect *Select // Used for AddProjection
PartitionName *Ident // Used for MaterializeProjection, ClearProjection
OldColumnName *Ident // Used for RenameColumn
NewColumnName *Ident // Used for RenameColumn
TableName ObjectName // Used for RenameTable
NewTableName ObjectName // Used for RenameTable
OldPartitions []*Expression // Used for RenamePartitions
NewPartitions []*Expression // Used for RenamePartitions
Partitions []*Partition // Used for AddPartitions
DropBehavior DropBehavior // Used for DropColumn, DropConstraint
ConstraintName *Ident // Used for DropConstraint
OldName *Ident // Used for RenameConstraint
NewName *Ident // Used for RenameConstraint
ColumnName *Ident // Used for AlterColumn
AlterColumnOp *AlterColumnOperation // Used for AlterColumn
CascadeDrops bool // Used for DropColumn, DropConstraint
}
AlterTableOperation represents operations that can be performed on a table
func (AlterTableOperation) Children ¶
func (a AlterTableOperation) Children() []Node
func (AlterTableOperation) TokenLiteral ¶
func (a AlterTableOperation) TokenLiteral() string
type AlterTableStatement ¶
type AlterTableStatement struct {
Table string
Actions []AlterTableAction
}
AlterTableStatement represents an ALTER TABLE statement
func (AlterTableStatement) Children ¶
func (a AlterTableStatement) Children() []Node
func (AlterTableStatement) TokenLiteral ¶
func (a AlterTableStatement) TokenLiteral() string
type ArrayBracketType ¶
type ArrayBracketType int
const ( NoBrackets ArrayBracketType = iota AngleBrackets SquareBrackets Parentheses )
type ArrayElemTypeDef ¶
type ArrayElemTypeDef struct {
Type *DataType
Size *uint64
Brackets ArrayBracketType
}
ArrayElemTypeDef represents array element type definition
func (*ArrayElemTypeDef) String ¶
func (a *ArrayElemTypeDef) String() string
type AttachedToken ¶
type AttachedToken struct {
Token TokenWithSpan
}
AttachedToken is a wrapper over TokenWithSpan that ignores the token and source location in comparisons and hashing.
This type is used when the token and location is not relevant for semantics, but is still needed for accurate source location tracking.
Note: ALL AttachedTokens are equal.
Examples:
Same token, different location are equal:
// commas @ line 1, column 10
tok1 := NewTokenWithSpan(
Token{Type: Comma},
Span{Start: Location{Line: 1, Column: 10}, End: Location{Line: 1, Column: 11}},
)
// commas @ line 2, column 20
tok2 := NewTokenWithSpan(
Token{Type: Comma},
Span{Start: Location{Line: 2, Column: 20}, End: Location{Line: 2, Column: 21}},
)
// token with locations are *not* equal
fmt.Println(tok1 != tok2) // true
// attached tokens are equal
fmt.Println(AttachedToken{tok1} == AttachedToken{tok2}) // true
Different token, different location are equal:
// commas @ line 1, column 10
tok1 := NewTokenWithSpan(
Token{Type: Comma},
Span{Start: Location{Line: 1, Column: 10}, End: Location{Line: 1, Column: 11}},
)
// period @ line 2, column 20
tok2 := NewTokenWithSpan(
Token{Type: Period},
Span{Start: Location{Line: 2, Column: 20}, End: Location{Line: 2, Column: 21}},
)
// token with locations are *not* equal
fmt.Println(tok1 != tok2) // true
// attached tokens are equal
fmt.Println(AttachedToken{tok1} == AttachedToken{tok2}) // true
func NewAttachedToken ¶
func NewAttachedToken(token TokenWithSpan) AttachedToken
NewAttachedToken creates a new AttachedToken from a TokenWithSpan
func WrapToken ¶
func WrapToken(token TokenWithSpan) AttachedToken
WrapToken wraps a TokenWithSpan in an AttachedToken
func (AttachedToken) Compare ¶
func (a AttachedToken) Compare(other AttachedToken) int
Compare implements comparison Note: ALL AttachedTokens are equal
func (AttachedToken) Empty ¶
func (a AttachedToken) Empty() AttachedToken
Empty returns a new Empty AttachedToken
func (AttachedToken) Equal ¶
func (a AttachedToken) Equal(other AttachedToken) bool
Equal implements equality comparison Note: ALL AttachedTokens are equal
func (AttachedToken) GoString ¶
func (a AttachedToken) GoString() string
GoString implements fmt.GoStringer
func (AttachedToken) Hash ¶
func (a AttachedToken) Hash(h hash.Hash)
Hash implements hashing Note: ALL AttachedTokens have the same hash
func (AttachedToken) UnwrapToken ¶
func (a AttachedToken) UnwrapToken() TokenWithSpan
UnwrapToken returns the underlying TokenWithSpan
type BetweenExpression ¶
type BetweenExpression struct {
Expr Expression
Lower Expression
Upper Expression
Not bool
}
BetweenExpression represents expr BETWEEN lower AND upper
func (BetweenExpression) Children ¶
func (b BetweenExpression) Children() []Node
func (BetweenExpression) TokenLiteral ¶
func (b BetweenExpression) TokenLiteral() string
type BinaryExpression ¶
type BinaryExpression struct {
Left Expression
Operator string
Right Expression
Not bool // For NOT (expr)
CustomOp *CustomBinaryOperator // For PostgreSQL custom operators
}
BinaryExpression represents operations like WHERE column = value
func GetBinaryExpression ¶
func GetBinaryExpression() *BinaryExpression
GetBinaryExpression gets a BinaryExpression from the pool
func (BinaryExpression) Children ¶
func (b BinaryExpression) Children() []Node
func (*BinaryExpression) Span ¶
func (e *BinaryExpression) Span() models.Span
Span returns the source location span for expressions
func (*BinaryExpression) TokenLiteral ¶
func (b *BinaryExpression) TokenLiteral() string
type BinaryLength ¶
BinaryLength represents binary length information
func (*BinaryLength) String ¶
func (b *BinaryLength) String() string
type BinaryOperator ¶
type BinaryOperator int
BinaryOperator represents binary operators in SQL expressions
const ( // BinaryOpNone represents no operator (zero value) BinaryOpNone BinaryOperator = iota // BinaryPlus represents addition operator, e.g. a + b BinaryPlus // BinaryMinus represents subtraction operator, e.g. a - b BinaryMinus // Multiply represents multiplication operator, e.g. a * b Multiply // Divide represents division operator, e.g. a / b Divide // Modulo represents modulo operator, e.g. a % b Modulo // StringConcat represents string/array concatenation operator, e.g. a || b StringConcat // Gt represents greater than operator, e.g. a > b Gt // Lt represents less than operator, e.g. a < b Lt // GtEq represents greater than or equal operator, e.g. a >= b GtEq // LtEq represents less than or equal operator, e.g. a <= b LtEq // Spaceship represents spaceship operator, e.g. a <=> b Spaceship // Eq represents equality operator, e.g. a = b Eq // NotEq represents inequality operator, e.g. a <> b NotEq // And represents logical AND operator, e.g. a AND b And // Or represents logical OR operator, e.g. a OR b Or // Xor represents logical XOR operator, e.g. a XOR b Xor // BitwiseOr represents bitwise OR operator, e.g. a | b BitwiseOr // BitwiseAnd represents bitwise AND operator, e.g. a & b BitwiseAnd // BitwiseXor represents bitwise XOR operator, e.g. a ^ b BitwiseXor // DuckIntegerDivide represents DuckDB integer division operator, e.g. a // b DuckIntegerDivide // MyIntegerDivide represents MySQL DIV integer division operator MyIntegerDivide // PGBitwiseXor represents PostgreSQL bitwise XOR operator, e.g. a # b PGBitwiseXor // PGBitwiseShiftLeft represents PostgreSQL bitwise shift left operator, e.g. a << b PGBitwiseShiftLeft // PGBitwiseShiftRight represents PostgreSQL bitwise shift right operator, e.g. a >> b PGBitwiseShiftRight // PGExp represents PostgreSQL exponentiation operator, e.g. a ^ b PGExp // PGOverlap represents PostgreSQL overlap operator, e.g. a && b PGOverlap // PGRegexMatch represents PostgreSQL case-sensitive regex match operator, e.g. a ~ b PGRegexMatch // PGRegexIMatch represents PostgreSQL case-insensitive regex match operator, e.g. a ~* b PGRegexIMatch // PGRegexNotMatch represents PostgreSQL case-sensitive regex non-match operator, e.g. a !~ b PGRegexNotMatch // PGRegexNotIMatch represents PostgreSQL case-insensitive regex non-match operator, e.g. a !~* b PGRegexNotIMatch // PGLikeMatch represents PostgreSQL case-sensitive LIKE match operator, e.g. a ~~ b PGLikeMatch // PGILikeMatch represents PostgreSQL case-insensitive LIKE match operator, e.g. a ~~* b PGILikeMatch // PGNotLikeMatch represents PostgreSQL case-sensitive NOT LIKE match operator, e.g. a !~~ b PGNotLikeMatch // PGNotILikeMatch represents PostgreSQL case-insensitive NOT LIKE match operator, e.g. a !~~* b PGNotILikeMatch // PGStartsWith represents PostgreSQL starts-with operator, e.g. a ^@ b PGStartsWith // Arrow represents JSON field/array element access operator, e.g. a -> b Arrow // LongArrow represents JSON field/array element access with text conversion operator, e.g. a ->> b LongArrow // HashArrow represents JSON path access operator, e.g. a #> b HashArrow // HashLongArrow represents JSON path access with text conversion operator, e.g. a #>> b HashLongArrow // AtAt represents PostgreSQL text/JSON search operator, e.g. a @@ b AtAt // AtArrow represents PostgreSQL contains operator, e.g. a @> b AtArrow // ArrowAt represents PostgreSQL contained by operator, e.g. a <@ b ArrowAt // HashMinus represents PostgreSQL JSON delete operator, e.g. a #- b HashMinus // AtQuestion represents PostgreSQL JSON path exists operator, e.g. a @? b AtQuestion // Question represents PostgreSQL JSON key exists operator, e.g. a ? b Question // QuestionAnd represents PostgreSQL JSON all keys exist operator, e.g. a ?& b QuestionAnd // QuestionPipe represents PostgreSQL JSON any key exists operator, e.g. a ?| b QuestionPipe // Overlaps represents SQL OVERLAPS operator for datetime periods Overlaps )
func (BinaryOperator) String ¶
func (op BinaryOperator) String() string
String returns the string representation of the binary operator
type BinaryType ¶
type BinaryType struct {
Length *BinaryLength
}
Basic data types
func (*BinaryType) String ¶
func (t *BinaryType) String() string
type BooleanType ¶
type BooleanType struct{}
Basic data types
func (*BooleanType) String ¶
func (*BooleanType) String() string
type CaseExpression ¶
type CaseExpression struct {
Value Expression // Optional CASE value
WhenClauses []WhenClause
ElseClause Expression
}
CaseExpression represents a CASE expression
func (CaseExpression) Children ¶
func (c CaseExpression) Children() []Node
func (CaseExpression) TokenLiteral ¶
func (c CaseExpression) TokenLiteral() string
type CastExpression ¶
type CastExpression struct {
Expr Expression
Type string
}
CastExpression represents CAST(expr AS type)
func (CastExpression) Children ¶
func (c CastExpression) Children() []Node
func (*CastExpression) Span ¶
func (e *CastExpression) Span() models.Span
func (CastExpression) TokenLiteral ¶
func (c CastExpression) TokenLiteral() string
type CharLengthUnits ¶
type CharLengthUnits int
CharLengthUnits represents possible units for characters
const ( Characters CharLengthUnits = iota Octets )
func (CharLengthUnits) String ¶
func (u CharLengthUnits) String() string
type CharacterLength ¶
type CharacterLength struct {
Length uint64
Unit *CharLengthUnits
}
CharacterLength represents character length information
func (*CharacterLength) String ¶
func (c *CharacterLength) String() string
type CharacterType ¶
type CharacterType struct {
Length *CharacterLength
}
Basic data types
func (*CharacterType) String ¶
func (t *CharacterType) String() string
type ClusteredBy ¶
ClusteredBy represents CLUSTERED BY clause
func (*ClusteredBy) Children ¶
func (c *ClusteredBy) Children() []Node
func (*ClusteredBy) TokenLiteral ¶
func (c *ClusteredBy) TokenLiteral() string
type ColumnConstraint ¶
type ColumnConstraint struct {
Type string // NOT NULL, UNIQUE, PRIMARY KEY, etc.
Default Expression
References *ReferenceDefinition
Check Expression
AutoIncrement bool
}
ColumnConstraint represents a column constraint
func (ColumnConstraint) Children ¶
func (c ColumnConstraint) Children() []Node
func (*ColumnConstraint) String ¶
func (c *ColumnConstraint) String() string
String returns a string representation of a ColumnConstraint
func (ColumnConstraint) TokenLiteral ¶
func (c ColumnConstraint) TokenLiteral() string
type ColumnDef ¶
type ColumnDef struct {
Name string
Type string
Constraints []ColumnConstraint
}
ColumnDef represents a column definition in CREATE TABLE
func (ColumnDef) TokenLiteral ¶
type ColumnPosition ¶
ColumnPosition represents the position of a column in a table
type CommentDef ¶
type CommentDef struct {
Text string
}
CommentDef represents a comment on a database object
func (*CommentDef) Children ¶
func (c *CommentDef) Children() []Node
func (*CommentDef) TokenLiteral ¶
func (c *CommentDef) TokenLiteral() string
type CommonTableExpr ¶
type CommonTableExpr struct {
Name string
Columns []string
Statement Statement
Materialized *bool // TODO: Add MATERIALIZED/NOT MATERIALIZED parsing support
}
CommonTableExpr represents a single Common Table Expression in a WITH clause. It supports optional column specifications and any statement type as the CTE query. Phase 2 Complete: Full parser support with column specifications.
func (CommonTableExpr) Children ¶
func (c CommonTableExpr) Children() []Node
func (CommonTableExpr) TokenLiteral ¶
func (c CommonTableExpr) TokenLiteral() string
type CreateIndexStatement ¶
type CreateIndexStatement struct {
Unique bool
IfNotExists bool
Name string
Table string
Columns []IndexColumn
Using string
Where Expression
}
CreateIndexStatement represents a CREATE INDEX statement
func (CreateIndexStatement) Children ¶
func (c CreateIndexStatement) Children() []Node
func (CreateIndexStatement) TokenLiteral ¶
func (c CreateIndexStatement) TokenLiteral() string
type CreateTable ¶
type CreateTable struct {
Name ObjectName
Columns []ColumnDef
Constraints []TableConstraint
Options *[]SqlOption
IfNotExists bool
Temporary bool
External bool
Stored bool
Transient bool
OrReplace bool
Global *bool
Volatile bool
Iceberg bool
HiveDistribution HiveDistributionStyle
HiveFormats *HiveFormat
TableProperties []SqlOption
WithOptions []SqlOption
FileFormat *FileFormat
Location *string
Query *Query
WithoutRowID bool
Like *ObjectName
Clone *ObjectName
Engine *TableEngine
Comment *CommentDef
AutoIncrementOffset *uint32
DefaultCharset *string
Collation *string
OnCommit *OnCommit
OnCluster *Ident
PrimaryKey *Expr
OrderBy *OneOrManyWithParens[Expr]
PartitionBy *Expr
ClusterBy *WrappedCollection[[]Ident]
ClusteredBy *ClusteredBy
Strict bool
CopyGrants bool
EnableSchemaEvolution *bool
ChangeTracking *bool
DataRetentionDays *uint64
MaxDataExtensionDays *uint64
DefaultDDLCollation *string
AggregationPolicy *ObjectName
RowAccessPolicy *RowAccessPolicy
Tags *[]Tag
BaseLocation *string
ExternalVolume *string
Catalog *string
CatalogSync *string
SerializationPolicy *StorageSerializationPolicy
}
CreateTable represents a CREATE TABLE statement
func (*CreateTable) Children ¶
func (c *CreateTable) Children() []Node
func (*CreateTable) TokenLiteral ¶
func (c *CreateTable) TokenLiteral() string
type CreateTableBuilder ¶
type CreateTableBuilder struct {
OrReplace bool
Temporary bool
External bool
Global *bool
IfNotExists bool
Transient bool
Volatile bool
Iceberg bool
Name ObjectName
Columns []ColumnDef
Constraints []TableConstraint
HiveDistribution HiveDistributionStyle
HiveFormats *HiveFormat
TableProperties []SqlOption
WithOptions []SqlOption
FileFormat *FileFormat
Location *string
Query *Query
WithoutRowID bool
Like *ObjectName
Clone *ObjectName
Engine *TableEngine
Comment *CommentDef
AutoIncrementOffset *uint32
DefaultCharset *string
Collation *string
OnCommit *OnCommit
OnCluster *Ident
PrimaryKey *Expr
OrderBy *OneOrManyWithParens[Expr]
PartitionBy *Expr
ClusterBy *WrappedCollection[[]Ident]
ClusteredBy *ClusteredBy
Options *[]SqlOption
Strict bool
CopyGrants bool
EnableSchemaEvolution *bool
ChangeTracking *bool
DataRetentionDays *uint64
MaxDataExtensionDays *uint64
DefaultDDLCollation *string
AggregationPolicy *ObjectName
RowAccessPolicy *RowAccessPolicy
Tags *[]Tag
BaseLocation *string
ExternalVolume *string
Catalog *string
CatalogSync *string
SerializationPolicy *StorageSerializationPolicy
}
CreateTableBuilder helps in building and accessing a create table statement with more ease. Example:
builder := NewCreateTableBuilder(ObjectName{Idents: []Ident{{Value: "table_name"}}}).
SetIfNotExists(true).
SetColumns([]ColumnDef{{
Name: Ident{Value: "c1"},
DataType: &DataType{Variant: &Int32Type{}},
}})
func FromStatement ¶
func FromStatement(stmt *StatementImpl) (*CreateTableBuilder, error)
FromStatement attempts to create a CreateTableBuilder from a Statement
func NewCreateTableBuilder ¶
func NewCreateTableBuilder(name ObjectName) *CreateTableBuilder
NewCreateTableBuilder creates a new CreateTableBuilder with default values
func (*CreateTableBuilder) Build ¶
func (b *CreateTableBuilder) Build() *StatementImpl
Build converts the builder into a CreateTable statement
func (*CreateTableBuilder) SetAggregationPolicy ¶
func (b *CreateTableBuilder) SetAggregationPolicy(v *ObjectName) *CreateTableBuilder
func (*CreateTableBuilder) SetAutoIncrementOffset ¶
func (b *CreateTableBuilder) SetAutoIncrementOffset(v *uint32) *CreateTableBuilder
func (*CreateTableBuilder) SetBaseLocation ¶
func (b *CreateTableBuilder) SetBaseLocation(v *string) *CreateTableBuilder
func (*CreateTableBuilder) SetCatalog ¶
func (b *CreateTableBuilder) SetCatalog(v *string) *CreateTableBuilder
func (*CreateTableBuilder) SetCatalogSync ¶
func (b *CreateTableBuilder) SetCatalogSync(v *string) *CreateTableBuilder
func (*CreateTableBuilder) SetChangeTracking ¶
func (b *CreateTableBuilder) SetChangeTracking(v *bool) *CreateTableBuilder
func (*CreateTableBuilder) SetClone ¶
func (b *CreateTableBuilder) SetClone(v *ObjectName) *CreateTableBuilder
func (*CreateTableBuilder) SetClusterBy ¶
func (b *CreateTableBuilder) SetClusterBy(v *WrappedCollection[[]Ident]) *CreateTableBuilder
func (*CreateTableBuilder) SetClusteredBy ¶
func (b *CreateTableBuilder) SetClusteredBy(v *ClusteredBy) *CreateTableBuilder
func (*CreateTableBuilder) SetCollation ¶
func (b *CreateTableBuilder) SetCollation(v *string) *CreateTableBuilder
func (*CreateTableBuilder) SetColumns ¶
func (b *CreateTableBuilder) SetColumns(v []ColumnDef) *CreateTableBuilder
func (*CreateTableBuilder) SetComment ¶
func (b *CreateTableBuilder) SetComment(v *CommentDef) *CreateTableBuilder
func (*CreateTableBuilder) SetConstraints ¶
func (b *CreateTableBuilder) SetConstraints(v []TableConstraint) *CreateTableBuilder
func (*CreateTableBuilder) SetCopyGrants ¶
func (b *CreateTableBuilder) SetCopyGrants(v bool) *CreateTableBuilder
func (*CreateTableBuilder) SetDataRetentionDays ¶
func (b *CreateTableBuilder) SetDataRetentionDays(v *uint64) *CreateTableBuilder
func (*CreateTableBuilder) SetDefaultCharset ¶
func (b *CreateTableBuilder) SetDefaultCharset(v *string) *CreateTableBuilder
func (*CreateTableBuilder) SetDefaultDDLCollation ¶
func (b *CreateTableBuilder) SetDefaultDDLCollation(v *string) *CreateTableBuilder
func (*CreateTableBuilder) SetEnableSchemaEvolution ¶
func (b *CreateTableBuilder) SetEnableSchemaEvolution(v *bool) *CreateTableBuilder
func (*CreateTableBuilder) SetEngine ¶
func (b *CreateTableBuilder) SetEngine(v *TableEngine) *CreateTableBuilder
func (*CreateTableBuilder) SetExternal ¶
func (b *CreateTableBuilder) SetExternal(v bool) *CreateTableBuilder
func (*CreateTableBuilder) SetExternalVolume ¶
func (b *CreateTableBuilder) SetExternalVolume(v *string) *CreateTableBuilder
func (*CreateTableBuilder) SetFileFormat ¶
func (b *CreateTableBuilder) SetFileFormat(v *FileFormat) *CreateTableBuilder
func (*CreateTableBuilder) SetGlobal ¶
func (b *CreateTableBuilder) SetGlobal(v *bool) *CreateTableBuilder
func (*CreateTableBuilder) SetHiveDistribution ¶
func (b *CreateTableBuilder) SetHiveDistribution(v HiveDistributionStyle) *CreateTableBuilder
func (*CreateTableBuilder) SetHiveFormats ¶
func (b *CreateTableBuilder) SetHiveFormats(v *HiveFormat) *CreateTableBuilder
func (*CreateTableBuilder) SetIceberg ¶
func (b *CreateTableBuilder) SetIceberg(v bool) *CreateTableBuilder
func (*CreateTableBuilder) SetIfNotExists ¶
func (b *CreateTableBuilder) SetIfNotExists(v bool) *CreateTableBuilder
func (*CreateTableBuilder) SetLike ¶
func (b *CreateTableBuilder) SetLike(v *ObjectName) *CreateTableBuilder
func (*CreateTableBuilder) SetLocation ¶
func (b *CreateTableBuilder) SetLocation(v *string) *CreateTableBuilder
func (*CreateTableBuilder) SetMaxDataExtensionDays ¶
func (b *CreateTableBuilder) SetMaxDataExtensionDays(v *uint64) *CreateTableBuilder
func (*CreateTableBuilder) SetOnCluster ¶
func (b *CreateTableBuilder) SetOnCluster(v *Ident) *CreateTableBuilder
func (*CreateTableBuilder) SetOnCommit ¶
func (b *CreateTableBuilder) SetOnCommit(v *OnCommit) *CreateTableBuilder
func (*CreateTableBuilder) SetOptions ¶
func (b *CreateTableBuilder) SetOptions(v *[]SqlOption) *CreateTableBuilder
func (*CreateTableBuilder) SetOrReplace ¶
func (b *CreateTableBuilder) SetOrReplace(v bool) *CreateTableBuilder
Fluent builder methods
func (*CreateTableBuilder) SetOrderBy ¶
func (b *CreateTableBuilder) SetOrderBy(v *OneOrManyWithParens[Expr]) *CreateTableBuilder
func (*CreateTableBuilder) SetPartitionBy ¶
func (b *CreateTableBuilder) SetPartitionBy(v *Expr) *CreateTableBuilder
func (*CreateTableBuilder) SetPrimaryKey ¶
func (b *CreateTableBuilder) SetPrimaryKey(v *Expr) *CreateTableBuilder
func (*CreateTableBuilder) SetQuery ¶
func (b *CreateTableBuilder) SetQuery(v *Query) *CreateTableBuilder
func (*CreateTableBuilder) SetRowAccessPolicy ¶
func (b *CreateTableBuilder) SetRowAccessPolicy(v *RowAccessPolicy) *CreateTableBuilder
func (*CreateTableBuilder) SetSerializationPolicy ¶
func (b *CreateTableBuilder) SetSerializationPolicy(v *StorageSerializationPolicy) *CreateTableBuilder
func (*CreateTableBuilder) SetStrict ¶
func (b *CreateTableBuilder) SetStrict(v bool) *CreateTableBuilder
func (*CreateTableBuilder) SetTableProperties ¶
func (b *CreateTableBuilder) SetTableProperties(v []SqlOption) *CreateTableBuilder
func (*CreateTableBuilder) SetTags ¶
func (b *CreateTableBuilder) SetTags(v *[]Tag) *CreateTableBuilder
func (*CreateTableBuilder) SetTemporary ¶
func (b *CreateTableBuilder) SetTemporary(v bool) *CreateTableBuilder
func (*CreateTableBuilder) SetTransient ¶
func (b *CreateTableBuilder) SetTransient(v bool) *CreateTableBuilder
func (*CreateTableBuilder) SetVolatile ¶
func (b *CreateTableBuilder) SetVolatile(v bool) *CreateTableBuilder
func (*CreateTableBuilder) SetWithOptions ¶
func (b *CreateTableBuilder) SetWithOptions(v []SqlOption) *CreateTableBuilder
func (*CreateTableBuilder) SetWithoutRowID ¶
func (b *CreateTableBuilder) SetWithoutRowID(v bool) *CreateTableBuilder
type CreateTableStatement ¶
type CreateTableStatement struct {
IfNotExists bool
Temporary bool
Name string
Columns []ColumnDef
Constraints []TableConstraint
Inherits []string
PartitionBy *PartitionBy
Options []TableOption
}
CreateTableStatement represents a CREATE TABLE statement
func (CreateTableStatement) Children ¶
func (c CreateTableStatement) Children() []Node
func (CreateTableStatement) TokenLiteral ¶
func (c CreateTableStatement) TokenLiteral() string
type CustomBinaryOperator ¶
type CustomBinaryOperator struct {
Parts []string
}
CustomBinaryOperator represents a custom binary operator (PostgreSQL-specific)
func (*CustomBinaryOperator) String ¶
func (op *CustomBinaryOperator) String() string
String returns the string representation of the custom binary operator
type CustomType ¶
type CustomType struct {
Name ObjectName
Modifiers []string
}
Basic data types
func (*CustomType) String ¶
func (t *CustomType) String() string
type DataLoadingOption ¶
type DataLoadingOption struct {
OptionName string
OptionType DataLoadingOptionType
Value string
}
DataLoadingOption represents a single data loading option
func NewBooleanOption ¶
func NewBooleanOption(name string, value bool) DataLoadingOption
NewBooleanOption creates a new boolean-type DataLoadingOption
func NewEnumOption ¶
func NewEnumOption(name, value string) DataLoadingOption
NewEnumOption creates a new enum-type DataLoadingOption
func NewNumberOption ¶
func NewNumberOption(name string, value interface{}) DataLoadingOption
NewNumberOption creates a new number-type DataLoadingOption
func NewStringOption ¶
func NewStringOption(name, value string) DataLoadingOption
NewStringOption creates a new string-type DataLoadingOption
func (*DataLoadingOption) String ¶
func (d *DataLoadingOption) String() string
String implements the Stringer interface for DataLoadingOption
type DataLoadingOptionType ¶
type DataLoadingOptionType int
DataLoadingOptionType represents the type of a data loading option
const ( DataLoadingOptionTypeString DataLoadingOptionType = iota DataLoadingOptionTypeBoolean DataLoadingOptionTypeEnum DataLoadingOptionTypeNumber )
type DataLoadingOptions ¶
type DataLoadingOptions struct {
Options []DataLoadingOption
}
DataLoadingOptions represents a collection of data loading options
func (*DataLoadingOptions) String ¶
func (d *DataLoadingOptions) String() string
String implements the Stringer interface for DataLoadingOptions
type DataTypeVariant ¶
DataTypeVariant represents the different variants of SQL data types
type DateTimeField ¶
type DateTimeField int
DateTimeField represents date/time fields that can be extracted or used in operations
const ( Year DateTimeField = iota Years Month Months Week Weeks Day DayOfWeek DayOfYear Days Date Datetime Hour Hours Minute Minutes Second Seconds Century Decade Dow Doy Epoch Isodow IsoWeek Isoyear Julian Microsecond Microseconds Millenium Millennium Millisecond Milliseconds Nanosecond Nanoseconds Quarter Time Timezone TimezoneAbbr TimezoneHour TimezoneMinute TimezoneRegion NoDateTime CustomDateTime )
func (DateTimeField) String ¶
func (d DateTimeField) String() string
type Delete ¶
type Delete struct {
Table TableReference
Where Expression
ReturningClause []Expression
}
Delete represents a DELETE statement
func (Delete) TokenLiteral ¶
type DeleteStatement ¶
type DeleteStatement struct {
With *WithClause
TableName string
Alias string
Using []TableReference
Where Expression
Returning []Expression
}
DeleteStatement represents a DELETE SQL statement
func GetDeleteStatement ¶
func GetDeleteStatement() *DeleteStatement
GetDeleteStatement gets a DeleteStatement from the pool
func (DeleteStatement) Children ¶
func (d DeleteStatement) Children() []Node
func (*DeleteStatement) Span ¶
func (d *DeleteStatement) Span() models.Span
Span returns the source location span for the DeleteStatement
func (DeleteStatement) TokenLiteral ¶
func (d DeleteStatement) TokenLiteral() string
type DollarQuotedString ¶
DollarQuotedString represents a dollar-quoted string with an optional tag
type DropBehavior ¶
type DropBehavior int
DropBehavior specifies the behavior when dropping objects
const ( DropCascade DropBehavior = iota DropRestrict )
type EnumMember ¶
type EnumMember struct {
Name string
Value Expression
}
EnumMember represents a member of an ENUM type
func (*EnumMember) String ¶
func (e *EnumMember) String() string
type ExactNumberInfo ¶
ExactNumberInfo represents precision and scale information
func (*ExactNumberInfo) String ¶
func (e *ExactNumberInfo) String() string
type ExistsExpression ¶
type ExistsExpression struct {
Subquery Statement
}
ExistsExpression represents EXISTS (subquery)
func (ExistsExpression) Children ¶
func (e ExistsExpression) Children() []Node
func (ExistsExpression) TokenLiteral ¶
func (e ExistsExpression) TokenLiteral() string
type Expr ¶
type Expr interface {
Node
// contains filtered or unexported methods
}
Expr represents a SQL expression
type Expression ¶
type Expression interface {
Node
// contains filtered or unexported methods
}
Expression represents a SQL expression
type ExtractExpression ¶
type ExtractExpression struct {
Field string
Source Expression
}
ExtractExpression represents EXTRACT(field FROM source)
func (ExtractExpression) Children ¶
func (e ExtractExpression) Children() []Node
func (ExtractExpression) TokenLiteral ¶
func (e ExtractExpression) TokenLiteral() string
type FileFormat ¶
type FileFormat int
FileFormat represents file format specifications
const ( FileFormatNone FileFormat = iota FileFormatCSV FileFormatJSON FileFormatParquet )
type FileStagingCommand ¶
type FileStagingCommand struct {
Stage ObjectName
Pattern *string
}
FileStagingCommand represents a file staging command
func (*FileStagingCommand) String ¶
func (f *FileStagingCommand) String() string
String implements the Stringer interface for FileStagingCommand
type FunctionCall ¶
type FunctionCall struct {
Name string
Arguments []Expression // Renamed from Args for consistency
Over *WindowSpec // For window functions
Distinct bool
Filter Expression // WHERE clause for aggregate functions
}
FunctionCall represents a function call expression
func (FunctionCall) Children ¶
func (f FunctionCall) Children() []Node
func (*FunctionCall) Span ¶
func (e *FunctionCall) Span() models.Span
func (FunctionCall) TokenLiteral ¶
func (f FunctionCall) TokenLiteral() string
type FunctionDesc ¶
type FunctionDesc struct {
Name ObjectName
Schema string // Optional schema qualifier
Arguments []string
}
FunctionDesc represents a function descriptor used in SQL statements
func (FunctionDesc) String ¶
func (f FunctionDesc) String() string
func (FunctionDesc) TokenLiteral ¶
func (f FunctionDesc) TokenLiteral() string
type HiveDistributionStyle ¶
type HiveDistributionStyle int
HiveDistributionStyle represents Hive-specific distribution styles
const ( HiveDistributionNone HiveDistributionStyle = iota HiveDistributionHash HiveDistributionRandom )
type HiveFormat ¶
type HiveFormat int
HiveFormat represents Hive-specific storage formats
const ( HiveFormatNone HiveFormat = iota HiveFormatORC HiveFormatParquet HiveFormatAvro )
type Ident ¶
type Ident struct {
Name string
}
Ident represents an identifier in SQL (table name, column name, etc.)
func (*Ident) TokenLiteral ¶
type Identifier ¶
Identifier represents a column or table name
func GetIdentifier ¶
func GetIdentifier() *Identifier
GetIdentifier gets an Identifier from the pool
func (Identifier) Children ¶
func (i Identifier) Children() []Node
func (Identifier) TokenLiteral ¶
func (i Identifier) TokenLiteral() string
type InExpression ¶
type InExpression struct {
Expr Expression
List []Expression
Not bool
}
InExpression represents expr IN (values)
func (InExpression) Children ¶
func (i InExpression) Children() []Node
func (InExpression) TokenLiteral ¶
func (i InExpression) TokenLiteral() string
type IndexColumn ¶
type IndexColumn struct {
Column string
Collate string
Direction string // ASC, DESC
NullsLast bool
}
IndexColumn represents a column in an index definition
func (IndexColumn) Children ¶
func (i IndexColumn) Children() []Node
func (IndexColumn) TokenLiteral ¶
func (i IndexColumn) TokenLiteral() string
type IndexOption ¶
type IndexOption struct {
Type IndexOptionType
Using *IndexType // Used for Using
Comment string // Used for Comment
}
IndexOption represents MySQL index options
func (*IndexOption) String ¶
func (opt *IndexOption) String() string
type IndexOptionType ¶
type IndexOptionType int
const ( UsingIndex IndexOptionType = iota CommentIndex )
type InputFormatClause ¶
InputFormatClause represents the format specification for input data
type Insert ¶
type Insert struct {
Table TableReference
Columns []Expression
Values [][]Expression
ReturningClause []Expression
}
Insert represents an INSERT statement
func (Insert) TokenLiteral ¶
type InsertStatement ¶
type InsertStatement struct {
With *WithClause
TableName string
Columns []Expression
Values []Expression
Query *SelectStatement // For INSERT ... SELECT
Returning []Expression
OnConflict *OnConflict
}
InsertStatement represents an INSERT SQL statement
func GetInsertStatement ¶
func GetInsertStatement() *InsertStatement
GetInsertStatement gets an InsertStatement from the pool
func (InsertStatement) Children ¶
func (i InsertStatement) Children() []Node
func (*InsertStatement) Span ¶
func (i *InsertStatement) Span() models.Span
Span returns the source location span for the InsertStatement
func (InsertStatement) TokenLiteral ¶
func (i InsertStatement) TokenLiteral() string
type Inspector ¶
Inspector represents an AST visitor that can be used to traverse an AST and invoke a custom function for each node.
type IntegerType ¶
Basic data types
func (*IntegerType) String ¶
func (t *IntegerType) String() string
type JoinClause ¶
type JoinClause struct {
Type string // INNER, LEFT, RIGHT, FULL
Left TableReference
Right TableReference
Condition Expression
}
JoinClause represents a JOIN clause in SQL
func (JoinClause) Children ¶
func (j JoinClause) Children() []Node
func (JoinClause) TokenLiteral ¶
func (j JoinClause) TokenLiteral() string
type ListExpression ¶
type ListExpression struct {
Values []Expression
}
ListExpression represents a list of expressions (1, 2, 3)
func (ListExpression) Children ¶
func (l ListExpression) Children() []Node
func (ListExpression) TokenLiteral ¶
func (l ListExpression) TokenLiteral() string
type LiteralValue ¶
type LiteralValue struct {
Value interface{}
Type string // INTEGER, FLOAT, STRING, BOOLEAN, NULL, etc.
}
LiteralValue represents a literal value in SQL
func GetLiteralValue ¶
func GetLiteralValue() *LiteralValue
GetLiteralValue gets a LiteralValue from the pool
func (LiteralValue) Children ¶
func (l LiteralValue) Children() []Node
func (LiteralValue) TokenLiteral ¶
func (l LiteralValue) TokenLiteral() string
type NormalizationForm ¶
type NormalizationForm int
NormalizationForm represents Unicode normalization forms
const ( NFC NormalizationForm = iota NFD NFKC NFKD )
func (NormalizationForm) String ¶
func (n NormalizationForm) String() string
type NullsDistinctOption ¶
type NullsDistinctOption int
NullsDistinctOption represents Postgres unique index nulls handling
const ( NullsDistinctNone NullsDistinctOption = iota NullsDistinct NullsNotDistinct )
func (NullsDistinctOption) String ¶
func (opt NullsDistinctOption) String() string
type NumericType ¶
type NumericType struct {
Info *ExactNumberInfo
}
Basic data types
func (*NumericType) String ¶
func (t *NumericType) String() string
type ObjectName ¶
type ObjectName struct {
Name string
}
ObjectName represents a qualified or unqualified object name
func (ObjectName) Children ¶
func (o ObjectName) Children() []Node
func (ObjectName) String ¶
func (o ObjectName) String() string
func (ObjectName) TokenLiteral ¶
func (o ObjectName) TokenLiteral() string
type OnConflict ¶
type OnConflict struct {
Target []Expression // Target columns
Constraint string // Optional constraint name
Action OnConflictAction
}
OnConflict represents ON CONFLICT DO UPDATE/NOTHING clause
func (OnConflict) Children ¶
func (o OnConflict) Children() []Node
func (OnConflict) TokenLiteral ¶
func (o OnConflict) TokenLiteral() string
type OnConflictAction ¶
type OnConflictAction struct {
DoNothing bool
DoUpdate []UpdateExpression
Where Expression
}
OnConflictAction represents DO UPDATE/NOTHING in ON CONFLICT clause
type OneOrManyWithParens ¶
type OneOrManyWithParens[T any] struct { Items []T }
OneOrManyWithParens represents a list of items enclosed in parentheses
func (*OneOrManyWithParens[T]) Children ¶
func (o *OneOrManyWithParens[T]) Children() []Node
func (*OneOrManyWithParens[T]) TokenLiteral ¶
func (o *OneOrManyWithParens[T]) TokenLiteral() string
type PartitionBy ¶
type PartitionBy struct {
Type string // RANGE, LIST, HASH
Columns []string
Boundary []Expression
}
PartitionBy represents a PARTITION BY clause
func (PartitionBy) Children ¶
func (p PartitionBy) Children() []Node
func (PartitionBy) TokenLiteral ¶
func (p PartitionBy) TokenLiteral() string
type PositionExpression ¶
type PositionExpression struct {
Substr Expression
Str Expression
}
PositionExpression represents POSITION(substr IN str)
func (PositionExpression) Children ¶
func (p PositionExpression) Children() []Node
func (PositionExpression) TokenLiteral ¶
func (p PositionExpression) TokenLiteral() string
type Query ¶
type Query struct {
Text string
}
Query represents a SQL query
func (*Query) TokenLiteral ¶
type ReferenceDefinition ¶
type ReferenceDefinition struct {
Table string
Columns []string
OnDelete string
OnUpdate string
Match string
}
ReferenceDefinition represents a REFERENCES clause
func (ReferenceDefinition) Children ¶
func (r ReferenceDefinition) Children() []Node
func (*ReferenceDefinition) String ¶
func (r *ReferenceDefinition) String() string
String returns a string representation of a ReferenceDefinition
func (ReferenceDefinition) TokenLiteral ¶
func (r ReferenceDefinition) TokenLiteral() string
type RoleOption ¶
type RoleOption struct {
Name string
Type RoleOptionType
Value interface{} // Can be bool or Expression depending on Type
}
RoleOption represents an option in ROLE statement
func (*RoleOption) String ¶
func (opt *RoleOption) String() string
type RoleOptionType ¶
type RoleOptionType int
const ( BypassRLS RoleOptionType = iota ConnectionLimit CreateDB CreateRole Inherit Login Password Replication SuperUser ValidUntil )
type RowAccessPolicy ¶
RowAccessPolicy represents row-level access policy
func (*RowAccessPolicy) Children ¶
func (r *RowAccessPolicy) Children() []Node
func (*RowAccessPolicy) TokenLiteral ¶
func (r *RowAccessPolicy) TokenLiteral() string
type Select ¶
type Select struct {
Distinct bool
Columns []Expression
From []TableReference
Where Expression
GroupBy []Expression
Having Expression
OrderBy []Expression
Limit *int64
Offset *int64
}
Select represents a SELECT statement
func (Select) TokenLiteral ¶
type SelectStatement ¶
type SelectStatement struct {
With *WithClause
Distinct bool
Columns []Expression
From []TableReference
TableName string // Added for pool operations
Joins []JoinClause
Where Expression
GroupBy []Expression
Having Expression
Windows []WindowSpec
OrderBy []Expression
Limit *int
Offset *int
}
SelectStatement represents a SELECT SQL statement
func GetSelectStatement ¶
func GetSelectStatement() *SelectStatement
GetSelectStatement gets a SelectStatement from the pool
func (SelectStatement) Children ¶
func (s SelectStatement) Children() []Node
func (*SelectStatement) Span ¶
func (s *SelectStatement) Span() models.Span
Span returns the source location span for the SelectStatement
func (SelectStatement) TokenLiteral ¶
func (s SelectStatement) TokenLiteral() string
type SetOperation ¶
type SetOperation struct {
Left Statement
Operator string // UNION, EXCEPT, INTERSECT
Right Statement
All bool // UNION ALL vs UNION
}
SetOperation represents set operations (UNION, EXCEPT, INTERSECT) between two statements. It supports the ALL modifier (e.g., UNION ALL) and proper left-associative parsing. Phase 2 Complete: Full parser support with left-associative precedence.
func (SetOperation) Children ¶
func (s SetOperation) Children() []Node
func (SetOperation) TokenLiteral ¶
func (s SetOperation) TokenLiteral() string
type Setting ¶
type Setting struct {
Column *Ident
Value Expression
}
Setting represents a SET clause in an UPDATE statement
type Spanned ¶
type Spanned interface {
// Span returns the source location span for this node
Span() models.Span
}
Spanned represents an AST node that has source location information
type SpannedNode ¶
type SpannedNode struct {
// contains filtered or unexported fields
}
SpannedNode represents a basic AST node with source location information
func (*SpannedNode) SetSpan ¶
func (n *SpannedNode) SetSpan(span models.Span)
SetSpan sets the source location span for this node
func (*SpannedNode) Span ¶
func (n *SpannedNode) Span() models.Span
Span returns the source location span for this node
type StageLoadSelectItem ¶
StageLoadSelectItem represents a select item in stage loading operations
func (*StageLoadSelectItem) String ¶
func (s *StageLoadSelectItem) String() string
String implements the Stringer interface for StageLoadSelectItem
type StageParamsObject ¶
type StageParamsObject struct {
URL *string
Encryption DataLoadingOptions
Endpoint *string
StorageIntegration *string
Credentials DataLoadingOptions
}
StageParamsObject represents parameters for stage operations in data loading
func (*StageParamsObject) String ¶
func (s *StageParamsObject) String() string
String implements the Stringer interface for StageParamsObject
type Statement ¶
type Statement interface {
Node
// contains filtered or unexported methods
}
Statement represents a SQL statement
type StatementImpl ¶
type StatementImpl struct {
Variant StatementVariant
}
StatementImpl represents a concrete implementation of a SQL statement
func (*StatementImpl) Children ¶
func (s *StatementImpl) Children() []Node
func (*StatementImpl) TokenLiteral ¶
func (s *StatementImpl) TokenLiteral() string
type StatementVariant ¶
type StatementVariant interface {
Node
// contains filtered or unexported methods
}
StatementVariant represents a specific type of SQL statement
type StorageSerializationPolicy ¶
type StorageSerializationPolicy int
StorageSerializationPolicy represents storage serialization policy
const ( StorageSerializationNone StorageSerializationPolicy = iota StorageSerializationJSON StorageSerializationAvro )
type StructBracketKind ¶
type StructBracketKind int
StructBracketKind represents the type of brackets used in STRUCT type
const ( ParenthesesBrackets StructBracketKind = iota AngleBracketsBrackets )
type StructField ¶
StructField represents a field in a struct type
func GetStructFields ¶
func GetStructFields(t reflect.Type) []StructField
GetStructFields returns the fields of a struct type
type SubstringExpression ¶
type SubstringExpression struct {
Str Expression
Start Expression
Length Expression
}
SubstringExpression represents SUBSTRING(str FROM start [FOR length])
func (SubstringExpression) Children ¶
func (s SubstringExpression) Children() []Node
func (SubstringExpression) TokenLiteral ¶
func (s SubstringExpression) TokenLiteral() string
type Table ¶
type Table struct {
Name string
Columns []*ColumnDef
Constraints []*TableConstraint
Options map[string]string
}
Table represents a table definition
type TableConstraint ¶
type TableConstraint struct {
Name string
Type string // PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK
Columns []string
References *ReferenceDefinition
Check Expression
}
TableConstraint represents a table constraint
func (TableConstraint) Children ¶
func (t TableConstraint) Children() []Node
func (TableConstraint) TokenLiteral ¶
func (t TableConstraint) TokenLiteral() string
type TableOption ¶
TableOption represents table options like ENGINE, CHARSET, etc.
func (TableOption) Children ¶
func (t TableOption) Children() []Node
func (TableOption) TokenLiteral ¶
func (t TableOption) TokenLiteral() string
type TableReference ¶
TableReference represents a table in FROM clause
func (TableReference) Children ¶
func (t TableReference) Children() []Node
func (TableReference) TokenLiteral ¶
func (t TableReference) TokenLiteral() string
type TimestampType ¶
type TimestampType struct {
Precision *uint64
Timezone TimezoneInfo
}
Basic data types
func (*TimestampType) String ¶
func (t *TimestampType) String() string
type TimezoneInfo ¶
type TimezoneInfo int
TimezoneInfo represents timezone information for temporal types
const ( NoTimezone TimezoneInfo = iota WithTimeZone WithoutTimeZone Tz )
func (TimezoneInfo) String ¶
func (t TimezoneInfo) String() string
type TokenWithSpan ¶
TokenWithSpan represents a token with its source location span
func NewTokenWithSpan ¶
func NewTokenWithSpan(token Token, span Span) TokenWithSpan
NewTokenWithSpan creates a new TokenWithSpan
func NewTokenWithSpanEOF ¶
func NewTokenWithSpanEOF() TokenWithSpan
NewTokenWithSpanEOF creates a new EOF TokenWithSpan
func (TokenWithSpan) GoString ¶
func (t TokenWithSpan) GoString() string
GoString implements fmt.GoStringer
type TriggerEvent ¶
type TriggerEvent struct {
Type TriggerEventType
Columns []Identifier // Only used for UPDATE events
}
TriggerEvent describes trigger events
func (TriggerEvent) Children ¶
func (t TriggerEvent) Children() []Node
func (TriggerEvent) String ¶
func (t TriggerEvent) String() string
func (TriggerEvent) TokenLiteral ¶
func (t TriggerEvent) TokenLiteral() string
type TriggerEventType ¶
type TriggerEventType int
const ( TriggerEventInsert TriggerEventType = iota TriggerEventUpdate TriggerEventDelete TriggerEventTruncate )
type TriggerExecBody ¶
type TriggerExecBody struct {
ExecType TriggerExecBodyType
FuncDesc FunctionDesc
}
TriggerExecBody represents the execution body of a trigger
func (TriggerExecBody) Children ¶
func (t TriggerExecBody) Children() []Node
func (TriggerExecBody) String ¶
func (t TriggerExecBody) String() string
func (TriggerExecBody) TokenLiteral ¶
func (t TriggerExecBody) TokenLiteral() string
type TriggerExecBodyType ¶
type TriggerExecBodyType int
TriggerExecBodyType represents types of trigger body execution
const ( TriggerExecBodyFunction TriggerExecBodyType = iota TriggerExecBodyProcedure )
func (TriggerExecBodyType) String ¶
func (t TriggerExecBodyType) String() string
type TriggerObject ¶
type TriggerObject int
TriggerObject specifies whether the trigger function should be fired once for every row affected by the trigger event, or just once per SQL statement.
const ( TriggerObjectRow TriggerObject = iota TriggerObjectStatement )
func (TriggerObject) Children ¶
func (t TriggerObject) Children() []Node
Implement Node interface for trigger types
func (TriggerObject) String ¶
func (t TriggerObject) String() string
func (TriggerObject) TokenLiteral ¶
func (t TriggerObject) TokenLiteral() string
type TriggerPeriod ¶
type TriggerPeriod int
TriggerPeriod represents when the trigger should be executed
const ( TriggerPeriodAfter TriggerPeriod = iota TriggerPeriodBefore TriggerPeriodInsteadOf )
func (TriggerPeriod) Children ¶
func (t TriggerPeriod) Children() []Node
func (TriggerPeriod) String ¶
func (t TriggerPeriod) String() string
func (TriggerPeriod) TokenLiteral ¶
func (t TriggerPeriod) TokenLiteral() string
type TriggerReferencing ¶
type TriggerReferencing struct {
ReferType TriggerReferencingType
IsAs bool
TransitionRelationName ObjectName
}
TriggerReferencing represents a declaration of relation names that provide access to the transition relations of the triggering statement
func (TriggerReferencing) Children ¶
func (t TriggerReferencing) Children() []Node
func (TriggerReferencing) String ¶
func (t TriggerReferencing) String() string
func (TriggerReferencing) TokenLiteral ¶
func (t TriggerReferencing) TokenLiteral() string
type TriggerReferencingType ¶
type TriggerReferencingType int
TriggerReferencingType indicates whether the following relation name is for the before-image transition relation or the after-image transition relation
const ( TriggerReferencingOldTable TriggerReferencingType = iota TriggerReferencingNewTable )
func (TriggerReferencingType) String ¶
func (t TriggerReferencingType) String() string
type TrimWhereField ¶
type TrimWhereField int
TrimWhereField represents the type of trimming operation
const ( Both TrimWhereField = iota Leading Trailing )
func (TrimWhereField) String ¶
func (t TrimWhereField) String() string
type UnaryExpression ¶
type UnaryExpression struct {
Operator UnaryOperator
Expr Expression
}
UnaryExpression represents operations like NOT expr
func (UnaryExpression) Children ¶
func (u UnaryExpression) Children() []Node
func (*UnaryExpression) Span ¶
func (e *UnaryExpression) Span() models.Span
func (*UnaryExpression) TokenLiteral ¶
func (u *UnaryExpression) TokenLiteral() string
type UnaryOperator ¶
type UnaryOperator int
UnaryOperator represents unary operators in SQL expressions
const ( // Plus represents unary plus operator, e.g. +9 Plus UnaryOperator = iota // Minus represents unary minus operator, e.g. -9 Minus // Not represents logical NOT operator, e.g. NOT(true) Not // PGBitwiseNot represents PostgreSQL bitwise NOT operator, e.g. ~9 PGBitwiseNot // PGSquareRoot represents PostgreSQL square root operator, e.g. |/9 PGSquareRoot // PGCubeRoot represents PostgreSQL cube root operator, e.g. ||/27 PGCubeRoot // PGPostfixFactorial represents PostgreSQL postfix factorial operator, e.g. 9! PGPostfixFactorial // PGPrefixFactorial represents PostgreSQL prefix factorial operator, e.g. !!9 PGPrefixFactorial // PGAbs represents PostgreSQL absolute value operator, e.g. @ -9 PGAbs // BangNot represents Hive-specific logical NOT operator, e.g. ! false BangNot )
func (UnaryOperator) String ¶
func (op UnaryOperator) String() string
String returns the string representation of the unary operator
type Update ¶
type Update struct {
Table TableReference
Updates []UpdateExpression
Where Expression
ReturningClause []Expression
}
Update represents an UPDATE statement
func (Update) TokenLiteral ¶
type UpdateExpression ¶
type UpdateExpression struct {
Column Expression
Value Expression
}
UpdateExpression represents a column=value expression in UPDATE
func GetUpdateExpression ¶
func GetUpdateExpression() *UpdateExpression
GetUpdateExpression gets an UpdateExpression from the pool
func (UpdateExpression) Children ¶
func (u UpdateExpression) Children() []Node
func (UpdateExpression) TokenLiteral ¶
func (u UpdateExpression) TokenLiteral() string
type UpdateStatement ¶
type UpdateStatement struct {
With *WithClause
TableName string
Alias string
Updates []UpdateExpression // Keep for backward compatibility
Assignments []UpdateExpression // New field for consistency with span.go
From []TableReference
Where Expression
Returning []Expression
}
UpdateStatement represents an UPDATE SQL statement
func GetUpdateStatement ¶
func GetUpdateStatement() *UpdateStatement
GetUpdateStatement gets an UpdateStatement from the pool
func (UpdateStatement) Children ¶
func (u UpdateStatement) Children() []Node
func (*UpdateStatement) Span ¶
func (u *UpdateStatement) Span() models.Span
Span returns the source location span for the UpdateStatement
func (UpdateStatement) TokenLiteral ¶
func (u UpdateStatement) TokenLiteral() string
type UpsertClause ¶
type UpsertClause struct {
Updates []UpdateExpression
}
UpsertClause represents INSERT ... ON DUPLICATE KEY UPDATE
func (UpsertClause) Children ¶
func (u UpsertClause) Children() []Node
func (UpsertClause) TokenLiteral ¶
func (u UpsertClause) TokenLiteral() string
type Value ¶
type Value struct {
Type ValueType
Value interface{}
}
Value represents primitive SQL values such as number and string
func (Value) TokenLiteral ¶
type ValueType ¶
type ValueType int
ValueType represents the type of a SQL value
const ( NumberValue ValueType = iota SingleQuotedStringValue DollarQuotedStringValue TripleSingleQuotedStringValue TripleDoubleQuotedStringValue EscapedStringLiteralValue UnicodeStringLiteralValue SingleQuotedByteStringLiteralValue DoubleQuotedByteStringLiteralValue TripleSingleQuotedByteStringLiteralValue TripleDoubleQuotedByteStringLiteralValue SingleQuotedRawStringLiteralValue DoubleQuotedRawStringLiteralValue TripleSingleQuotedRawStringLiteralValue TripleDoubleQuotedRawStringLiteralValue NationalStringLiteralValue HexStringLiteralValue DoubleQuotedStringValue BooleanValue NullValue PlaceholderValue )
type Values ¶
type Values struct {
Rows [][]Expression
}
Values represents VALUES clause
func (Values) TokenLiteral ¶
type VarcharType ¶
type VarcharType struct {
Length *CharacterLength
}
Basic data types
func (*VarcharType) String ¶
func (t *VarcharType) String() string
type VisitFunc ¶
VisitFunc is a function type that can be used to implement custom visitors without creating a new type.
type Visitor ¶
Visitor defines an interface for traversing the AST. The Visit method is called for each node encountered by Walk. If the result visitor w is not nil, Walk visits each of the children of node with the visitor w, followed by a call of w.Visit(nil).
type WhenClause ¶
type WhenClause struct {
Condition Expression
Result Expression
}
WhenClause represents WHEN ... THEN ... in CASE expression
func (WhenClause) Children ¶
func (w WhenClause) Children() []Node
func (WhenClause) TokenLiteral ¶
func (w WhenClause) TokenLiteral() string
type WindowFrame ¶
type WindowFrame struct {
Type string // ROWS, RANGE
Start WindowFrameBound
End *WindowFrameBound
}
WindowFrame represents window frame clause
func (WindowFrame) Children ¶
func (w WindowFrame) Children() []Node
func (WindowFrame) TokenLiteral ¶
func (w WindowFrame) TokenLiteral() string
type WindowFrameBound ¶
type WindowFrameBound struct {
Type string // CURRENT ROW, UNBOUNDED PRECEDING, etc.
Value Expression
}
WindowFrameBound represents window frame bound
type WindowSpec ¶
type WindowSpec struct {
Name string
PartitionBy []Expression
OrderBy []Expression
FrameClause *WindowFrame
}
WindowSpec represents a window specification
func (WindowSpec) Children ¶
func (w WindowSpec) Children() []Node
func (WindowSpec) TokenLiteral ¶
func (w WindowSpec) TokenLiteral() string
type WithClause ¶
type WithClause struct {
Recursive bool
CTEs []*CommonTableExpr
}
WithClause represents a WITH clause in a SQL statement. It supports both simple and recursive Common Table Expressions (CTEs). Phase 2 Complete: Full parser integration with all statement types.
func (WithClause) Children ¶
func (w WithClause) Children() []Node
func (WithClause) TokenLiteral ¶
func (w WithClause) TokenLiteral() string
type WrappedCollection ¶
WrappedCollection represents a collection of items with optional wrapper
func (*WrappedCollection[T]) Children ¶
func (w *WrappedCollection[T]) Children() []Node
func (*WrappedCollection[T]) TokenLiteral ¶
func (w *WrappedCollection[T]) TokenLiteral() string