From 44ad0dbbc7d9a926b0b13667b5aed903626daef0 Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Wed, 20 May 2020 15:28:10 -0700 Subject: [PATCH] sqlite: Use convert functions instead of the listener --- internal/cmd/generate.go | 6 +- internal/compiler/go_type.go | 4 +- internal/compiler/result.go | 4 +- .../testdata/experimental_lemon/go/models.go | 14 +- .../testdata/experimental_lemon/query.sql | 10 +- internal/sqlite/convert.go | 254 +++++++++++++ internal/sqlite/listener.go | 188 ---------- internal/sqlite/parse.go | 30 +- internal/sqlite/visitor.go | 347 ------------------ 9 files changed, 302 insertions(+), 555 deletions(-) create mode 100644 internal/sqlite/convert.go delete mode 100644 internal/sqlite/listener.go delete mode 100644 internal/sqlite/visitor.go diff --git a/internal/cmd/generate.go b/internal/cmd/generate.go index 65220b43dc..6e21385061 100644 --- a/internal/cmd/generate.go +++ b/internal/cmd/generate.go @@ -226,9 +226,9 @@ func parse(e Env, name, dir string, sql config.SQL, combo config.CombinedSetting } return q, false - case config.EnginePostgreSQL: + case config.EnginePostgreSQL, config.EngineXLemon: var eng postgreEngine - if e.ExperimentalParser { + if e.ExperimentalParser || sql.Engine == config.EngineXLemon { eng = compiler.NewEngine(sql, combo) } else { eng = &dinosqlEngine{} @@ -257,7 +257,7 @@ func parse(e Env, name, dir string, sql config.SQL, combo config.CombinedSetting } return eng.Result(), false - case config.EngineXLemon, config.EngineXDolphin, config.EngineXElephant: + case config.EngineXDolphin, config.EngineXElephant: r, err := compiler.Run(sql, combo) if err != nil { fmt.Fprintf(stderr, "# package %s\n", name) diff --git a/internal/compiler/go_type.go b/internal/compiler/go_type.go index 374831b829..e2426e9258 100644 --- a/internal/compiler/go_type.go +++ b/internal/compiler/go_type.go @@ -157,7 +157,7 @@ func (r *Result) goInnerType(col *Column, settings config.CombinedSettings) stri return "interface{}" } if rel.Schema == "" { - rel.Schema = "public" + rel.Schema = r.Catalog.DefaultSchema } for _, schema := range r.Catalog.Schemas { @@ -168,7 +168,7 @@ func (r *Result) goInnerType(col *Column, settings config.CombinedSettings) stri switch t := typ.(type) { case *catalog.Enum: if rel.Name == t.Name && rel.Schema == schema.Name { - if schema.Name == "public" { + if schema.Name == r.Catalog.DefaultSchema { return golang.StructName(t.Name, settings) } return golang.StructName(schema.Name+"_"+t.Name, settings) diff --git a/internal/compiler/result.go b/internal/compiler/result.go index c083018220..7428f7569f 100644 --- a/internal/compiler/result.go +++ b/internal/compiler/result.go @@ -47,7 +47,7 @@ func (r *Result) Structs(settings config.CombinedSettings) []golang.Struct { } for _, table := range schema.Tables { var tableName string - if schema.Name == "public" { + if schema.Name == r.Catalog.DefaultSchema { tableName = table.Rel.Name } else { tableName = schema.Name + "_" + table.Rel.Name @@ -90,7 +90,7 @@ func (r *Result) Enums(settings config.CombinedSettings) []golang.Enum { continue } var enumName string - if schema.Name == "public" { + if schema.Name == r.Catalog.DefaultSchema { enumName = enum.Name } else { enumName = schema.Name + "_" + enum.Name diff --git a/internal/endtoend/testdata/experimental_lemon/go/models.go b/internal/endtoend/testdata/experimental_lemon/go/models.go index 518b1bade7..3cf2b86ff2 100644 --- a/internal/endtoend/testdata/experimental_lemon/go/models.go +++ b/internal/endtoend/testdata/experimental_lemon/go/models.go @@ -2,13 +2,19 @@ package querytest -import () +import ( + "database/sql" +) + +type Bar struct { + Baz sql.NullString +} type Baz struct { - Name string - Email string + Name sql.NullString + Email sql.NullString } type Foo struct { - Bar string + Bar sql.NullString } diff --git a/internal/endtoend/testdata/experimental_lemon/query.sql b/internal/endtoend/testdata/experimental_lemon/query.sql index ebfc632607..98b3379365 100644 --- a/internal/endtoend/testdata/experimental_lemon/query.sql +++ b/internal/endtoend/testdata/experimental_lemon/query.sql @@ -6,12 +6,10 @@ CREATE TABLE bar ( baz text NOT NULL ); -SELECT bar FROM foo; +CREATE TABLE baz (name text); +ALTER TABLE baz ADD COLUMN email text; -DROP TABLE bar; -DROP TABLE IF EXISTS bar; -DROP TABLE IF EXISTS baz; +-- name: ListFoo :many +SELECT bar FROM foo; -CREATE TABLE baz (name text); -ALTER TABLE baz ADD COLUMN email text; diff --git a/internal/sqlite/convert.go b/internal/sqlite/convert.go new file mode 100644 index 0000000000..733efcaba0 --- /dev/null +++ b/internal/sqlite/convert.go @@ -0,0 +1,254 @@ +package sqlite + +import ( + "github.com/antlr/antlr4/runtime/Go/antlr" + + "github.com/kyleconroy/sqlc/internal/sql/ast" + "github.com/kyleconroy/sqlc/internal/sql/ast/pg" + "github.com/kyleconroy/sqlc/internal/sqlite/parser" +) + +type node interface { + GetParser() antlr.Parser +} + +func convertAlter_table_stmtContext(c *parser.Alter_table_stmtContext) ast.Node { + if newTable, ok := c.New_table_name().(*parser.New_table_nameContext); ok { + name := newTable.Any_name().GetText() + return &ast.RenameTableStmt{ + Table: parseTableName(c), + NewName: &name, + } + } + + if newCol, ok := c.New_column_name().(*parser.New_column_nameContext); ok { + name := newCol.Any_name().GetText() + return &ast.RenameColumnStmt{ + Table: parseTableName(c), + Col: &ast.ColumnRef{ + Name: c.Column_name().GetText(), + }, + NewName: &name, + } + } + + if def, ok := c.Column_def().(*parser.Column_defContext); ok { + stmt := &ast.AlterTableStmt{ + Table: parseTableName(c), + Cmds: &ast.List{}, + } + name := def.Column_name().GetText() + stmt.Cmds.Items = append(stmt.Cmds.Items, &ast.AlterTableCmd{ + Name: &name, + Subtype: ast.AT_AddColumn, + Def: &ast.ColumnDef{ + Colname: name, + TypeName: &ast.TypeName{ + Name: def.Type_name().GetText(), + }, + }, + }) + return stmt + } + + return &ast.TODO{} +} + +func convertAttach_stmtContext(c *parser.Attach_stmtContext) ast.Node { + name := c.Database_name().GetText() + return &ast.CreateSchemaStmt{ + Name: &name, + } +} + +func convertCreate_table_stmtContext(c *parser.Create_table_stmtContext) ast.Node { + stmt := &ast.CreateTableStmt{ + Name: parseTableName(c), + IfNotExists: c.K_EXISTS() != nil, + } + for _, idef := range c.AllColumn_def() { + if def, ok := idef.(*parser.Column_defContext); ok { + stmt.Cols = append(stmt.Cols, &ast.ColumnDef{ + Colname: def.Column_name().GetText(), + TypeName: &ast.TypeName{ + Name: def.Type_name().GetText(), + }, + }) + } + } + return stmt +} + +func convertDrop_table_stmtContext(c *parser.Drop_table_stmtContext) ast.Node { + return &ast.DropTableStmt{ + IfExists: c.K_EXISTS() != nil, + Tables: []*ast.TableName{parseTableName(c)}, + } +} + +func convertFactored_select_stmtContext(c *parser.Factored_select_stmtContext) ast.Node { + var tables []ast.Node + var cols []ast.Node + for _, icore := range c.AllSelect_core() { + core, ok := icore.(*parser.Select_coreContext) + if !ok { + continue + } + for _, icol := range core.AllResult_column() { + col, ok := icol.(*parser.Result_columnContext) + if !ok { + continue + } + iexpr := col.Expr() + if iexpr == nil { + continue + } + expr, ok := iexpr.(*parser.ExprContext) + if !ok { + continue + } + cols = append(cols, &ast.ResTarget{ + Val: &ast.ColumnRef{ + Name: expr.Column_name().GetText(), + }, + }) + } + for _, ifrom := range core.AllTable_or_subquery() { + from, ok := ifrom.(*parser.Table_or_subqueryContext) + if !ok { + continue + } + name := ast.TableName{ + Name: from.Table_name().GetText(), + } + if from.Schema_name() != nil { + name.Schema = from.Schema_name().GetText() + } + tables = append(tables, &name) + } + } + return &pg.SelectStmt{ + FromClause: &ast.List{Items: tables}, + TargetList: &ast.List{Items: cols}, + } +} + +func convertSql_stmtContext(n *parser.Sql_stmtContext) ast.Node { + if stmt := n.Alter_table_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Analyze_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Attach_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Begin_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Commit_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Compound_select_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Create_index_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Create_table_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Create_trigger_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Create_view_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Create_virtual_table_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Delete_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Delete_stmt_limited(); stmt != nil { + return convert(stmt) + } + if stmt := n.Detach_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Drop_index_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Drop_table_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Drop_trigger_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Drop_view_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Factored_select_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Insert_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Pragma_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Reindex_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Release_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Rollback_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Savepoint_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Simple_select_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Select_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Update_stmt(); stmt != nil { + return convert(stmt) + } + if stmt := n.Update_stmt_limited(); stmt != nil { + return convert(stmt) + } + if stmt := n.Vacuum_stmt(); stmt != nil { + return convert(stmt) + } + return nil +} + +func convert(node node) ast.Node { + switch n := node.(type) { + + case *parser.Alter_table_stmtContext: + return convertAlter_table_stmtContext(n) + + case *parser.Attach_stmtContext: + return convertAttach_stmtContext(n) + + case *parser.Create_table_stmtContext: + return convertCreate_table_stmtContext(n) + + case *parser.Drop_table_stmtContext: + return convertDrop_table_stmtContext(n) + + case *parser.Factored_select_stmtContext: + return convertFactored_select_stmtContext(n) + + case *parser.Sql_stmtContext: + return convertSql_stmtContext(n) + + default: + return &ast.TODO{} + } +} diff --git a/internal/sqlite/listener.go b/internal/sqlite/listener.go deleted file mode 100644 index 8d282a63e6..0000000000 --- a/internal/sqlite/listener.go +++ /dev/null @@ -1,188 +0,0 @@ -package sqlite - -import ( - "github.com/kyleconroy/sqlc/internal/sql/ast" - "github.com/kyleconroy/sqlc/internal/sqlite/parser" -) - -type listener struct { - *parser.BaseSQLiteListener - - stmt *ast.RawStmt - - stmts []ast.Statement -} - -// The Visitor code generated by Antlr doesn't currently work -// -// To make due, we mark the listener as "busy" if it's currently processing a -// node. This helps avoids scenarios where enter is called on nested -// statements. -func (l *listener) busy() bool { - return l.stmt != nil -} - -func (l *listener) EnterSql_stmt(c *parser.Sql_stmtContext) { - l.stmt = nil -} - -func (l *listener) ExitSql_stmt(c *parser.Sql_stmtContext) { - if l.stmt != nil { - l.stmts = append(l.stmts, ast.Statement{ - Raw: l.stmt, - }) - } -} - -func (l *listener) EnterAlter_table_stmt(c *parser.Alter_table_stmtContext) { - if l.busy() { - return - } - - if newTable, ok := c.New_table_name().(*parser.New_table_nameContext); ok { - name := newTable.Any_name().GetText() - stmt := &ast.RenameTableStmt{ - Table: parseTableName(c), - NewName: &name, - } - l.stmt = &ast.RawStmt{Stmt: stmt} - return - } - - if newCol, ok := c.New_column_name().(*parser.New_column_nameContext); ok { - name := newCol.Any_name().GetText() - stmt := &ast.RenameColumnStmt{ - Table: parseTableName(c), - Col: &ast.ColumnRef{ - Name: c.Column_name().GetText(), - }, - NewName: &name, - } - l.stmt = &ast.RawStmt{Stmt: stmt} - return - } - - if def, ok := c.Column_def().(*parser.Column_defContext); ok { - stmt := &ast.AlterTableStmt{ - Table: parseTableName(c), - Cmds: &ast.List{}, - } - name := def.Column_name().GetText() - stmt.Cmds.Items = append(stmt.Cmds.Items, &ast.AlterTableCmd{ - Name: &name, - Subtype: ast.AT_AddColumn, - Def: &ast.ColumnDef{ - Colname: name, - TypeName: &ast.TypeName{ - Name: def.Type_name().GetText(), - }, - }, - }) - l.stmt = &ast.RawStmt{Stmt: stmt} - return - } - -} - -func (l *listener) EnterAttach_stmt(c *parser.Attach_stmtContext) { - if l.busy() { - return - } - - name := c.Database_name().GetText() - stmt := &ast.CreateSchemaStmt{ - Name: &name, - } - - l.stmt = &ast.RawStmt{Stmt: stmt} -} - -func (l *listener) EnterCreate_table_stmt(c *parser.Create_table_stmtContext) { - if l.busy() { - return - } - - stmt := &ast.CreateTableStmt{ - Name: parseTableName(c), - IfNotExists: c.K_EXISTS() != nil, - } - - for _, idef := range c.AllColumn_def() { - if def, ok := idef.(*parser.Column_defContext); ok { - stmt.Cols = append(stmt.Cols, &ast.ColumnDef{ - Colname: def.Column_name().GetText(), - TypeName: &ast.TypeName{ - Name: def.Type_name().GetText(), - }, - }) - } - } - - l.stmt = &ast.RawStmt{Stmt: stmt} -} - -func (l *listener) EnterDrop_table_stmt(c *parser.Drop_table_stmtContext) { - if l.busy() { - return - } - drop := &ast.DropTableStmt{ - IfExists: c.K_EXISTS() != nil, - Tables: []*ast.TableName{parseTableName(c)}, - } - l.stmt = &ast.RawStmt{Stmt: drop} -} - -func (l *listener) EnterFactored_select_stmt(c *parser.Factored_select_stmtContext) { - if l.busy() { - return - } - - var tables []ast.Node - var cols []ast.Node - for _, icore := range c.AllSelect_core() { - core, ok := icore.(*parser.Select_coreContext) - if !ok { - continue - } - for _, icol := range core.AllResult_column() { - col, ok := icol.(*parser.Result_columnContext) - if !ok { - continue - } - iexpr := col.Expr() - if iexpr == nil { - continue - } - expr, ok := iexpr.(*parser.ExprContext) - if !ok { - continue - } - cols = append(cols, &ast.ResTarget{ - Val: &ast.ColumnRef{ - Name: expr.Column_name().GetText(), - }, - }) - } - for _, ifrom := range core.AllTable_or_subquery() { - from, ok := ifrom.(*parser.Table_or_subqueryContext) - if !ok { - continue - } - name := ast.TableName{ - Name: from.Table_name().GetText(), - } - if from.Schema_name() != nil { - name.Schema = from.Schema_name().GetText() - } - tables = append(tables, &name) - } - } - - sel := &ast.SelectStmt{ - From: &ast.List{Items: tables}, - Fields: &ast.List{Items: cols}, - } - l.stmt = &ast.RawStmt{Stmt: sel} -} - -var _ parser.SQLiteListener = (*listener)(nil) diff --git a/internal/sqlite/parse.go b/internal/sqlite/parse.go index 8ac3aa6d64..82fbf2f475 100644 --- a/internal/sqlite/parse.go +++ b/internal/sqlite/parse.go @@ -2,6 +2,7 @@ package sqlite import ( "errors" + "fmt" "io" "io/ioutil" @@ -46,7 +47,6 @@ func (p *Parser) Parse(r io.Reader) ([]ast.Statement, error) { lexer := parser.NewSQLiteLexer(input) stream := antlr.NewCommonTokenStream(lexer, 0) pp := parser.NewSQLiteParser(stream) - l := &listener{} el := &errorListener{} pp.AddErrorListener(el) // pp.BuildParseTrees = true @@ -54,6 +54,30 @@ func (p *Parser) Parse(r io.Reader) ([]ast.Statement, error) { if el.err != "" { return nil, errors.New(el.err) } - antlr.ParseTreeWalkerDefault.Walk(l, tree) - return l.stmts, nil + pctx, ok := tree.(*parser.ParseContext) + if !ok { + return nil, fmt.Errorf("expected ParserContext; got %T\n", tree) + } + var stmts []ast.Statement + for _, istmt := range pctx.AllSql_stmt_list() { + list, ok := istmt.(*parser.Sql_stmt_listContext) + if !ok { + return nil, fmt.Errorf("expected Sql_stmt_listContext; got %T\n", istmt) + } + for _, stmt := range list.AllSql_stmt() { + out := convert(stmt) + if _, ok := out.(*ast.TODO); ok { + continue + } + stmts = append(stmts, ast.Statement{ + Raw: &ast.RawStmt{ + Stmt: out, + StmtLocation: stmt.GetStart().GetStart(), + // TODO: Understand why we need to add one + StmtLen: stmt.GetStop().GetStop() - stmt.GetStart().GetStart() + 1, + }, + }) + } + } + return stmts, nil } diff --git a/internal/sqlite/visitor.go b/internal/sqlite/visitor.go deleted file mode 100644 index 5222e601f1..0000000000 --- a/internal/sqlite/visitor.go +++ /dev/null @@ -1,347 +0,0 @@ -package sqlite - -import ( - "fmt" - - "github.com/antlr/antlr4/runtime/Go/antlr" - "github.com/kyleconroy/sqlc/internal/sqlite/parser" -) - -type visitor struct { -} - -// ParseTreeVisitor interace -func (v *visitor) Visit(tree antlr.ParseTree) interface{} { return v } -func (v *visitor) VisitChildren(node antlr.RuleNode) interface{} { return v } -func (v *visitor) VisitTerminal(node antlr.TerminalNode) interface{} { return v } -func (v *visitor) VisitErrorNode(node antlr.ErrorNode) interface{} { return v } - -// SQLiteVisitor interface -func (v *visitor) VisitParse(ctx *parser.ParseContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitSql_stmt_list(ctx *parser.Sql_stmt_listContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitSql_stmt(ctx *parser.Sql_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitAlter_table_stmt(ctx *parser.Alter_table_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitAnalyze_stmt(ctx *parser.Analyze_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitAttach_stmt(ctx *parser.Attach_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitBegin_stmt(ctx *parser.Begin_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitCommit_stmt(ctx *parser.Commit_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitCompound_select_stmt(ctx *parser.Compound_select_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitCreate_index_stmt(ctx *parser.Create_index_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitCreate_table_stmt(ctx *parser.Create_table_stmtContext) interface{} { - fmt.Println("CREATE TABLE", ctx) - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitCreate_trigger_stmt(ctx *parser.Create_trigger_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitCreate_view_stmt(ctx *parser.Create_view_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitCreate_virtual_table_stmt(ctx *parser.Create_virtual_table_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitDelete_stmt(ctx *parser.Delete_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitDelete_stmt_limited(ctx *parser.Delete_stmt_limitedContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitDetach_stmt(ctx *parser.Detach_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitDrop_index_stmt(ctx *parser.Drop_index_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitDrop_table_stmt(ctx *parser.Drop_table_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitDrop_trigger_stmt(ctx *parser.Drop_trigger_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitDrop_view_stmt(ctx *parser.Drop_view_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitFactored_select_stmt(ctx *parser.Factored_select_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitInsert_stmt(ctx *parser.Insert_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitPragma_stmt(ctx *parser.Pragma_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitReindex_stmt(ctx *parser.Reindex_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitRelease_stmt(ctx *parser.Release_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitRollback_stmt(ctx *parser.Rollback_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitSavepoint_stmt(ctx *parser.Savepoint_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitSimple_select_stmt(ctx *parser.Simple_select_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitSelect_stmt(ctx *parser.Select_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitSelect_or_values(ctx *parser.Select_or_valuesContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitUpdate_stmt(ctx *parser.Update_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitUpdate_stmt_limited(ctx *parser.Update_stmt_limitedContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitVacuum_stmt(ctx *parser.Vacuum_stmtContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitColumn_def(ctx *parser.Column_defContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitType_name(ctx *parser.Type_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitColumn_constraint(ctx *parser.Column_constraintContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitConflict_clause(ctx *parser.Conflict_clauseContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitExpr(ctx *parser.ExprContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitForeign_key_clause(ctx *parser.Foreign_key_clauseContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitRaise_function(ctx *parser.Raise_functionContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitIndexed_column(ctx *parser.Indexed_columnContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitTable_constraint(ctx *parser.Table_constraintContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitWith_clause(ctx *parser.With_clauseContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitQualified_table_name(ctx *parser.Qualified_table_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitOrdering_term(ctx *parser.Ordering_termContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitPragma_value(ctx *parser.Pragma_valueContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitCommon_table_expression(ctx *parser.Common_table_expressionContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitResult_column(ctx *parser.Result_columnContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitTable_or_subquery(ctx *parser.Table_or_subqueryContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitJoin_clause(ctx *parser.Join_clauseContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitJoin_operator(ctx *parser.Join_operatorContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitJoin_constraint(ctx *parser.Join_constraintContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitSelect_core(ctx *parser.Select_coreContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitCompound_operator(ctx *parser.Compound_operatorContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitSigned_number(ctx *parser.Signed_numberContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitLiteral_value(ctx *parser.Literal_valueContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitUnary_operator(ctx *parser.Unary_operatorContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitError_message(ctx *parser.Error_messageContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitModule_argument(ctx *parser.Module_argumentContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitColumn_alias(ctx *parser.Column_aliasContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitKeyword(ctx *parser.KeywordContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitName(ctx *parser.NameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitFunction_name(ctx *parser.Function_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitDatabase_name(ctx *parser.Database_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitSchema_name(ctx *parser.Schema_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitTable_function_name(ctx *parser.Table_function_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitTable_name(ctx *parser.Table_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitTable_or_index_name(ctx *parser.Table_or_index_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitNew_table_name(ctx *parser.New_table_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitColumn_name(ctx *parser.Column_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitCollation_name(ctx *parser.Collation_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitForeign_table(ctx *parser.Foreign_tableContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitIndex_name(ctx *parser.Index_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitTrigger_name(ctx *parser.Trigger_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitView_name(ctx *parser.View_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitModule_name(ctx *parser.Module_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitPragma_name(ctx *parser.Pragma_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitSavepoint_name(ctx *parser.Savepoint_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitTable_alias(ctx *parser.Table_aliasContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitTransaction_name(ctx *parser.Transaction_nameContext) interface{} { - return v.VisitChildren(ctx) -} - -func (v *visitor) VisitAny_name(ctx *parser.Any_nameContext) interface{} { - return v.VisitChildren(ctx) -}