Skip to content

Commit fd81da8

Browse files
authored
fix(engine/mysql): Fix MySQL parser for query without trailing semicolon (#1282)
1 parent 8109bbd commit fd81da8

File tree

6 files changed

+95
-1
lines changed

6 files changed

+95
-1
lines changed

internal/endtoend/testdata/missing_semicolon/mysql/go/db.go

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/missing_semicolon/mysql/go/models.go

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/missing_semicolon/mysql/go/query.sql.go

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
-- https://github.com/kyleconroy/sqlc/issues/1198
2+
CREATE TABLE authors (
3+
id INT PRIMARY KEY,
4+
name VARCHAR(255) NOT NULL,
5+
bio text
6+
);
7+
8+
-- name: SetAuthor :exec
9+
UPDATE authors
10+
SET name = ?
11+
WHERE id = ?
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"path": "go",
6+
"engine": "mysql",
7+
"name": "querytest",
8+
"schema": "query.sql",
9+
"queries": "query.sql"
10+
}
11+
]
12+
}

internal/engine/dolphin/parse.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,16 @@ func (p *Parser) Parse(r io.Reader) ([]ast.Statement, error) {
6969
text := stmtNodes[i].Text()
7070
loc := strings.Index(string(blob), text)
7171

72+
stmtLen := len(text)
73+
if text[stmtLen-1] == ';' {
74+
stmtLen -= 1 // Subtract one to remove semicolon
75+
}
76+
7277
stmts = append(stmts, ast.Statement{
7378
Raw: &ast.RawStmt{
7479
Stmt: out,
7580
StmtLocation: loc,
76-
StmtLen: len(text) - 1, // Subtract one to remove semicolon
81+
StmtLen: stmtLen,
7782
},
7883
})
7984
}

0 commit comments

Comments
 (0)