Skip to content

Commit 8773f6e

Browse files
committed
fix: delete join
1 parent 97b9b48 commit 8773f6e

File tree

13 files changed

+210
-40
lines changed

13 files changed

+210
-40
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,4 @@ mysqlsh:
4747
proto:
4848
buf generate
4949
test-internal:
50-
go build -o sqlc.exe .\cmd\sqlc\ && .\sqlc.exe generate -f .\internal\endtoend\testdata\delete_inner_join\sqlite\sqlc.json
50+
go build -o sqlc.exe .\cmd\sqlc\ && .\sqlc.exe generate -f .\internal\endtoend\testdata\delete_join\postgresql\sqlc.json

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

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/delete_inner_join/mysql/query.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ CREATE TABLE author_book
1818
);
1919

2020
/* name: RemoveAllAuthorsFromTheGreatGatsby :exec */
21-
DELETE author_book
21+
DELETE author_book
2222
FROM author_book
2323
INNER JOIN book ON book.id = author_book.book_id
2424
WHERE book.title = 'The Great Gatsby';

internal/endtoend/testdata/delete_inner_join/postgresql/query.sql

Lines changed: 0 additions & 24 deletions
This file was deleted.

internal/endtoend/testdata/delete_inner_join/postgresql/sqlc.json

Lines changed: 0 additions & 12 deletions
This file was deleted.

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

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

internal/endtoend/testdata/delete_join/mysql/db/models.go

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

internal/endtoend/testdata/delete_join/mysql/db/query.sql.go

Lines changed: 64 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
CREATE TABLE primary_table (
2+
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
3+
user_id bigint(20) unsigned NOT NULL,
4+
PRIMARY KEY (id)
5+
);
6+
7+
CREATE TABLE join_table (
8+
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
9+
primary_table_id bigint(20) unsigned NOT NULL,
10+
other_table_id bigint(20) unsigned NOT NULL,
11+
is_active tinyint(1) NOT NULL DEFAULT '0',
12+
PRIMARY KEY (id)
13+
);
14+
15+
-- name: DeleteJoin :exec
16+
DELETE jt.*,pt.* FROM join_table as jt
17+
JOIN primary_table as pt
18+
ON jt.primary_table_id = pt.id
19+
WHERE jt.id = ?
20+
AND pt.user_id = ?;
21+
22+
-- name: DeleteLeftJoin :exec
23+
DELETE jt.*,pt.* FROM join_table as jt
24+
LEFT JOIN primary_table as pt
25+
ON jt.primary_table_id = pt.id
26+
WHERE jt.id = ?
27+
AND pt.user_id = ?;
28+
29+
-- name: DeleteRightJoin :exec
30+
DELETE jt.*,pt.* FROM join_table as jt
31+
RIGHT JOIN primary_table as pt
32+
ON jt.primary_table_id = pt.id
33+
WHERE jt.id = ?
34+
AND pt.user_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": "db",
6+
"engine": "mysql",
7+
"schema": "query.sql",
8+
"queries": "query.sql"
9+
}
10+
]
11+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
CREATE TABLE primary_table (
2+
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
3+
user_id bigint(20) unsigned NOT NULL,
4+
PRIMARY KEY (id)
5+
);
6+
7+
CREATE TABLE join_table (
8+
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
9+
primary_table_id bigint(20) unsigned NOT NULL,
10+
other_table_id bigint(20) unsigned NOT NULL,
11+
is_active tinyint(1) NOT NULL DEFAULT '0',
12+
PRIMARY KEY (id)
13+
);
14+
15+
-- name: DeleteJoin :exec
16+
DELETE jt.*,pt.* FROM join_table as jt
17+
JOIN primary_table as pt
18+
ON jt.primary_table_id = pt.id
19+
WHERE jt.id = ?
20+
AND pt.user_id = ?;
21+
22+
-- name: DeleteLeftJoin :exec
23+
DELETE jt.*,pt.* FROM join_table as jt
24+
LEFT JOIN primary_table as pt
25+
ON jt.primary_table_id = pt.id
26+
WHERE jt.id = ?
27+
AND pt.user_id = ?;
28+
29+
-- name: DeleteRightJoin :exec
30+
DELETE jt.*,pt.* FROM join_table as jt
31+
RIGHT JOIN primary_table as pt
32+
ON jt.primary_table_id = pt.id
33+
WHERE jt.id = ?
34+
AND pt.user_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": "db",
6+
"engine": "postgresql",
7+
"schema": "query.sql",
8+
"queries": "query.sql"
9+
}
10+
]
11+
}

internal/engine/postgresql/convert.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1435,7 +1435,9 @@ func convertDeleteStmt(n *pg.DeleteStmt) *ast.DeleteStmt {
14351435
return nil
14361436
}
14371437
return &ast.DeleteStmt{
1438-
Relation: convertRangeVar(n.Relation),
1438+
Relations: &ast.List{
1439+
Items: []ast.Node{convertRangeVar(n.Relation)},
1440+
},
14391441
UsingClause: convertSlice(n.UsingClause),
14401442
WhereClause: convertNode(n.WhereClause),
14411443
ReturningList: convertSlice(n.ReturningList),

0 commit comments

Comments
 (0)