diff --git a/CHANGELOG.md b/CHANGELOG.md index d5a53a51..808f40ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Master +* Rows.Values now supports oid type * ConnPool.Release automatically unlistens connections (Joseph Glanville) * Add trace log level * Add more efficient log leveling diff --git a/query.go b/query.go index c9a53e82..f41e3b07 100644 --- a/query.go +++ b/query.go @@ -367,6 +367,8 @@ func (rows *Rows) Values() ([]interface{}, error) { values = append(values, decodeInt2(vr)) case Int4Oid: values = append(values, decodeInt4(vr)) + case OidOid: + values = append(values, decodeOid(vr)) case Float4Oid: values = append(values, decodeFloat4(vr)) case Float8Oid: diff --git a/query_test.go b/query_test.go index 8491d935..c015038f 100644 --- a/query_test.go +++ b/query_test.go @@ -49,7 +49,7 @@ func TestConnQueryValues(t *testing.T) { var rowCount int32 - rows, err := conn.Query("select 'foo', n, null from generate_series(1,$1) n", 10) + rows, err := conn.Query("select 'foo', n, null, n::oid from generate_series(1,$1) n", 10) if err != nil { t.Fatalf("conn.Query failed: ", err) } @@ -62,8 +62,8 @@ func TestConnQueryValues(t *testing.T) { if err != nil { t.Fatalf("rows.Values failed: %v", err) } - if len(values) != 3 { - t.Errorf("Expected rows.Values to return 3 values, but it returned %d", len(values)) + if len(values) != 4 { + t.Errorf("Expected rows.Values to return 4 values, but it returned %d", len(values)) } if values[0] != "foo" { t.Errorf(`Expected values[0] to be "foo", but it was %v`, values[0]) @@ -79,6 +79,10 @@ func TestConnQueryValues(t *testing.T) { if values[2] != nil { t.Errorf(`Expected values[2] to be %d, but it was %d`, nil, values[2]) } + + if values[3] != pgx.Oid(rowCount) { + t.Errorf(`Expected values[3] to be %d, but it was %d`, rowCount, values[3]) + } } if rows.Err() != nil {