Documentation
¶
Overview ¶
Package sql provides SQL lexing and parsing for CommitDB.
The package includes a lexer that tokenizes SQL strings and a parser that produces abstract syntax trees for SQL statements.
Lexer Usage ¶
lexer := sql.NewLexer("SELECT * FROM users")
for {
token := lexer.NextToken()
if token.Type == sql.EOF {
break
}
fmt.Printf("Token: %s = %s\n", token.Type, token.Value)
}
Parser Usage ¶
parser := sql.NewParser("SELECT * FROM mydb.users WHERE id = 1")
statement, err := parser.Parse()
if err != nil {
log.Fatal(err)
}
Supported Statements ¶
The parser supports the following statement types:
- SelectStatement
- InsertStatement
- UpdateStatement
- DeleteStatement
- CreateTableStatement
- DropTableStatement
- CreateDatabaseStatement
- DropDatabaseStatement
- CreateIndexStatement
- DropIndexStatement
- AlterTableStatement
- BeginStatement, CommitStatement, RollbackStatement
- DescribeStatement
- ShowDatabasesStatement, ShowTablesStatement, ShowIndexesStatement
Index ¶
- type AbortMergeStatement
- type AddRemoteStatement
- type AggregateExpr
- type AlterTableStatement
- type AuthConfig
- type BeginStatement
- type CheckoutStatement
- type CommitMergeStatement
- type CommitStatement
- type CopyStatement
- type CreateBranchStatement
- type CreateDatabaseStatement
- type CreateIndexStatement
- type CreateShareStatement
- type CreateTableStatement
- type CreateViewStatement
- type DeleteStatement
- type DescribeStatement
- type DropDatabaseStatement
- type DropIndexStatement
- type DropRemoteStatement
- type DropShareStatement
- type DropTableStatement
- type DropViewStatement
- type FetchStatement
- type FunctionExpr
- type InsertStatement
- type JoinClause
- type Lexer
- type LogicalOperator
- type MergeStatement
- type OrderByClause
- type Parser
- type PullStatement
- type PushStatement
- type RefreshViewStatement
- type ResolveConflictStatement
- type RollbackStatement
- type SelectStatement
- type SetClause
- type ShowBranchesStatement
- type ShowDatabasesStatement
- type ShowIndexesStatement
- type ShowMergeConflictsStatement
- type ShowRemotesStatement
- type ShowSharesStatement
- type ShowTablesStatement
- type ShowTransactionsStatement
- type ShowViewsStatement
- type Statement
- func ParseAbortMerge(parser *Parser) (Statement, error)
- func ParseAddRemote(parser *Parser) (Statement, error)
- func ParseAlter(parser *Parser) (Statement, error)
- func ParseCheckout(parser *Parser) (Statement, error)
- func ParseCopy(parser *Parser) (Statement, error)
- func ParseCreate(parser *Parser) (Statement, error)
- func ParseCreateBranch(parser *Parser) (Statement, error)
- func ParseCreateDatabase(parser *Parser) (Statement, error)
- func ParseCreateIndex(parser *Parser, unique bool) (Statement, error)
- func ParseCreateShare(parser *Parser) (Statement, error)
- func ParseCreateTable(parser *Parser) (Statement, error)
- func ParseCreateView(parser *Parser, materialized bool) (Statement, error)
- func ParseDelete(parser *Parser) (Statement, error)
- func ParseDescribe(parser *Parser) (Statement, error)
- func ParseDrop(parser *Parser) (Statement, error)
- func ParseDropDatabase(parser *Parser) (Statement, error)
- func ParseDropIndex(parser *Parser) (Statement, error)
- func ParseDropRemote(parser *Parser) (Statement, error)
- func ParseDropShare(parser *Parser) (Statement, error)
- func ParseDropTable(parser *Parser) (Statement, error)
- func ParseDropView(parser *Parser) (Statement, error)
- func ParseFetch(parser *Parser) (Statement, error)
- func ParseInsert(parser *Parser) (Statement, error)
- func ParseMerge(parser *Parser) (Statement, error)
- func ParsePull(parser *Parser) (Statement, error)
- func ParsePush(parser *Parser) (Statement, error)
- func ParseRefreshView(parser *Parser) (Statement, error)
- func ParseResolveConflict(parser *Parser) (Statement, error)
- func ParseSelect(parser *Parser) (Statement, error)
- func ParseShow(parser *Parser) (Statement, error)
- func ParseSyncShare(parser *Parser) (Statement, error)
- func ParseUpdate(parser *Parser) (Statement, error)
- type StatementType
- type SyncShareStatement
- type Token
- type TokenType
- type UpdateStatement
- type WhereClause
- type WhereCondition
- type WhereOperator
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AbortMergeStatement ¶
type AbortMergeStatement struct{}
func (AbortMergeStatement) Type ¶
func (s AbortMergeStatement) Type() StatementType
type AddRemoteStatement ¶
func (AddRemoteStatement) Type ¶
func (s AddRemoteStatement) Type() StatementType
type AggregateExpr ¶
type AlterTableStatement ¶
type AlterTableStatement struct {
Database string
Table string
Action string // ADD, DROP, MODIFY, RENAME
ColumnName string
NewColumnName string // for RENAME
ColumnType string
}
func (AlterTableStatement) Type ¶
func (s AlterTableStatement) Type() StatementType
type AuthConfig ¶
type AuthConfig struct {
Token string // Token-based authentication
SSHKeyPath string // Path to SSH private key
Passphrase string // Passphrase for SSH key
Username string // Username for basic auth
Password string // Password for basic auth
}
AuthConfig represents authentication configuration for remote operations
type BeginStatement ¶
type BeginStatement struct{}
func (BeginStatement) Type ¶
func (s BeginStatement) Type() StatementType
type CheckoutStatement ¶
type CheckoutStatement struct {
Branch string
}
func (CheckoutStatement) Type ¶
func (s CheckoutStatement) Type() StatementType
type CommitMergeStatement ¶
type CommitMergeStatement struct{}
func (CommitMergeStatement) Type ¶
func (s CommitMergeStatement) Type() StatementType
type CommitStatement ¶
type CommitStatement struct{}
func (CommitStatement) Type ¶
func (s CommitStatement) Type() StatementType
type CopyStatement ¶
type CopyStatement struct {
Direction string // "INTO_TABLE" or "INTO_FILE"
Database string
Table string
FilePath string
Header bool // Include/expect header row
Delimiter string // Column delimiter (default ",")
// S3 configuration (optional)
S3AccessKey string
S3SecretKey string
S3Region string
}
CopyStatement for bulk data import/export
func (CopyStatement) Type ¶
func (s CopyStatement) Type() StatementType
type CreateBranchStatement ¶
type CreateBranchStatement struct {
Name string
FromTxnID string // Optional: create from specific transaction
}
CreateBranchStatement represents a CREATE BRANCH statement.
func (CreateBranchStatement) Type ¶
func (s CreateBranchStatement) Type() StatementType
type CreateDatabaseStatement ¶
type CreateDatabaseStatement struct {
Database string
}
func (CreateDatabaseStatement) Type ¶
func (s CreateDatabaseStatement) Type() StatementType
type CreateIndexStatement ¶
type CreateIndexStatement struct {
Name string
Database string
Table string
Column string
Unique bool
}
func (CreateIndexStatement) Type ¶
func (s CreateIndexStatement) Type() StatementType
type CreateShareStatement ¶
type CreateShareStatement struct {
}
CreateShareStatement represents a CREATE SHARE statement.
func (CreateShareStatement) Type ¶
func (s CreateShareStatement) Type() StatementType
type CreateTableStatement ¶
func (CreateTableStatement) Type ¶
func (s CreateTableStatement) Type() StatementType
type CreateViewStatement ¶
type CreateViewStatement struct {
Database string
ViewName string
SelectQuery string // Raw SQL for the view definition
Materialized bool
}
CreateViewStatement represents a CREATE VIEW statement.
func (CreateViewStatement) Type ¶
func (s CreateViewStatement) Type() StatementType
type DeleteStatement ¶
type DeleteStatement struct {
Database string
Table string
Where WhereClause
}
func (DeleteStatement) Type ¶
func (s DeleteStatement) Type() StatementType
type DescribeStatement ¶
func (DescribeStatement) Type ¶
func (s DescribeStatement) Type() StatementType
type DropDatabaseStatement ¶
func (DropDatabaseStatement) Type ¶
func (s DropDatabaseStatement) Type() StatementType
type DropIndexStatement ¶
func (DropIndexStatement) Type ¶
func (s DropIndexStatement) Type() StatementType
type DropRemoteStatement ¶
type DropRemoteStatement struct {
Name string
}
func (DropRemoteStatement) Type ¶
func (s DropRemoteStatement) Type() StatementType
type DropShareStatement ¶
type DropShareStatement struct {
}
func (DropShareStatement) Type ¶
func (s DropShareStatement) Type() StatementType
type DropTableStatement ¶
func (DropTableStatement) Type ¶
func (s DropTableStatement) Type() StatementType
type DropViewStatement ¶
func (DropViewStatement) Type ¶
func (s DropViewStatement) Type() StatementType
type FetchStatement ¶
type FetchStatement struct {
Remote string
Auth *AuthConfig
}
func (FetchStatement) Type ¶
func (s FetchStatement) Type() StatementType
type FunctionExpr ¶
type FunctionExpr struct {
Function string // UPPER, LOWER, CONCAT, SUBSTRING, TRIM, LENGTH, REPLACE
Args []string // Arguments (column names or literals)
Alias string // Optional AS alias
}
FunctionExpr represents a function call like UPPER(column), CONCAT(a, b)
type InsertStatement ¶
type InsertStatement struct {
Database string
Table string
Columns []string
ValueRows [][]string // Multiple rows for bulk insert: VALUES (v1), (v2), ...
}
func (InsertStatement) Type ¶
func (s InsertStatement) Type() StatementType
type JoinClause ¶
type LogicalOperator ¶
type LogicalOperator int
const ( LogicalAnd LogicalOperator = iota LogicalOr )
type MergeStatement ¶
func (MergeStatement) Type ¶
func (s MergeStatement) Type() StatementType
type OrderByClause ¶
type PullStatement ¶
type PullStatement struct {
Remote string
Branch string
Auth *AuthConfig
}
func (PullStatement) Type ¶
func (s PullStatement) Type() StatementType
type PushStatement ¶
type PushStatement struct {
Remote string
Branch string
Auth *AuthConfig
}
func (PushStatement) Type ¶
func (s PushStatement) Type() StatementType
type RefreshViewStatement ¶
func (RefreshViewStatement) Type ¶
func (s RefreshViewStatement) Type() StatementType
type ResolveConflictStatement ¶
type ResolveConflictStatement struct {
Database string
Table string
Key string
Resolution string // "HEAD", "SOURCE", or a literal value
}
func (ResolveConflictStatement) Type ¶
func (s ResolveConflictStatement) Type() StatementType
type RollbackStatement ¶
type RollbackStatement struct{}
func (RollbackStatement) Type ¶
func (s RollbackStatement) Type() StatementType
type SelectStatement ¶
type SelectStatement struct {
Database string
Table string
TableAlias string
Columns []string
Aggregates []AggregateExpr
Functions []FunctionExpr // String functions like UPPER, LOWER, etc.
Joins []JoinClause
Distinct bool
CountAll bool
Where WhereClause
GroupBy []string
Having WhereClause
OrderBy []OrderByClause
Limit int
Offset int
AsOf string // Transaction ID for time-travel queries
}
func (SelectStatement) Type ¶
func (s SelectStatement) Type() StatementType
type ShowBranchesStatement ¶
type ShowBranchesStatement struct{}
func (ShowBranchesStatement) Type ¶
func (s ShowBranchesStatement) Type() StatementType
type ShowDatabasesStatement ¶
type ShowDatabasesStatement struct {
}
func (ShowDatabasesStatement) Type ¶
func (s ShowDatabasesStatement) Type() StatementType
type ShowIndexesStatement ¶
func (ShowIndexesStatement) Type ¶
func (s ShowIndexesStatement) Type() StatementType
type ShowMergeConflictsStatement ¶
type ShowMergeConflictsStatement struct{}
func (ShowMergeConflictsStatement) Type ¶
func (s ShowMergeConflictsStatement) Type() StatementType
type ShowRemotesStatement ¶
type ShowRemotesStatement struct{}
func (ShowRemotesStatement) Type ¶
func (s ShowRemotesStatement) Type() StatementType
type ShowSharesStatement ¶
type ShowSharesStatement struct{}
func (ShowSharesStatement) Type ¶
func (s ShowSharesStatement) Type() StatementType
type ShowTablesStatement ¶
type ShowTablesStatement struct {
Database string
}
func (ShowTablesStatement) Type ¶
func (s ShowTablesStatement) Type() StatementType
type ShowTransactionsStatement ¶
type ShowTransactionsStatement struct {
Limit int
}
func (ShowTransactionsStatement) Type ¶
func (s ShowTransactionsStatement) Type() StatementType
type ShowViewsStatement ¶
type ShowViewsStatement struct {
Database string
}
func (ShowViewsStatement) Type ¶
func (s ShowViewsStatement) Type() StatementType
type Statement ¶
type Statement interface {
Type() StatementType
}
func ParseAbortMerge ¶
ParseAbortMerge parses ABORT MERGE statements
func ParseAddRemote ¶
ParseAddRemote parses CREATE REMOTE <name> <url> statements
func ParseAlter ¶
ParseAlter parses ALTER TABLE statements
func ParseCheckout ¶
ParseCheckout parses CHECKOUT statements Syntax: CHECKOUT branch_name
func ParseCopy ¶
ParseCopy parses COPY INTO commands for bulk data import/export COPY INTO table FROM 'file.csv' [WITH (HEADER = TRUE, DELIMITER = ',')] COPY INTO 'file.csv' FROM table [WITH (HEADER = TRUE)]
func ParseCreate ¶
func ParseCreateBranch ¶
ParseCreateBranch parses CREATE BRANCH statements Syntax: CREATE BRANCH name [FROM 'transaction_id']
func ParseCreateDatabase ¶
func ParseCreateIndex ¶
ParseCreateIndex parses: CREATE [UNIQUE] INDEX name ON database.table(column)
func ParseCreateShare ¶
ParseCreateShare parses CREATE SHARE <name> FROM '<url>' [WITH TOKEN '<token>']
func ParseCreateTable ¶
func ParseCreateView ¶
ParseCreateView parses CREATE [MATERIALIZED] VIEW database.name AS SELECT ...
func ParseDelete ¶
func ParseDescribe ¶
ParseDescribe parses DESCRIBE table statements
func ParseDropDatabase ¶
func ParseDropIndex ¶
ParseDropIndex parses: DROP INDEX name ON database.table
func ParseDropRemote ¶
ParseDropRemote parses DROP REMOTE <name> statements
func ParseDropShare ¶
ParseDropShare parses DROP SHARE <name>
func ParseDropTable ¶
func ParseDropView ¶
ParseDropView parses DROP [MATERIALIZED] VIEW [IF EXISTS] database.name
func ParseFetch ¶
ParseFetch parses FETCH [FROM <remote>] [WITH TOKEN 'xxx' | WITH SSH KEY 'path' [PASSPHRASE 'xxx']]
func ParseInsert ¶
func ParseMerge ¶
ParseMerge parses MERGE statements Syntax: MERGE branch_name [WITH MANUAL RESOLUTION]
func ParsePull ¶
ParsePull parses PULL [FROM <remote>] [BRANCH <branch>] [WITH TOKEN 'xxx' | WITH SSH KEY 'path' [PASSPHRASE 'xxx']]
func ParsePush ¶
ParsePush parses PUSH [TO <remote>] [BRANCH <branch>] [WITH TOKEN 'xxx' | WITH SSH KEY 'path' [PASSPHRASE 'xxx']]
func ParseRefreshView ¶
ParseRefreshView parses REFRESH VIEW database.name
func ParseResolveConflict ¶
ParseResolveConflict parses RESOLVE CONFLICT statements Syntax: RESOLVE CONFLICT db.table.key USING HEAD|SOURCE|'value'
func ParseSelect ¶
func ParseSyncShare ¶
ParseSyncShare parses SYNC SHARE <name> [WITH TOKEN '<token>']
func ParseUpdate ¶
type StatementType ¶
type StatementType int
const ( SelectStatementType StatementType = iota InsertStatementType UpdateStatementType DeleteStatementType CreateTableStatementType DropTableStatementType CreateDatabaseStatementType DropDatabaseStatementType CreateIndexStatementType DropIndexStatementType AlterTableStatementType BeginStatementType CommitStatementType RollbackStatementType DescribeStatementType ShowDatabasesStatementType ShowTablesStatementType ShowIndexesStatementType CreateBranchStatementType CheckoutStatementType MergeStatementType ShowBranchesStatementType ShowTransactionsStatementType ShowMergeConflictsStatementType ResolveConflictStatementType CommitMergeStatementType AbortMergeStatementType AddRemoteStatementType ShowRemotesStatementType DropRemoteStatementType PushStatementType PullStatementType FetchStatementType CopyStatementType CreateViewStatementType DropViewStatementType ShowViewsStatementType RefreshViewStatementType )
type SyncShareStatement ¶
type SyncShareStatement struct {
}
func (SyncShareStatement) Type ¶
func (s SyncShareStatement) Type() StatementType
type TokenType ¶
type TokenType int
const ( Identifier TokenType = iota DatabaseIdentifier DatabasesIdentifier TableIdentifier TablesIdentifier IndexIdentifier Show In On Wildcard String Int Float Bool PrimaryKey Unique Comma Quote ParenOpen ParenClose Equals NotEquals LessThan GreaterThan LessThanOrEqual GreaterThanOrEqual And Or Not Is Null Like True False Select From Where Limit Offset Order By Asc Desc Count Sum Avg Min Max Distinct Group Having Create Drop Alter Add Modify Column Insert Update Delete Set Into Values Begin Commit Rollback Join Inner Left Right Outer Describe As Branch Branches Checkout Merge Manual Resolution With Resolve Conflict Conflicts Using Abort Head Source Remote Remotes Push Pull Fetch TokenKeyword Key Passphrase SSH To Rename Upper Lower Concat Substring Trim Length Replace LeftFunc RightFunc Now DateAdd DateSub DateDiff DateFunc Year Month Day Hour Minute Second DateFormat JSONExtract JSONSet JSONRemove JSONContains JSONKeys JSONLength JSONType Copy Header Delimiter AwsKey AwsSecret AwsRegion Transactions Sync View Views Materialized Refresh If Exists Of EOF Unknown )
type UpdateStatement ¶
type UpdateStatement struct {
Database string
Table string
Updates []SetClause
Where WhereClause
}
func (UpdateStatement) Type ¶
func (s UpdateStatement) Type() StatementType
type WhereClause ¶
type WhereClause struct {
Conditions []WhereCondition
LogicalOps []LogicalOperator // AND/OR between conditions
}
func ParseWhere ¶
func ParseWhere(parser *Parser) (WhereClause, error)
type WhereCondition ¶
type WhereCondition struct {
Left string
Operator WhereOperator
Right string
InValues []string // for IN operator
Negated bool // for NOT
}
type WhereOperator ¶
type WhereOperator int
const ( EqualsOperator WhereOperator = iota NotEqualsOperator LessThanOperator GreaterThanOperator LessThanOrEqualOperator GreaterThanOrEqualOperator LikeOperator IsNullOperator IsNotNullOperator InOperator )