Add pgtype.Map.SQLScanner
This enables compatibility with database/sql for types that cannot implement Scan themselves.
This commit is contained in:
@@ -15,6 +15,7 @@ import (
|
||||
|
||||
"github.com/jackc/pgx/v5"
|
||||
"github.com/jackc/pgx/v5/pgconn"
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
"github.com/jackc/pgx/v5/stdlib"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
@@ -373,6 +374,37 @@ func TestConnSimpleSlicePassThrough(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestConnQueryScanArray(t *testing.T) {
|
||||
testWithAllQueryExecModes(t, func(t *testing.T, db *sql.DB) {
|
||||
m := pgtype.NewMap()
|
||||
|
||||
var a []int64
|
||||
err := db.QueryRow("select '{1,2,3}'::bigint[]").Scan(m.SQLScanner(&a))
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, []int64{1, 2, 3}, a)
|
||||
})
|
||||
}
|
||||
|
||||
func TestConnQueryScanRange(t *testing.T) {
|
||||
testWithAllQueryExecModes(t, func(t *testing.T, db *sql.DB) {
|
||||
m := pgtype.NewMap()
|
||||
|
||||
var r pgtype.Range[pgtype.Int4]
|
||||
err := db.QueryRow("select int4range(1, 5)").Scan(m.SQLScanner(&r))
|
||||
require.NoError(t, err)
|
||||
assert.Equal(
|
||||
t,
|
||||
pgtype.Range[pgtype.Int4]{
|
||||
Lower: pgtype.Int4{Int32: 1, Valid: true},
|
||||
Upper: pgtype.Int4{Int32: 5, Valid: true},
|
||||
LowerType: pgtype.Inclusive,
|
||||
UpperType: pgtype.Exclusive,
|
||||
Valid: true,
|
||||
},
|
||||
r)
|
||||
})
|
||||
}
|
||||
|
||||
// Test type that pgx would handle natively in binary, but since it is not a
|
||||
// database/sql native type should be passed through as a string
|
||||
func TestConnQueryRowPgxBinary(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user