Skip to content

Commit fd7168e

Browse files
authored
feat(compiler): Support DO statements (#2777)
* feat(compiler): Support DO statements * fix exec
1 parent 0cfaf70 commit fd7168e

File tree

14 files changed

+193
-0
lines changed

14 files changed

+193
-0
lines changed

internal/compiler/output_columns.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ func (c *Compiler) outputColumns(qc *QueryCatalog, node ast.Node) ([]*Column, er
115115
if isUnion {
116116
return c.outputColumns(qc, n.Larg)
117117
}
118+
case *ast.DoStmt:
119+
targets = &ast.List{}
118120
case *ast.CallStmt:
119121
targets = &ast.List{}
120122
case *ast.TruncateStmt, *ast.RefreshMatViewStmt, *ast.NotifyStmt, *ast.ListenStmt:
@@ -509,6 +511,8 @@ func (c *Compiler) sourceTables(qc *QueryCatalog, node ast.Node) ([]*Table, erro
509511
list = &ast.List{
510512
Items: append(n.FromClause.Items, n.Relations.Items...),
511513
}
514+
case *ast.DoStmt:
515+
list = &ast.List{}
512516
case *ast.CallStmt:
513517
list = &ast.List{}
514518
case *ast.NotifyStmt, *ast.ListenStmt:

internal/compiler/parse.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ func (c *Compiler) parseQuery(stmt ast.Node, src string, o opts.Parser) (*Query,
3939
case *ast.CallStmt:
4040
case *ast.SelectStmt:
4141
case *ast.DeleteStmt:
42+
case *ast.DoStmt:
4243
case *ast.InsertStmt:
4344
if err := validate.InsertStmt(n); err != nil {
4445
return nil, err

internal/endtoend/testdata/do/postgresql/pgx/db/db.go

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

internal/endtoend/testdata/do/postgresql/pgx/db/models.go

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

internal/endtoend/testdata/do/postgresql/pgx/db/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: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
-- name: DoStuff :exec
2+
DO $$
3+
BEGIN
4+
ALTER TABLE authors
5+
ADD COLUMN marked_for_processing bool;
6+
END
7+
$$;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
CREATE TABLE authors (
2+
id BIGSERIAL PRIMARY KEY,
3+
name text NOT NULL,
4+
bio text
5+
);
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": "db",
6+
"engine": "postgresql",
7+
"schema": "schema.sql",
8+
"queries": "query.sql",
9+
"sql_package": "pgx/v5"
10+
}
11+
]
12+
}

internal/endtoend/testdata/do/postgresql/pq/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/do/postgresql/pq/db/models.go

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

internal/endtoend/testdata/do/postgresql/pq/db/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: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
-- name: DoStuff :exec
2+
DO $$
3+
BEGIN
4+
ALTER TABLE authors
5+
ADD COLUMN marked_for_processing bool;
6+
END
7+
$$;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
CREATE TABLE authors (
2+
id BIGSERIAL PRIMARY KEY,
3+
name text NOT NULL,
4+
bio text
5+
);
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": "schema.sql",
8+
"queries": "query.sql"
9+
}
10+
]
11+
}

0 commit comments

Comments
 (0)