Skip to content

Commit e3ad3b5

Browse files
fix(compiler/mysql): prevent panic in convertSetOprSelectList() (#4042)
Resolves #2453
1 parent 8c3d6eb commit e3ad3b5

File tree

10 files changed

+141
-6
lines changed

10 files changed

+141
-6
lines changed

internal/endtoend/testdata/select_union/mysql/go/query.sql.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/select_union/mysql/query.sql

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,9 @@ SELECT * FROM foo;
2222
-- name: SelectUnionOther :many
2323
SELECT * FROM foo
2424
UNION
25-
SELECT * FROM bar;
25+
SELECT * FROM bar;
26+
27+
-- name: SelectUnionAliased :many
28+
(SELECT * FROM foo)
29+
UNION
30+
SELECT * FROM bar;

internal/endtoend/testdata/select_union/postgres/pgx/v4/go/query.sql.go

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

internal/endtoend/testdata/select_union/postgres/pgx/v4/query.sql

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,9 @@ SELECT * FROM foo;
2222
-- name: SelectUnionOther :many
2323
SELECT * FROM foo
2424
UNION
25-
SELECT * FROM bar;
25+
SELECT * FROM bar;
26+
27+
-- name: SelectUnionAliased :many
28+
(SELECT * FROM foo)
29+
UNION
30+
SELECT * FROM foo;

internal/endtoend/testdata/select_union/postgres/pgx/v5/go/query.sql.go

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

internal/endtoend/testdata/select_union/postgres/pgx/v5/query.sql

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,9 @@ SELECT * FROM foo;
2222
-- name: SelectUnionOther :many
2323
SELECT * FROM foo
2424
UNION
25-
SELECT * FROM bar;
25+
SELECT * FROM bar;
26+
27+
-- name: SelectUnionAliased :many
28+
(SELECT * FROM foo)
29+
UNION
30+
SELECT * FROM foo;

internal/endtoend/testdata/select_union/postgres/stdlib/go/query.sql.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/select_union/postgres/stdlib/query.sql

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,9 @@ SELECT * FROM foo;
2222
-- name: SelectUnionOther :many
2323
SELECT * FROM foo
2424
UNION
25-
SELECT * FROM bar;
25+
SELECT * FROM bar;
26+
27+
-- name: SelectUnionAliased :many
28+
(SELECT * FROM foo)
29+
UNION
30+
SELECT * FROM foo;

internal/endtoend/testdata/select_union/sqlite/query.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ SELECT * FROM foo;
2222
-- name: SelectUnionOther :many
2323
SELECT * FROM foo
2424
UNION
25-
SELECT * FROM bar;
25+
SELECT * FROM bar;

internal/engine/dolphin/convert.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1182,7 +1182,12 @@ func (c *cc) convertSetOprType(n *pcast.SetOprType) (op ast.SetOperation, all bo
11821182
func (c *cc) convertSetOprSelectList(n *pcast.SetOprSelectList) ast.Node {
11831183
selectStmts := make([]*ast.SelectStmt, len(n.Selects))
11841184
for i, node := range n.Selects {
1185-
selectStmts[i] = c.convertSelectStmt(node.(*pcast.SelectStmt))
1185+
switch node := node.(type) {
1186+
case *pcast.SelectStmt:
1187+
selectStmts[i] = c.convertSelectStmt(node)
1188+
case *pcast.SetOprSelectList:
1189+
selectStmts[i] = c.convertSetOprSelectList(node).(*ast.SelectStmt)
1190+
}
11861191
}
11871192

11881193
op, all := c.convertSetOprType(n.AfterSetOperator)

0 commit comments

Comments
 (0)