diff --git a/conn.go b/conn.go index fb94ee8d..27a80e95 100644 --- a/conn.go +++ b/conn.go @@ -520,13 +520,7 @@ func (c *Conn) execParamsAndPreparedPrefix(sd *pgconn.StatementDescription, argu } for i := range sd.Fields { - if dt, ok := c.ConnInfo.DataTypeForOID(uint32(sd.Fields[i].DataTypeOID)); ok { - if _, ok := dt.Value.(pgtype.BinaryDecoder); ok { - c.eqb.AppendResultFormat(BinaryFormatCode) - } else { - c.eqb.AppendResultFormat(TextFormatCode) - } - } + c.eqb.AppendResultFormat(c.ConnInfo.ResultFormatCodeForOID(sd.Fields[i].DataTypeOID)) } return nil @@ -674,13 +668,7 @@ optionLoop: if resultFormats == nil { for i := range sd.Fields { - if dt, ok := c.ConnInfo.DataTypeForOID(uint32(sd.Fields[i].DataTypeOID)); ok { - if _, ok := dt.Value.(pgtype.BinaryDecoder); ok { - c.eqb.AppendResultFormat(BinaryFormatCode) - } else { - c.eqb.AppendResultFormat(TextFormatCode) - } - } + c.eqb.AppendResultFormat(c.ConnInfo.ResultFormatCodeForOID(sd.Fields[i].DataTypeOID)) } resultFormats = c.eqb.resultFormats @@ -761,13 +749,7 @@ func (c *Conn) SendBatch(ctx context.Context, b *Batch) BatchResults { } for i := range sd.Fields { - if dt, ok := c.ConnInfo.DataTypeForOID(uint32(sd.Fields[i].DataTypeOID)); ok { - if _, ok := dt.Value.(pgtype.BinaryDecoder); ok { - c.eqb.AppendResultFormat(BinaryFormatCode) - } else { - c.eqb.AppendResultFormat(TextFormatCode) - } - } + c.eqb.AppendResultFormat(c.ConnInfo.ResultFormatCodeForOID(sd.Fields[i].DataTypeOID)) } if sd.Name == "" { diff --git a/go.mod b/go.mod index 2ff98117..548f535e 100644 --- a/go.mod +++ b/go.mod @@ -4,31 +4,23 @@ go 1.12 require ( github.com/cockroachdb/apd v1.1.0 - github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f // indirect - github.com/go-stack/stack v1.8.0 // indirect github.com/jackc/pgconn v0.0.0-20190825052232-e6cf51b304f1 github.com/jackc/pgio v1.0.0 github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711 - github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90 + github.com/jackc/pgtype v0.0.0-20190825053211-b1e25e4ea49c github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9 - github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect - github.com/kr/pty v1.1.8 // indirect - github.com/lib/pq v1.2.0 // indirect - github.com/mattn/go-colorable v0.1.1 // indirect - github.com/mattn/go-isatty v0.0.7 // indirect + github.com/kr/pretty v0.1.0 // indirect + github.com/mattn/go-colorable v0.1.2 // indirect + github.com/mattn/go-isatty v0.0.9 // indirect github.com/rs/zerolog v1.15.0 github.com/satori/go.uuid v1.2.0 github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 github.com/sirupsen/logrus v1.4.2 - github.com/stretchr/objx v0.2.0 // indirect github.com/stretchr/testify v1.4.0 - go.uber.org/atomic v1.4.0 // indirect + go.uber.org/multierr v1.1.0 // indirect go.uber.org/zap v1.10.0 - golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586 // indirect - golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 // indirect - golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a // indirect - golang.org/x/text v0.3.2 // indirect golang.org/x/tools v0.0.0-20190825031127-d72b05d2b1b6 // indirect golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 + gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec ) diff --git a/go.sum b/go.sum index f404feaf..3f109410 100644 --- a/go.sum +++ b/go.sum @@ -43,8 +43,11 @@ github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0 h1:mX93v750WifMD1htCt github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90 h1:aN5Vlwa2Q3QvxHDtZNi1x+GYkQyketBadMjtiug7AbM= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= +github.com/jackc/pgtype v0.0.0-20190825053211-b1e25e4ea49c h1:FVGlUaxJxGV/gEs/xsQ6w33L0ofHttAfRxj/yPQC8yI= +github.com/jackc/pgtype v0.0.0-20190825053211-b1e25e4ea49c/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= +github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b h1:cIcUpcEP55F/QuZWEtXyqHoWk+IV4TBiLjtBkeq/Q1c= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9 h1:KLBBPU++1T3DHtm1B1QaIHy80Vhu0wNMErIFCNgAL8Y= @@ -66,9 +69,14 @@ github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/mattn/go-colorable v0.1.1 h1:G1f5SKeVxmagw/IyvzvtZE4Gybcc4Tr1tf7I8z0XgOg= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= diff --git a/stdlib/sql.go b/stdlib/sql.go index df45250a..41398879 100644 --- a/stdlib/sql.go +++ b/stdlib/sql.go @@ -312,7 +312,7 @@ func (r *Rows) Columns() []string { // ColumnTypeDatabaseTypeName return the database system type name. func (r *Rows) ColumnTypeDatabaseTypeName(index int) string { - if dt, ok := r.conn.conn.ConnInfo.DataTypeForOID(uint32(r.rows.FieldDescriptions()[index].DataTypeOID)); ok { + if dt, ok := r.conn.conn.ConnInfo.DataTypeForOID(r.rows.FieldDescriptions()[index].DataTypeOID); ok { return strings.ToUpper(dt.Name) } diff --git a/values.go b/values.go index 570dc793..da9bb70a 100644 --- a/values.go +++ b/values.go @@ -217,13 +217,7 @@ func chooseParameterFormatCode(ci *pgtype.ConnInfo, oid uint32, arg interface{}) return TextFormatCode } - if dt, ok := ci.DataTypeForOID(oid); ok { - if _, ok := dt.Value.(pgtype.BinaryEncoder); ok { - return BinaryFormatCode - } - } - - return TextFormatCode + return ci.ParamFormatCodeForOID(oid) } func stripNamedType(val *reflect.Value) (interface{}, bool) {