Skip to content

Commit 14631c8

Browse files
authored
codegen/golang: Use pgtype for hstore when using pgx (#1156)
1 parent 7d34722 commit 14631c8

File tree

12 files changed

+256
-0
lines changed

12 files changed

+256
-0
lines changed

internal/codegen/golang/imports.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ var pgtypeTypes = map[string]struct{}{
140140
"pgtype.Int8range": {},
141141
"pgtype.JSON": {},
142142
"pgtype.JSONB": {},
143+
"pgtype.Hstore": {},
143144
"pgtype.Macaddr": {},
144145
"pgtype.Numeric": {},
145146
"pgtype.Numrange": {},

internal/codegen/golang/postgresql_type.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,12 @@ func postgresType(r *compiler.Result, col *compiler.Column, settings config.Comb
220220
}
221221
return "interface{}"
222222

223+
case "hstore":
224+
if driver == SQLDriverPGXV4 {
225+
return "pgtype.Hstore"
226+
}
227+
return "interface{}"
228+
223229
case "void":
224230
// A void value can only be scanned into an empty interface.
225231
return "interface{}"

internal/endtoend/testdata/hstore/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/hstore/pgx/go/hstore.sql.go

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

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

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
CREATE TABLE foo (
2+
bar hstore NOT NULL,
3+
baz hstore
4+
);
5+
6+
-- name: ListBar :many
7+
SELECT bar FROM foo;
8+
9+
-- name: ListBaz :many
10+
SELECT baz FROM foo;
11+
12+
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": "hstore",
9+
"schema": "hstore.sql",
10+
"queries": "hstore.sql"
11+
}
12+
]
13+
}

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

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

internal/endtoend/testdata/hstore/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.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
CREATE TABLE foo (
2+
bar hstore NOT NULL,
3+
baz hstore
4+
);
5+
6+
-- name: ListBar :many
7+
SELECT bar FROM foo;
8+
9+
-- name: ListBaz :many
10+
SELECT baz FROM foo;
11+
12+
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": "hstore",
7+
"schema": "hstore.sql",
8+
"queries": "hstore.sql"
9+
}
10+
]
11+
}

0 commit comments

Comments
 (0)