Skip to content

Commit 4e6fe78

Browse files
kazegusuriclaude
andcommitted
Fix Parser interface compatibility after upstream merge
- Update Parser.Parse signature to include filename parameter - Update expander.Parser interface and Parse calls - Update fmt_test.go sqlParser interface and Parse calls - Add format.Dialect parameter to translate function in parse.go 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent a9e8450 commit 4e6fe78

File tree

4 files changed

+14
-9
lines changed

4 files changed

+14
-9
lines changed

internal/endtoend/fmt_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020

2121
// sqlParser is an interface for SQL parsers
2222
type sqlParser interface {
23-
Parse(r io.Reader) ([]ast.Statement, error)
23+
Parse(r io.Reader, filename string) ([]ast.Statement, error)
2424
}
2525

2626
// sqlFormatter is an interface for formatters
@@ -71,7 +71,7 @@ func TestFormat(t *testing.T) {
7171
// and return the formatted string. This tests that our formatting produces
7272
// valid SQL that parses to the same AST structure.
7373
fingerprint = func(sql string) (string, error) {
74-
stmts, err := mysqlParser.Parse(strings.NewReader(sql))
74+
stmts, err := mysqlParser.Parse(strings.NewReader(sql), "")
7575
if err != nil {
7676
return "", err
7777
}
@@ -87,7 +87,7 @@ func TestFormat(t *testing.T) {
8787
// For SQLite, we use the same "round-trip" fingerprint strategy as MySQL:
8888
// parse the SQL, format it, and return the formatted string.
8989
fingerprint = func(sql string) (string, error) {
90-
stmts, err := sqliteParser.Parse(strings.NewReader(sql))
90+
stmts, err := sqliteParser.Parse(strings.NewReader(sql), "")
9191
if err != nil {
9292
return "", err
9393
}
@@ -138,7 +138,7 @@ func TestFormat(t *testing.T) {
138138
}
139139

140140
// Parse the entire file to get proper statement boundaries
141-
stmts, err := parse.Parse(bytes.NewReader(contents))
141+
stmts, err := parse.Parse(bytes.NewReader(contents), "")
142142
if err != nil {
143143
// Skip files with parse errors (e.g., syntax_errors test cases)
144144
return

internal/engine/postgresql/parse.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/sqlc-dev/sqlc/internal/engine/postgresql/parser"
1212
"github.com/sqlc-dev/sqlc/internal/source"
1313
"github.com/sqlc-dev/sqlc/internal/sql/ast"
14+
"github.com/sqlc-dev/sqlc/internal/sql/format"
1415
"github.com/sqlc-dev/sqlc/internal/sql/sqlerr"
1516
)
1617

@@ -171,7 +172,7 @@ func (p *Parser) Parse(r io.Reader, filename string) ([]ast.Statement, error) {
171172

172173
var stmts []ast.Statement
173174
for _, raw := range tree.Stmts {
174-
n, err := translate(raw, dispatcher)
175+
n, err := translate(raw, dispatcher, p)
175176
if err == errSkip {
176177
continue
177178
}
@@ -218,7 +219,7 @@ func (p *Parser) CommentSyntax() source.CommentSyntax {
218219
}
219220
}
220221

221-
func translate(raw *nodes.RawStmt, dispatcher *CommentsDispatcher) (ast.Node, error) {
222+
func translate(raw *nodes.RawStmt, dispatcher *CommentsDispatcher, dialect format.Dialect) (ast.Node, error) {
222223
node := raw.Stmt
223224
switch inner := node.Node.(type) {
224225

@@ -506,7 +507,7 @@ func translate(raw *nodes.RawStmt, dispatcher *CommentsDispatcher) (ast.Node, er
506507

507508
var rawExprStr string
508509
if nodeConstraint.Constraint.RawExpr != nil {
509-
rawExprStr = ast.Format(convertNode(nodeConstraint.Constraint.RawExpr))
510+
rawExprStr = ast.Format(convertNode(nodeConstraint.Constraint.RawExpr), dialect)
510511
}
511512

512513
switch nodeConstraint.Constraint.Contype {

internal/engine/postgresql/parse_default.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ package postgresql
44

55
import (
66
nodes "github.com/pganalyze/pg_query_go/v6"
7+
"github.com/wasilibs/go-pgquery/parser"
78
)
89

10+
var ParseScan = nodes.Scan
911
var Parse = nodes.Parse
12+
var Deparse = nodes.Deparse
13+
var DeparseFromProtobuf = parser.DeparseFromProtobuf
1014
var Fingerprint = nodes.Fingerprint

internal/x/expander/expander.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313

1414
// Parser is an interface for SQL parsers that can parse SQL into AST statements.
1515
type Parser interface {
16-
Parse(r io.Reader) ([]ast.Statement, error)
16+
Parse(r io.Reader, filename string) ([]ast.Statement, error)
1717
}
1818

1919
// ColumnGetter retrieves column names for a query by preparing it against a database.
@@ -42,7 +42,7 @@ func New(colGetter ColumnGetter, parser Parser, dialect format.Dialect) *Expande
4242
// expands it to use explicit column names. Returns the expanded query string.
4343
func (e *Expander) Expand(ctx context.Context, query string) (string, error) {
4444
// Parse the query
45-
stmts, err := e.parser.Parse(strings.NewReader(query))
45+
stmts, err := e.parser.Parse(strings.NewReader(query), "")
4646
if err != nil {
4747
return "", fmt.Errorf("failed to parse query: %w", err)
4848
}

0 commit comments

Comments
 (0)