Skip to content

Commit faa1c9d

Browse files
fix(codegen): use correct Go types for bit strings and cid/oid/tid/xid with pgx/v4 (#2668)
resolves #2667
1 parent e0353d3 commit faa1c9d

File tree

26 files changed

+642
-7
lines changed

26 files changed

+642
-7
lines changed

internal/codegen/golang/postgresql_type.go

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,6 @@ func postgresType(req *plugin.CodeGenRequest, col *plugin.Column) string {
343343
if driver == SQLDriverPGXV5 {
344344
return "pgtype.Interval"
345345
}
346-
347346
if notNull {
348347
return "int64"
349348
}
@@ -467,25 +466,47 @@ func postgresType(req *plugin.CodeGenRequest, col *plugin.Column) string {
467466
return "interface{}"
468467

469468
case "bit", "varbit", "pg_catalog.bit", "pg_catalog.varbit":
470-
if driver.IsPGX() {
469+
if driver == SQLDriverPGXV5 {
471470
return "pgtype.Bits"
472471
}
472+
if driver == SQLDriverPGXV4 {
473+
return "pgtype.Varbit"
474+
}
473475

474-
case "box":
475-
if driver.IsPGX() {
476-
return "pgtype.Box"
476+
case "cid":
477+
if driver == SQLDriverPGXV5 {
478+
return "pgtype.Uint32"
479+
}
480+
if driver == SQLDriverPGXV4 {
481+
return "pgtype.CID"
477482
}
478483

479-
case "cid", "oid":
480-
if driver.IsPGX() {
484+
case "oid":
485+
if driver == SQLDriverPGXV5 {
481486
return "pgtype.Uint32"
482487
}
488+
if driver == SQLDriverPGXV4 {
489+
return "pgtype.OID"
490+
}
483491

484492
case "tid":
485493
if driver.IsPGX() {
486494
return "pgtype.TID"
487495
}
488496

497+
case "xid":
498+
if driver == SQLDriverPGXV5 {
499+
return "pgtype.Uint32"
500+
}
501+
if driver == SQLDriverPGXV4 {
502+
return "pgtype.XID"
503+
}
504+
505+
case "box":
506+
if driver.IsPGX() {
507+
return "pgtype.Box"
508+
}
509+
489510
case "circle":
490511
if driver.IsPGX() {
491512
return "pgtype.Circle"

internal/endtoend/testdata/bit_string/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/bit_string/pgx/v4/go/models.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/bit_string/pgx/v4/go/query.sql.go

Lines changed: 40 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CREATE TABLE test_table
2+
(
3+
v_bit_null bit(3),
4+
v_varbit_null bit varying(3),
5+
v_bit bit(3) not null,
6+
v_varbit bit varying(3) not null
7+
);
8+
9+
-- name: SelectTest :many
10+
SELECT *
11+
from test_table;
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/bit_string/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/bit_string/pgx/v5/go/models.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/bit_string/pgx/v5/go/query.sql.go

Lines changed: 40 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CREATE TABLE test_table
2+
(
3+
v_bit_null bit(3),
4+
v_varbit_null bit varying(3),
5+
v_bit bit(3) not null,
6+
v_varbit bit varying(3) not null
7+
);
8+
9+
-- name: SelectTest :many
10+
SELECT *
11+
from test_table;
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/v5",
8+
"name": "querytest",
9+
"schema": "query.sql",
10+
"queries": "query.sql"
11+
}
12+
]
13+
}

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

internal/endtoend/testdata/cid_oid_tid_xid/pgx/v4/go/query.sql.go

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

0 commit comments

Comments
 (0)