mirror of
https://github.com/jackc/pgx.git
synced 2025-05-01 21:19:54 +00:00
Merge pull request #35 from georgysavva/scan-into-interface-dst
Make it possible to scan destination of *interface{} type.
This commit is contained in:
commit
e32805888d
4
go.sum
4
go.sum
@ -51,9 +51,7 @@ github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01C
|
||||
github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc=
|
||||
github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw=
|
||||
github.com/jackc/pgtype v1.2.0/go.mod h1:5m2OfMh1wTK7x+Fk952IDmI4nw3nPrvtQdM0ZT4WpC0=
|
||||
github.com/jackc/pgtype v1.3.1-0.20200510045248-7e66ab1e146c/go.mod h1:vaogEUkALtxZMCH411K+tKzNpwzCKU+AnPzBKZ+I+Po=
|
||||
github.com/jackc/pgtype v1.3.1-0.20200510190516-8cd94a14c75a/go.mod h1:vaogEUkALtxZMCH411K+tKzNpwzCKU+AnPzBKZ+I+Po=
|
||||
github.com/jackc/pgtype v1.3.1-0.20200513130519-238967ec4e4c/go.mod h1:f3c+S645fwV5ZqwPvLWZmmnAfPkmaTeLnXs0byan+aA=
|
||||
github.com/jackc/pgtype v1.3.1-0.20200606141011-f6355165a91c/go.mod h1:cvk9Bgu/VzJ9/lxTO5R5sf80p0DiucVtN7ZxvaC4GmQ=
|
||||
github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96 h1:ylEAOd688Duev/fxTmGdupsbyZfxNMdngIG14DoBKTM=
|
||||
github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y=
|
||||
@ -65,8 +63,6 @@ github.com/jackc/pgx/v4 v4.5.0 h1:mN7Z3n0uqPe29+tA4yLWyZNceYKgRvUWNk8qW+D066E=
|
||||
github.com/jackc/pgx/v4 v4.5.0/go.mod h1:EpAKPLdnTorwmPUUsqrPxy5fphV18j9q3wrfRXgo+kA=
|
||||
github.com/jackc/pgx/v4 v4.6.1-0.20200510190926-94ba730bb1e9 h1:rche9LTjh3HEvkE6eb8ITYxRsgEKgBkODHrhdvDVX74=
|
||||
github.com/jackc/pgx/v4 v4.6.1-0.20200510190926-94ba730bb1e9/go.mod h1:t3/cdRQl6fOLDxqtlyhe9UWgfIi9R8+8v8GKV5TRA/o=
|
||||
github.com/jackc/pgx/v4 v4.6.1-0.20200606144914-81140f6c27c9 h1:uLmaWN4t6P8AHANy8+XCNmOHp9ya68meFRPtvlnxNow=
|
||||
github.com/jackc/pgx/v4 v4.6.1-0.20200606144914-81140f6c27c9/go.mod h1:ZDaNWkt9sW1JMiNn0kdYBaLelIhw7Pg4qd+Vk6tw7Hg=
|
||||
github.com/jackc/pgx/v4 v4.6.1-0.20200606145419-4e5062306904 h1:SdGWuGg+Cpxq6Z+ArXt0nafaKeTvtKGEoW+yvycspUU=
|
||||
github.com/jackc/pgx/v4 v4.6.1-0.20200606145419-4e5062306904/go.mod h1:ZDaNWkt9sW1JMiNn0kdYBaLelIhw7Pg4qd+Vk6tw7Hg=
|
||||
github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
|
@ -565,6 +565,11 @@ func (plan *scanPlanDataTypeAssignTo) Scan(ci *ConnInfo, oid uint32, formatCode
|
||||
return nil
|
||||
}
|
||||
|
||||
if dstPtr, ok := dst.(*interface{}); ok {
|
||||
*dstPtr = dt.Value.Get()
|
||||
return nil
|
||||
}
|
||||
|
||||
// assignToErr might have failed because the type of destination has changed
|
||||
newPlan := ci.PlanScan(oid, formatCode, dst)
|
||||
if newPlan, sameType := newPlan.(*scanPlanDataTypeAssignTo); !sameType {
|
||||
|
@ -71,6 +71,22 @@ func TestConnInfoScanNilIsNoOp(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestConnInfoScanTextFormatInterfacePtr(t *testing.T) {
|
||||
ci := pgtype.NewConnInfo()
|
||||
var got interface{}
|
||||
err := ci.Scan(pgtype.TextOID, pgx.TextFormatCode, []byte("foo"), &got)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "foo", got)
|
||||
}
|
||||
|
||||
func TestConnInfoScanBinaryFormatInterfacePtr(t *testing.T) {
|
||||
ci := pgtype.NewConnInfo()
|
||||
var got interface{}
|
||||
err := ci.Scan(pgtype.TextOID, pgx.BinaryFormatCode, []byte("foo"), &got)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "foo", got)
|
||||
}
|
||||
|
||||
func TestConnInfoScanUnknownOIDToStringsAndBytes(t *testing.T) {
|
||||
unknownOID := uint32(999999)
|
||||
srcBuf := []byte("foo")
|
||||
|
Loading…
x
Reference in New Issue
Block a user