Skip to content

Commit 722c78d

Browse files
committed
fix: Support multi-argument version of unnest
Currently, `sqlc` errors out when it encounters the multi-argument version of the `UNNEST` function. This is because the function is not marked as variadic. Instead, the argument type is defined as [`anymultirange`](https://www.postgresql.org/docs/current/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC). Fixes #3507 Signed-off-by: Charith Ellawala <charith@cerbos.dev>
1 parent 014e3f1 commit 722c78d

File tree

22 files changed

+594
-1
lines changed

22 files changed

+594
-1
lines changed

internal/endtoend/testdata/unnest_multiple/postgresql/pgx/v4/go/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/unnest_multiple/postgresql/pgx/v4/go/models.go

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

internal/endtoend/testdata/unnest_multiple/postgresql/pgx/v4/go/querier.go

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

internal/endtoend/testdata/unnest_multiple/postgresql/pgx/v4/go/query.sql.go

Lines changed: 89 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-- name: CreateMemories :many
2+
INSERT INTO memories (vampire_id, memory, victim)
3+
SELECT
4+
unnest(@vampires::uuid[], @memories::text[], @victims::text[])
5+
RETURNING
6+
*;
7+
8+
-- name: GetMemories :many
9+
SELECT vampires.id::uuid, vampires.memory::text, vampires.victim::text FROM unnest(@vampires::uuid[], @memories::text[], @victims::text[]) AS vampires (id, memory, victim);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
CREATE TABLE vampires (
2+
id uuid PRIMARY KEY DEFAULT gen_random_uuid ()
3+
);
4+
5+
CREATE TABLE memories (
6+
id uuid PRIMARY KEY DEFAULT gen_random_uuid (),
7+
vampire_id uuid REFERENCES vampires (id) NOT NULL,
8+
memory text NOT NULL,
9+
victim text NOT NULL,
10+
created_at timestamp NOT NULL DEFAULT NOW(),
11+
updated_at timestamp
12+
);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"path": "go",
6+
"engine": "postgresql",
7+
"sql_package": "pgx/v4",
8+
"name": "querytest",
9+
"schema": "schema.sql",
10+
"queries": "query.sql",
11+
"emit_interface": true
12+
}
13+
]
14+
}

internal/endtoend/testdata/unnest_multiple/postgresql/pgx/v5/go/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/unnest_multiple/postgresql/pgx/v5/go/models.go

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

internal/endtoend/testdata/unnest_multiple/postgresql/pgx/v5/go/querier.go

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

internal/endtoend/testdata/unnest_multiple/postgresql/pgx/v5/go/query.sql.go

Lines changed: 89 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
-- name: CreateMemories :many
2+
INSERT INTO memories (vampire_id, memory, victim)
3+
SELECT
4+
unnest(@vampires::uuid[], @memories::text[], @victims::text[])
5+
RETURNING
6+
*;
7+
8+
-- name: GetMemories :many
9+
SELECT vampires.id::uuid, vampires.memory::text, vampires.victim::text FROM unnest(@vampires::uuid[], @memories::text[], @victims::text[]) AS vampires(id, memory, victim);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
CREATE TABLE vampires (
2+
id uuid PRIMARY KEY DEFAULT gen_random_uuid ()
3+
);
4+
5+
CREATE TABLE memories (
6+
id uuid PRIMARY KEY DEFAULT gen_random_uuid (),
7+
vampire_id uuid REFERENCES vampires (id) NOT NULL,
8+
memory text NOT NULL,
9+
victim text NOT NULL,
10+
created_at timestamp NOT NULL DEFAULT NOW(),
11+
updated_at timestamp
12+
);

0 commit comments

Comments
 (0)