Skip to content

Commit b68c669

Browse files
authored
fix(compiler): Check delete statements for CTEs (#1329)
1 parent e9c5241 commit b68c669

File tree

16 files changed

+274
-0
lines changed

16 files changed

+274
-0
lines changed

internal/compiler/query_catalog.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ type QueryCatalog struct {
1515
func buildQueryCatalog(c *catalog.Catalog, node ast.Node) (*QueryCatalog, error) {
1616
var with *ast.WithClause
1717
switch n := node.(type) {
18+
case *ast.DeleteStmt:
19+
with = n.WithClause
1820
case *ast.InsertStmt:
1921
with = n.WithClause
2022
case *ast.UpdateStmt:

internal/endtoend/testdata/cte_in_delete/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/cte_in_delete/mysql/go/models.go

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

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

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CREATE TABLE bar (id integer NOT NULL AUTO_INCREMENT PRIMARY KEY, ready bool not null);
2+
3+
-- name: DeleteReadyWithCTE :exec
4+
WITH ready_ids AS (
5+
SELECT id FROM bar WHERE ready
6+
)
7+
DELETE FROM bar WHERE id IN (SELECT * FROM ready_ids);
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+
"engine": "mysql",
6+
"path": "go",
7+
"name": "querytest",
8+
"schema": "query.sql",
9+
"queries": "query.sql"
10+
}
11+
]
12+
}

internal/endtoend/testdata/cte_in_delete/pgx/go/db.go

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

internal/endtoend/testdata/cte_in_delete/pgx/go/models.go

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

internal/endtoend/testdata/cte_in_delete/pgx/go/query.sql.go

Lines changed: 36 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CREATE TABLE bar (id serial primary key not null, ready bool not null);
2+
3+
-- name: DeleteReadyWithCTE :many
4+
WITH ready_ids AS (
5+
SELECT id FROM bar WHERE ready
6+
)
7+
DELETE FROM bar WHERE id IN (SELECT * FROM ready_ids)
8+
RETURNING id;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"path": "go",
6+
"engine": "postgresql",
7+
"sql_package": "pgx/v4",
8+
"name": "querytest",
9+
"schema": "query.sql",
10+
"queries": "query.sql"
11+
}
12+
]
13+
}

internal/endtoend/testdata/cte_in_delete/stdlib/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/cte_in_delete/stdlib/go/models.go

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

internal/endtoend/testdata/cte_in_delete/stdlib/go/query.sql.go

Lines changed: 39 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CREATE TABLE bar (id serial primary key not null, ready bool not null);
2+
3+
-- name: DeleteReadyWithCTE :many
4+
WITH ready_ids AS (
5+
SELECT id FROM bar WHERE ready
6+
)
7+
DELETE FROM bar WHERE id IN (SELECT * FROM ready_ids)
8+
RETURNING id;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"path": "go",
6+
"name": "querytest",
7+
"schema": "query.sql",
8+
"queries": "query.sql"
9+
}
10+
]
11+
}

0 commit comments

Comments
 (0)