2
0

Use Go casing convention for CID/TID/XID/CIDR

This commit is contained in:
Jack Christensen
2017-06-03 12:01:49 -05:00
parent 24fb04edb5
commit 8712627257
18 changed files with 269 additions and 269 deletions
+1 -1
View File
@@ -146,7 +146,7 @@ JSON and JSONB Mapping
pgx includes built-in support to marshal and unmarshal between Go types and pgx includes built-in support to marshal and unmarshal between Go types and
the PostgreSQL JSON and JSONB. the PostgreSQL JSON and JSONB.
Inet and Cidr Mapping Inet and CIDR Mapping
pgx encodes from net.IPNet to and from inet and cidr PostgreSQL types. In pgx encodes from net.IPNet to and from inet and cidr PostgreSQL types. In
addition, as a convenience pgx will encode from a net.IP; it will assume a /32 addition, as a convenience pgx will encode from a net.IP; it will assume a /32
+13 -13
View File
@@ -4,7 +4,7 @@ import (
"database/sql/driver" "database/sql/driver"
) )
// Cid is PostgreSQL's Command Identifier type. // CID is PostgreSQL's Command Identifier type.
// //
// When one does // When one does
// //
@@ -15,47 +15,47 @@ import (
// It is currently implemented as an unsigned four byte integer. // It is currently implemented as an unsigned four byte integer.
// Its definition can be found in src/include/c.h as CommandId // Its definition can be found in src/include/c.h as CommandId
// in the PostgreSQL sources. // in the PostgreSQL sources.
type Cid pguint32 type CID pguint32
// Set converts from src to dst. Note that as Cid is not a general // Set converts from src to dst. Note that as CID is not a general
// number type Set does not do automatic type conversion as other number // number type Set does not do automatic type conversion as other number
// types do. // types do.
func (dst *Cid) Set(src interface{}) error { func (dst *CID) Set(src interface{}) error {
return (*pguint32)(dst).Set(src) return (*pguint32)(dst).Set(src)
} }
func (dst *Cid) Get() interface{} { func (dst *CID) Get() interface{} {
return (*pguint32)(dst).Get() return (*pguint32)(dst).Get()
} }
// AssignTo assigns from src to dst. Note that as Cid is not a general number // AssignTo assigns from src to dst. Note that as CID is not a general number
// type AssignTo does not do automatic type conversion as other number types do. // type AssignTo does not do automatic type conversion as other number types do.
func (src *Cid) AssignTo(dst interface{}) error { func (src *CID) AssignTo(dst interface{}) error {
return (*pguint32)(src).AssignTo(dst) return (*pguint32)(src).AssignTo(dst)
} }
func (dst *Cid) DecodeText(ci *ConnInfo, src []byte) error { func (dst *CID) DecodeText(ci *ConnInfo, src []byte) error {
return (*pguint32)(dst).DecodeText(ci, src) return (*pguint32)(dst).DecodeText(ci, src)
} }
func (dst *Cid) DecodeBinary(ci *ConnInfo, src []byte) error { func (dst *CID) DecodeBinary(ci *ConnInfo, src []byte) error {
return (*pguint32)(dst).DecodeBinary(ci, src) return (*pguint32)(dst).DecodeBinary(ci, src)
} }
func (src *Cid) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) { func (src *CID) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) {
return (*pguint32)(src).EncodeText(ci, buf) return (*pguint32)(src).EncodeText(ci, buf)
} }
func (src *Cid) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) { func (src *CID) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) {
return (*pguint32)(src).EncodeBinary(ci, buf) return (*pguint32)(src).EncodeBinary(ci, buf)
} }
// Scan implements the database/sql Scanner interface. // Scan implements the database/sql Scanner interface.
func (dst *Cid) Scan(src interface{}) error { func (dst *CID) Scan(src interface{}) error {
return (*pguint32)(dst).Scan(src) return (*pguint32)(dst).Scan(src)
} }
// Value implements the database/sql/driver Valuer interface. // Value implements the database/sql/driver Valuer interface.
func (src *Cid) Value() (driver.Value, error) { func (src *CID) Value() (driver.Value, error) {
return (*pguint32)(src).Value() return (*pguint32)(src).Value()
} }
+15 -15
View File
@@ -8,11 +8,11 @@ import (
"github.com/jackc/pgx/pgtype/testutil" "github.com/jackc/pgx/pgtype/testutil"
) )
func TestCidTranscode(t *testing.T) { func TestCIDTranscode(t *testing.T) {
pgTypeName := "cid" pgTypeName := "cid"
values := []interface{}{ values := []interface{}{
&pgtype.Cid{Uint: 42, Status: pgtype.Present}, &pgtype.CID{Uint: 42, Status: pgtype.Present},
&pgtype.Cid{Status: pgtype.Null}, &pgtype.CID{Status: pgtype.Null},
} }
eqFunc := func(a, b interface{}) bool { eqFunc := func(a, b interface{}) bool {
return reflect.DeepEqual(a, b) return reflect.DeepEqual(a, b)
@@ -28,16 +28,16 @@ func TestCidTranscode(t *testing.T) {
} }
} }
func TestCidSet(t *testing.T) { func TestCIDSet(t *testing.T) {
successfulTests := []struct { successfulTests := []struct {
source interface{} source interface{}
result pgtype.Cid result pgtype.CID
}{ }{
{source: uint32(1), result: pgtype.Cid{Uint: 1, Status: pgtype.Present}}, {source: uint32(1), result: pgtype.CID{Uint: 1, Status: pgtype.Present}},
} }
for i, tt := range successfulTests { for i, tt := range successfulTests {
var r pgtype.Cid var r pgtype.CID
err := r.Set(tt.source) err := r.Set(tt.source)
if err != nil { if err != nil {
t.Errorf("%d: %v", i, err) t.Errorf("%d: %v", i, err)
@@ -49,17 +49,17 @@ func TestCidSet(t *testing.T) {
} }
} }
func TestCidAssignTo(t *testing.T) { func TestCIDAssignTo(t *testing.T) {
var ui32 uint32 var ui32 uint32
var pui32 *uint32 var pui32 *uint32
simpleTests := []struct { simpleTests := []struct {
src pgtype.Cid src pgtype.CID
dst interface{} dst interface{}
expected interface{} expected interface{}
}{ }{
{src: pgtype.Cid{Uint: 42, Status: pgtype.Present}, dst: &ui32, expected: uint32(42)}, {src: pgtype.CID{Uint: 42, Status: pgtype.Present}, dst: &ui32, expected: uint32(42)},
{src: pgtype.Cid{Status: pgtype.Null}, dst: &pui32, expected: ((*uint32)(nil))}, {src: pgtype.CID{Status: pgtype.Null}, dst: &pui32, expected: ((*uint32)(nil))},
} }
for i, tt := range simpleTests { for i, tt := range simpleTests {
@@ -74,11 +74,11 @@ func TestCidAssignTo(t *testing.T) {
} }
pointerAllocTests := []struct { pointerAllocTests := []struct {
src pgtype.Cid src pgtype.CID
dst interface{} dst interface{}
expected interface{} expected interface{}
}{ }{
{src: pgtype.Cid{Uint: 42, Status: pgtype.Present}, dst: &pui32, expected: uint32(42)}, {src: pgtype.CID{Uint: 42, Status: pgtype.Present}, dst: &pui32, expected: uint32(42)},
} }
for i, tt := range pointerAllocTests { for i, tt := range pointerAllocTests {
@@ -93,10 +93,10 @@ func TestCidAssignTo(t *testing.T) {
} }
errorTests := []struct { errorTests := []struct {
src pgtype.Cid src pgtype.CID
dst interface{} dst interface{}
}{ }{
{src: pgtype.Cid{Status: pgtype.Null}, dst: &ui32}, {src: pgtype.CID{Status: pgtype.Null}, dst: &ui32},
} }
for i, tt := range errorTests { for i, tt := range errorTests {
+8 -8
View File
@@ -1,31 +1,31 @@
package pgtype package pgtype
type Cidr Inet type CIDR Inet
func (dst *Cidr) Set(src interface{}) error { func (dst *CIDR) Set(src interface{}) error {
return (*Inet)(dst).Set(src) return (*Inet)(dst).Set(src)
} }
func (dst *Cidr) Get() interface{} { func (dst *CIDR) Get() interface{} {
return (*Inet)(dst).Get() return (*Inet)(dst).Get()
} }
func (src *Cidr) AssignTo(dst interface{}) error { func (src *CIDR) AssignTo(dst interface{}) error {
return (*Inet)(src).AssignTo(dst) return (*Inet)(src).AssignTo(dst)
} }
func (dst *Cidr) DecodeText(ci *ConnInfo, src []byte) error { func (dst *CIDR) DecodeText(ci *ConnInfo, src []byte) error {
return (*Inet)(dst).DecodeText(ci, src) return (*Inet)(dst).DecodeText(ci, src)
} }
func (dst *Cidr) DecodeBinary(ci *ConnInfo, src []byte) error { func (dst *CIDR) DecodeBinary(ci *ConnInfo, src []byte) error {
return (*Inet)(dst).DecodeBinary(ci, src) return (*Inet)(dst).DecodeBinary(ci, src)
} }
func (src *Cidr) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) { func (src *CIDR) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) {
return (*Inet)(src).EncodeText(ci, buf) return (*Inet)(src).EncodeText(ci, buf)
} }
func (src *Cidr) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) { func (src *CIDR) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) {
return (*Inet)(src).EncodeBinary(ci, buf) return (*Inet)(src).EncodeBinary(ci, buf)
} }
+29 -29
View File
@@ -9,28 +9,28 @@ import (
"github.com/jackc/pgx/pgio" "github.com/jackc/pgx/pgio"
) )
type CidrArray struct { type CIDRArray struct {
Elements []Cidr Elements []CIDR
Dimensions []ArrayDimension Dimensions []ArrayDimension
Status Status Status Status
} }
func (dst *CidrArray) Set(src interface{}) error { func (dst *CIDRArray) Set(src interface{}) error {
switch value := src.(type) { switch value := src.(type) {
case []*net.IPNet: case []*net.IPNet:
if value == nil { if value == nil {
*dst = CidrArray{Status: Null} *dst = CIDRArray{Status: Null}
} else if len(value) == 0 { } else if len(value) == 0 {
*dst = CidrArray{Status: Present} *dst = CIDRArray{Status: Present}
} else { } else {
elements := make([]Cidr, len(value)) elements := make([]CIDR, len(value))
for i := range value { for i := range value {
if err := elements[i].Set(value[i]); err != nil { if err := elements[i].Set(value[i]); err != nil {
return err return err
} }
} }
*dst = CidrArray{ *dst = CIDRArray{
Elements: elements, Elements: elements,
Dimensions: []ArrayDimension{{Length: int32(len(elements)), LowerBound: 1}}, Dimensions: []ArrayDimension{{Length: int32(len(elements)), LowerBound: 1}},
Status: Present, Status: Present,
@@ -39,17 +39,17 @@ func (dst *CidrArray) Set(src interface{}) error {
case []net.IP: case []net.IP:
if value == nil { if value == nil {
*dst = CidrArray{Status: Null} *dst = CIDRArray{Status: Null}
} else if len(value) == 0 { } else if len(value) == 0 {
*dst = CidrArray{Status: Present} *dst = CIDRArray{Status: Present}
} else { } else {
elements := make([]Cidr, len(value)) elements := make([]CIDR, len(value))
for i := range value { for i := range value {
if err := elements[i].Set(value[i]); err != nil { if err := elements[i].Set(value[i]); err != nil {
return err return err
} }
} }
*dst = CidrArray{ *dst = CIDRArray{
Elements: elements, Elements: elements,
Dimensions: []ArrayDimension{{Length: int32(len(elements)), LowerBound: 1}}, Dimensions: []ArrayDimension{{Length: int32(len(elements)), LowerBound: 1}},
Status: Present, Status: Present,
@@ -60,13 +60,13 @@ func (dst *CidrArray) Set(src interface{}) error {
if originalSrc, ok := underlyingSliceType(src); ok { if originalSrc, ok := underlyingSliceType(src); ok {
return dst.Set(originalSrc) return dst.Set(originalSrc)
} }
return fmt.Errorf("cannot convert %v to Cidr", value) return fmt.Errorf("cannot convert %v to CIDR", value)
} }
return nil return nil
} }
func (dst *CidrArray) Get() interface{} { func (dst *CIDRArray) Get() interface{} {
switch dst.Status { switch dst.Status {
case Present: case Present:
return dst return dst
@@ -77,7 +77,7 @@ func (dst *CidrArray) Get() interface{} {
} }
} }
func (src *CidrArray) AssignTo(dst interface{}) error { func (src *CIDRArray) AssignTo(dst interface{}) error {
switch src.Status { switch src.Status {
case Present: case Present:
switch v := dst.(type) { switch v := dst.(type) {
@@ -112,9 +112,9 @@ func (src *CidrArray) AssignTo(dst interface{}) error {
return fmt.Errorf("cannot decode %v into %T", src, dst) return fmt.Errorf("cannot decode %v into %T", src, dst)
} }
func (dst *CidrArray) DecodeText(ci *ConnInfo, src []byte) error { func (dst *CIDRArray) DecodeText(ci *ConnInfo, src []byte) error {
if src == nil { if src == nil {
*dst = CidrArray{Status: Null} *dst = CIDRArray{Status: Null}
return nil return nil
} }
@@ -123,13 +123,13 @@ func (dst *CidrArray) DecodeText(ci *ConnInfo, src []byte) error {
return err return err
} }
var elements []Cidr var elements []CIDR
if len(uta.Elements) > 0 { if len(uta.Elements) > 0 {
elements = make([]Cidr, len(uta.Elements)) elements = make([]CIDR, len(uta.Elements))
for i, s := range uta.Elements { for i, s := range uta.Elements {
var elem Cidr var elem CIDR
var elemSrc []byte var elemSrc []byte
if s != "NULL" { if s != "NULL" {
elemSrc = []byte(s) elemSrc = []byte(s)
@@ -143,14 +143,14 @@ func (dst *CidrArray) DecodeText(ci *ConnInfo, src []byte) error {
} }
} }
*dst = CidrArray{Elements: elements, Dimensions: uta.Dimensions, Status: Present} *dst = CIDRArray{Elements: elements, Dimensions: uta.Dimensions, Status: Present}
return nil return nil
} }
func (dst *CidrArray) DecodeBinary(ci *ConnInfo, src []byte) error { func (dst *CIDRArray) DecodeBinary(ci *ConnInfo, src []byte) error {
if src == nil { if src == nil {
*dst = CidrArray{Status: Null} *dst = CIDRArray{Status: Null}
return nil return nil
} }
@@ -161,7 +161,7 @@ func (dst *CidrArray) DecodeBinary(ci *ConnInfo, src []byte) error {
} }
if len(arrayHeader.Dimensions) == 0 { if len(arrayHeader.Dimensions) == 0 {
*dst = CidrArray{Dimensions: arrayHeader.Dimensions, Status: Present} *dst = CIDRArray{Dimensions: arrayHeader.Dimensions, Status: Present}
return nil return nil
} }
@@ -170,7 +170,7 @@ func (dst *CidrArray) DecodeBinary(ci *ConnInfo, src []byte) error {
elementCount *= d.Length elementCount *= d.Length
} }
elements := make([]Cidr, elementCount) elements := make([]CIDR, elementCount)
for i := range elements { for i := range elements {
elemLen := int(int32(binary.BigEndian.Uint32(src[rp:]))) elemLen := int(int32(binary.BigEndian.Uint32(src[rp:])))
@@ -186,11 +186,11 @@ func (dst *CidrArray) DecodeBinary(ci *ConnInfo, src []byte) error {
} }
} }
*dst = CidrArray{Elements: elements, Dimensions: arrayHeader.Dimensions, Status: Present} *dst = CIDRArray{Elements: elements, Dimensions: arrayHeader.Dimensions, Status: Present}
return nil return nil
} }
func (src *CidrArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) { func (src *CIDRArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) {
switch src.Status { switch src.Status {
case Null: case Null:
return nil, nil return nil, nil
@@ -247,7 +247,7 @@ func (src *CidrArray) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) {
return buf, nil return buf, nil
} }
func (src *CidrArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) { func (src *CIDRArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) {
switch src.Status { switch src.Status {
case Null: case Null:
return nil, nil return nil, nil
@@ -292,7 +292,7 @@ func (src *CidrArray) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) {
} }
// Scan implements the database/sql Scanner interface. // Scan implements the database/sql Scanner interface.
func (dst *CidrArray) Scan(src interface{}) error { func (dst *CIDRArray) Scan(src interface{}) error {
if src == nil { if src == nil {
return dst.DecodeText(nil, nil) return dst.DecodeText(nil, nil)
} }
@@ -310,7 +310,7 @@ func (dst *CidrArray) Scan(src interface{}) error {
} }
// Value implements the database/sql/driver Valuer interface. // Value implements the database/sql/driver Valuer interface.
func (src *CidrArray) Value() (driver.Value, error) { func (src *CIDRArray) Value() (driver.Value, error) {
buf, err := src.EncodeText(nil, nil) buf, err := src.EncodeText(nil, nil)
if err != nil { if err != nil {
return nil, err return nil, err
+46 -46
View File
@@ -9,40 +9,40 @@ import (
"github.com/jackc/pgx/pgtype/testutil" "github.com/jackc/pgx/pgtype/testutil"
) )
func TestCidrArrayTranscode(t *testing.T) { func TestCIDRArrayTranscode(t *testing.T) {
testutil.TestSuccessfulTranscode(t, "cidr[]", []interface{}{ testutil.TestSuccessfulTranscode(t, "cidr[]", []interface{}{
&pgtype.CidrArray{ &pgtype.CIDRArray{
Elements: nil, Elements: nil,
Dimensions: nil, Dimensions: nil,
Status: pgtype.Present, Status: pgtype.Present,
}, },
&pgtype.CidrArray{ &pgtype.CIDRArray{
Elements: []pgtype.Cidr{ Elements: []pgtype.CIDR{
pgtype.Cidr{IPNet: mustParseCidr(t, "12.34.56.0/32"), Status: pgtype.Present}, pgtype.CIDR{IPNet: mustParseCIDR(t, "12.34.56.0/32"), Status: pgtype.Present},
pgtype.Cidr{Status: pgtype.Null}, pgtype.CIDR{Status: pgtype.Null},
}, },
Dimensions: []pgtype.ArrayDimension{{Length: 2, LowerBound: 1}}, Dimensions: []pgtype.ArrayDimension{{Length: 2, LowerBound: 1}},
Status: pgtype.Present, Status: pgtype.Present,
}, },
&pgtype.CidrArray{Status: pgtype.Null}, &pgtype.CIDRArray{Status: pgtype.Null},
&pgtype.CidrArray{ &pgtype.CIDRArray{
Elements: []pgtype.Cidr{ Elements: []pgtype.CIDR{
pgtype.Cidr{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}, pgtype.CIDR{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present},
pgtype.Cidr{IPNet: mustParseCidr(t, "12.34.56.0/32"), Status: pgtype.Present}, pgtype.CIDR{IPNet: mustParseCIDR(t, "12.34.56.0/32"), Status: pgtype.Present},
pgtype.Cidr{IPNet: mustParseCidr(t, "192.168.0.1/32"), Status: pgtype.Present}, pgtype.CIDR{IPNet: mustParseCIDR(t, "192.168.0.1/32"), Status: pgtype.Present},
pgtype.Cidr{IPNet: mustParseCidr(t, "2607:f8b0:4009:80b::200e/128"), Status: pgtype.Present}, pgtype.CIDR{IPNet: mustParseCIDR(t, "2607:f8b0:4009:80b::200e/128"), Status: pgtype.Present},
pgtype.Cidr{Status: pgtype.Null}, pgtype.CIDR{Status: pgtype.Null},
pgtype.Cidr{IPNet: mustParseCidr(t, "255.0.0.0/8"), Status: pgtype.Present}, pgtype.CIDR{IPNet: mustParseCIDR(t, "255.0.0.0/8"), Status: pgtype.Present},
}, },
Dimensions: []pgtype.ArrayDimension{{Length: 3, LowerBound: 1}, {Length: 2, LowerBound: 1}}, Dimensions: []pgtype.ArrayDimension{{Length: 3, LowerBound: 1}, {Length: 2, LowerBound: 1}},
Status: pgtype.Present, Status: pgtype.Present,
}, },
&pgtype.CidrArray{ &pgtype.CIDRArray{
Elements: []pgtype.Cidr{ Elements: []pgtype.CIDR{
pgtype.Cidr{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}, pgtype.CIDR{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present},
pgtype.Cidr{IPNet: mustParseCidr(t, "12.34.56.0/32"), Status: pgtype.Present}, pgtype.CIDR{IPNet: mustParseCIDR(t, "12.34.56.0/32"), Status: pgtype.Present},
pgtype.Cidr{IPNet: mustParseCidr(t, "192.168.0.1/32"), Status: pgtype.Present}, pgtype.CIDR{IPNet: mustParseCIDR(t, "192.168.0.1/32"), Status: pgtype.Present},
pgtype.Cidr{IPNet: mustParseCidr(t, "2607:f8b0:4009:80b::200e/128"), Status: pgtype.Present}, pgtype.CIDR{IPNet: mustParseCIDR(t, "2607:f8b0:4009:80b::200e/128"), Status: pgtype.Present},
}, },
Dimensions: []pgtype.ArrayDimension{ Dimensions: []pgtype.ArrayDimension{
{Length: 2, LowerBound: 4}, {Length: 2, LowerBound: 4},
@@ -53,37 +53,37 @@ func TestCidrArrayTranscode(t *testing.T) {
}) })
} }
func TestCidrArraySet(t *testing.T) { func TestCIDRArraySet(t *testing.T) {
successfulTests := []struct { successfulTests := []struct {
source interface{} source interface{}
result pgtype.CidrArray result pgtype.CIDRArray
}{ }{
{ {
source: []*net.IPNet{mustParseCidr(t, "127.0.0.1/32")}, source: []*net.IPNet{mustParseCIDR(t, "127.0.0.1/32")},
result: pgtype.CidrArray{ result: pgtype.CIDRArray{
Elements: []pgtype.Cidr{{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}}, Elements: []pgtype.CIDR{{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}},
Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}}, Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}},
Status: pgtype.Present}, Status: pgtype.Present},
}, },
{ {
source: (([]*net.IPNet)(nil)), source: (([]*net.IPNet)(nil)),
result: pgtype.CidrArray{Status: pgtype.Null}, result: pgtype.CIDRArray{Status: pgtype.Null},
}, },
{ {
source: []net.IP{mustParseCidr(t, "127.0.0.1/32").IP}, source: []net.IP{mustParseCIDR(t, "127.0.0.1/32").IP},
result: pgtype.CidrArray{ result: pgtype.CIDRArray{
Elements: []pgtype.Cidr{{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}}, Elements: []pgtype.CIDR{{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}},
Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}}, Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}},
Status: pgtype.Present}, Status: pgtype.Present},
}, },
{ {
source: (([]net.IP)(nil)), source: (([]net.IP)(nil)),
result: pgtype.CidrArray{Status: pgtype.Null}, result: pgtype.CIDRArray{Status: pgtype.Null},
}, },
} }
for i, tt := range successfulTests { for i, tt := range successfulTests {
var r pgtype.CidrArray var r pgtype.CIDRArray
err := r.Set(tt.source) err := r.Set(tt.source)
if err != nil { if err != nil {
t.Errorf("%d: %v", i, err) t.Errorf("%d: %v", i, err)
@@ -95,27 +95,27 @@ func TestCidrArraySet(t *testing.T) {
} }
} }
func TestCidrArrayAssignTo(t *testing.T) { func TestCIDRArrayAssignTo(t *testing.T) {
var ipnetSlice []*net.IPNet var ipnetSlice []*net.IPNet
var ipSlice []net.IP var ipSlice []net.IP
simpleTests := []struct { simpleTests := []struct {
src pgtype.CidrArray src pgtype.CIDRArray
dst interface{} dst interface{}
expected interface{} expected interface{}
}{ }{
{ {
src: pgtype.CidrArray{ src: pgtype.CIDRArray{
Elements: []pgtype.Cidr{{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}}, Elements: []pgtype.CIDR{{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}},
Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}}, Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}},
Status: pgtype.Present, Status: pgtype.Present,
}, },
dst: &ipnetSlice, dst: &ipnetSlice,
expected: []*net.IPNet{mustParseCidr(t, "127.0.0.1/32")}, expected: []*net.IPNet{mustParseCIDR(t, "127.0.0.1/32")},
}, },
{ {
src: pgtype.CidrArray{ src: pgtype.CIDRArray{
Elements: []pgtype.Cidr{{Status: pgtype.Null}}, Elements: []pgtype.CIDR{{Status: pgtype.Null}},
Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}}, Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}},
Status: pgtype.Present, Status: pgtype.Present,
}, },
@@ -123,17 +123,17 @@ func TestCidrArrayAssignTo(t *testing.T) {
expected: []*net.IPNet{nil}, expected: []*net.IPNet{nil},
}, },
{ {
src: pgtype.CidrArray{ src: pgtype.CIDRArray{
Elements: []pgtype.Cidr{{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}}, Elements: []pgtype.CIDR{{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}},
Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}}, Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}},
Status: pgtype.Present, Status: pgtype.Present,
}, },
dst: &ipSlice, dst: &ipSlice,
expected: []net.IP{mustParseCidr(t, "127.0.0.1/32").IP}, expected: []net.IP{mustParseCIDR(t, "127.0.0.1/32").IP},
}, },
{ {
src: pgtype.CidrArray{ src: pgtype.CIDRArray{
Elements: []pgtype.Cidr{{Status: pgtype.Null}}, Elements: []pgtype.CIDR{{Status: pgtype.Null}},
Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}}, Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}},
Status: pgtype.Present, Status: pgtype.Present,
}, },
@@ -141,12 +141,12 @@ func TestCidrArrayAssignTo(t *testing.T) {
expected: []net.IP{nil}, expected: []net.IP{nil},
}, },
{ {
src: pgtype.CidrArray{Status: pgtype.Null}, src: pgtype.CIDRArray{Status: pgtype.Null},
dst: &ipnetSlice, dst: &ipnetSlice,
expected: (([]*net.IPNet)(nil)), expected: (([]*net.IPNet)(nil)),
}, },
{ {
src: pgtype.CidrArray{Status: pgtype.Null}, src: pgtype.CIDRArray{Status: pgtype.Null},
dst: &ipSlice, dst: &ipSlice,
expected: (([]net.IP)(nil)), expected: (([]net.IP)(nil)),
}, },
+18 -18
View File
@@ -18,7 +18,7 @@ func TestInetArrayTranscode(t *testing.T) {
}, },
&pgtype.InetArray{ &pgtype.InetArray{
Elements: []pgtype.Inet{ Elements: []pgtype.Inet{
pgtype.Inet{IPNet: mustParseCidr(t, "12.34.56.0/32"), Status: pgtype.Present}, pgtype.Inet{IPNet: mustParseCIDR(t, "12.34.56.0/32"), Status: pgtype.Present},
pgtype.Inet{Status: pgtype.Null}, pgtype.Inet{Status: pgtype.Null},
}, },
Dimensions: []pgtype.ArrayDimension{{Length: 2, LowerBound: 1}}, Dimensions: []pgtype.ArrayDimension{{Length: 2, LowerBound: 1}},
@@ -27,22 +27,22 @@ func TestInetArrayTranscode(t *testing.T) {
&pgtype.InetArray{Status: pgtype.Null}, &pgtype.InetArray{Status: pgtype.Null},
&pgtype.InetArray{ &pgtype.InetArray{
Elements: []pgtype.Inet{ Elements: []pgtype.Inet{
pgtype.Inet{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}, pgtype.Inet{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present},
pgtype.Inet{IPNet: mustParseCidr(t, "12.34.56.0/32"), Status: pgtype.Present}, pgtype.Inet{IPNet: mustParseCIDR(t, "12.34.56.0/32"), Status: pgtype.Present},
pgtype.Inet{IPNet: mustParseCidr(t, "192.168.0.1/32"), Status: pgtype.Present}, pgtype.Inet{IPNet: mustParseCIDR(t, "192.168.0.1/32"), Status: pgtype.Present},
pgtype.Inet{IPNet: mustParseCidr(t, "2607:f8b0:4009:80b::200e/128"), Status: pgtype.Present}, pgtype.Inet{IPNet: mustParseCIDR(t, "2607:f8b0:4009:80b::200e/128"), Status: pgtype.Present},
pgtype.Inet{Status: pgtype.Null}, pgtype.Inet{Status: pgtype.Null},
pgtype.Inet{IPNet: mustParseCidr(t, "255.0.0.0/8"), Status: pgtype.Present}, pgtype.Inet{IPNet: mustParseCIDR(t, "255.0.0.0/8"), Status: pgtype.Present},
}, },
Dimensions: []pgtype.ArrayDimension{{Length: 3, LowerBound: 1}, {Length: 2, LowerBound: 1}}, Dimensions: []pgtype.ArrayDimension{{Length: 3, LowerBound: 1}, {Length: 2, LowerBound: 1}},
Status: pgtype.Present, Status: pgtype.Present,
}, },
&pgtype.InetArray{ &pgtype.InetArray{
Elements: []pgtype.Inet{ Elements: []pgtype.Inet{
pgtype.Inet{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}, pgtype.Inet{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present},
pgtype.Inet{IPNet: mustParseCidr(t, "12.34.56.0/32"), Status: pgtype.Present}, pgtype.Inet{IPNet: mustParseCIDR(t, "12.34.56.0/32"), Status: pgtype.Present},
pgtype.Inet{IPNet: mustParseCidr(t, "192.168.0.1/32"), Status: pgtype.Present}, pgtype.Inet{IPNet: mustParseCIDR(t, "192.168.0.1/32"), Status: pgtype.Present},
pgtype.Inet{IPNet: mustParseCidr(t, "2607:f8b0:4009:80b::200e/128"), Status: pgtype.Present}, pgtype.Inet{IPNet: mustParseCIDR(t, "2607:f8b0:4009:80b::200e/128"), Status: pgtype.Present},
}, },
Dimensions: []pgtype.ArrayDimension{ Dimensions: []pgtype.ArrayDimension{
{Length: 2, LowerBound: 4}, {Length: 2, LowerBound: 4},
@@ -59,9 +59,9 @@ func TestInetArraySet(t *testing.T) {
result pgtype.InetArray result pgtype.InetArray
}{ }{
{ {
source: []*net.IPNet{mustParseCidr(t, "127.0.0.1/32")}, source: []*net.IPNet{mustParseCIDR(t, "127.0.0.1/32")},
result: pgtype.InetArray{ result: pgtype.InetArray{
Elements: []pgtype.Inet{{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}}, Elements: []pgtype.Inet{{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}},
Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}}, Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}},
Status: pgtype.Present}, Status: pgtype.Present},
}, },
@@ -70,9 +70,9 @@ func TestInetArraySet(t *testing.T) {
result: pgtype.InetArray{Status: pgtype.Null}, result: pgtype.InetArray{Status: pgtype.Null},
}, },
{ {
source: []net.IP{mustParseCidr(t, "127.0.0.1/32").IP}, source: []net.IP{mustParseCIDR(t, "127.0.0.1/32").IP},
result: pgtype.InetArray{ result: pgtype.InetArray{
Elements: []pgtype.Inet{{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}}, Elements: []pgtype.Inet{{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}},
Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}}, Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}},
Status: pgtype.Present}, Status: pgtype.Present},
}, },
@@ -106,12 +106,12 @@ func TestInetArrayAssignTo(t *testing.T) {
}{ }{
{ {
src: pgtype.InetArray{ src: pgtype.InetArray{
Elements: []pgtype.Inet{{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}}, Elements: []pgtype.Inet{{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}},
Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}}, Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}},
Status: pgtype.Present, Status: pgtype.Present,
}, },
dst: &ipnetSlice, dst: &ipnetSlice,
expected: []*net.IPNet{mustParseCidr(t, "127.0.0.1/32")}, expected: []*net.IPNet{mustParseCIDR(t, "127.0.0.1/32")},
}, },
{ {
src: pgtype.InetArray{ src: pgtype.InetArray{
@@ -124,12 +124,12 @@ func TestInetArrayAssignTo(t *testing.T) {
}, },
{ {
src: pgtype.InetArray{ src: pgtype.InetArray{
Elements: []pgtype.Inet{{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}}, Elements: []pgtype.Inet{{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}},
Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}}, Dimensions: []pgtype.ArrayDimension{{LowerBound: 1, Length: 1}},
Status: pgtype.Present, Status: pgtype.Present,
}, },
dst: &ipSlice, dst: &ipSlice,
expected: []net.IP{mustParseCidr(t, "127.0.0.1/32").IP}, expected: []net.IP{mustParseCIDR(t, "127.0.0.1/32").IP},
}, },
{ {
src: pgtype.InetArray{ src: pgtype.InetArray{
+18 -18
View File
@@ -12,16 +12,16 @@ import (
func TestInetTranscode(t *testing.T) { func TestInetTranscode(t *testing.T) {
for _, pgTypeName := range []string{"inet", "cidr"} { for _, pgTypeName := range []string{"inet", "cidr"} {
testutil.TestSuccessfulTranscode(t, pgTypeName, []interface{}{ testutil.TestSuccessfulTranscode(t, pgTypeName, []interface{}{
&pgtype.Inet{IPNet: mustParseCidr(t, "0.0.0.0/32"), Status: pgtype.Present}, &pgtype.Inet{IPNet: mustParseCIDR(t, "0.0.0.0/32"), Status: pgtype.Present},
&pgtype.Inet{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}, &pgtype.Inet{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present},
&pgtype.Inet{IPNet: mustParseCidr(t, "12.34.56.0/32"), Status: pgtype.Present}, &pgtype.Inet{IPNet: mustParseCIDR(t, "12.34.56.0/32"), Status: pgtype.Present},
&pgtype.Inet{IPNet: mustParseCidr(t, "192.168.1.0/24"), Status: pgtype.Present}, &pgtype.Inet{IPNet: mustParseCIDR(t, "192.168.1.0/24"), Status: pgtype.Present},
&pgtype.Inet{IPNet: mustParseCidr(t, "255.0.0.0/8"), Status: pgtype.Present}, &pgtype.Inet{IPNet: mustParseCIDR(t, "255.0.0.0/8"), Status: pgtype.Present},
&pgtype.Inet{IPNet: mustParseCidr(t, "255.255.255.255/32"), Status: pgtype.Present}, &pgtype.Inet{IPNet: mustParseCIDR(t, "255.255.255.255/32"), Status: pgtype.Present},
&pgtype.Inet{IPNet: mustParseCidr(t, "::/128"), Status: pgtype.Present}, &pgtype.Inet{IPNet: mustParseCIDR(t, "::/128"), Status: pgtype.Present},
&pgtype.Inet{IPNet: mustParseCidr(t, "::/0"), Status: pgtype.Present}, &pgtype.Inet{IPNet: mustParseCIDR(t, "::/0"), Status: pgtype.Present},
&pgtype.Inet{IPNet: mustParseCidr(t, "::1/128"), Status: pgtype.Present}, &pgtype.Inet{IPNet: mustParseCIDR(t, "::1/128"), Status: pgtype.Present},
&pgtype.Inet{IPNet: mustParseCidr(t, "2607:f8b0:4009:80b::200e/128"), Status: pgtype.Present}, &pgtype.Inet{IPNet: mustParseCIDR(t, "2607:f8b0:4009:80b::200e/128"), Status: pgtype.Present},
&pgtype.Inet{Status: pgtype.Null}, &pgtype.Inet{Status: pgtype.Null},
}) })
} }
@@ -32,9 +32,9 @@ func TestInetSet(t *testing.T) {
source interface{} source interface{}
result pgtype.Inet result pgtype.Inet
}{ }{
{source: mustParseCidr(t, "127.0.0.1/32"), result: pgtype.Inet{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}}, {source: mustParseCIDR(t, "127.0.0.1/32"), result: pgtype.Inet{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}},
{source: mustParseCidr(t, "127.0.0.1/32").IP, result: pgtype.Inet{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}}, {source: mustParseCIDR(t, "127.0.0.1/32").IP, result: pgtype.Inet{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}},
{source: "127.0.0.1/32", result: pgtype.Inet{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}}, {source: "127.0.0.1/32", result: pgtype.Inet{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}},
} }
for i, tt := range successfulTests { for i, tt := range successfulTests {
@@ -61,8 +61,8 @@ func TestInetAssignTo(t *testing.T) {
dst interface{} dst interface{}
expected interface{} expected interface{}
}{ }{
{src: pgtype.Inet{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}, dst: &ipnet, expected: *mustParseCidr(t, "127.0.0.1/32")}, {src: pgtype.Inet{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}, dst: &ipnet, expected: *mustParseCIDR(t, "127.0.0.1/32")},
{src: pgtype.Inet{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}, dst: &ip, expected: mustParseCidr(t, "127.0.0.1/32").IP}, {src: pgtype.Inet{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}, dst: &ip, expected: mustParseCIDR(t, "127.0.0.1/32").IP},
{src: pgtype.Inet{Status: pgtype.Null}, dst: &pipnet, expected: ((*net.IPNet)(nil))}, {src: pgtype.Inet{Status: pgtype.Null}, dst: &pipnet, expected: ((*net.IPNet)(nil))},
{src: pgtype.Inet{Status: pgtype.Null}, dst: &pip, expected: ((*net.IP)(nil))}, {src: pgtype.Inet{Status: pgtype.Null}, dst: &pip, expected: ((*net.IP)(nil))},
} }
@@ -83,8 +83,8 @@ func TestInetAssignTo(t *testing.T) {
dst interface{} dst interface{}
expected interface{} expected interface{}
}{ }{
{src: pgtype.Inet{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}, dst: &pipnet, expected: *mustParseCidr(t, "127.0.0.1/32")}, {src: pgtype.Inet{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}, dst: &pipnet, expected: *mustParseCIDR(t, "127.0.0.1/32")},
{src: pgtype.Inet{IPNet: mustParseCidr(t, "127.0.0.1/32"), Status: pgtype.Present}, dst: &pip, expected: mustParseCidr(t, "127.0.0.1/32").IP}, {src: pgtype.Inet{IPNet: mustParseCIDR(t, "127.0.0.1/32"), Status: pgtype.Present}, dst: &pip, expected: mustParseCIDR(t, "127.0.0.1/32").IP},
} }
for i, tt := range pointerAllocTests { for i, tt := range pointerAllocTests {
@@ -102,7 +102,7 @@ func TestInetAssignTo(t *testing.T) {
src pgtype.Inet src pgtype.Inet
dst interface{} dst interface{}
}{ }{
{src: pgtype.Inet{IPNet: mustParseCidr(t, "192.168.0.0/16"), Status: pgtype.Present}, dst: &ip}, {src: pgtype.Inet{IPNet: mustParseCIDR(t, "192.168.0.0/16"), Status: pgtype.Present}, dst: &ip},
{src: pgtype.Inet{Status: pgtype.Null}, dst: &ipnet}, {src: pgtype.Inet{Status: pgtype.Null}, dst: &ipnet},
} }
+10 -10
View File
@@ -16,12 +16,12 @@ const (
Int4OID = 23 Int4OID = 23
TextOID = 25 TextOID = 25
OIDOID = 26 OIDOID = 26
TidOID = 27 TIDOID = 27
XidOID = 28 XIDOID = 28
CidOID = 29 CIDOID = 29
JSONOID = 114 JSONOID = 114
CidrOID = 650 CIDROID = 650
CidrArrayOID = 651 CIDRArrayOID = 651
Float4OID = 700 Float4OID = 700
Float8OID = 701 Float8OID = 701
UnknownOID = 705 UnknownOID = 705
@@ -209,7 +209,7 @@ func init() {
"_aclitem": &ACLItemArray{}, "_aclitem": &ACLItemArray{},
"_bool": &BoolArray{}, "_bool": &BoolArray{},
"_bytea": &ByteaArray{}, "_bytea": &ByteaArray{},
"_cidr": &CidrArray{}, "_cidr": &CIDRArray{},
"_date": &DateArray{}, "_date": &DateArray{},
"_float4": &Float4Array{}, "_float4": &Float4Array{},
"_float8": &Float8Array{}, "_float8": &Float8Array{},
@@ -227,8 +227,8 @@ func init() {
"box": &Box{}, "box": &Box{},
"bytea": &Bytea{}, "bytea": &Bytea{},
"char": &QChar{}, "char": &QChar{},
"cid": &Cid{}, "cid": &CID{},
"cidr": &Cidr{}, "cidr": &CIDR{},
"circle": &Circle{}, "circle": &Circle{},
"date": &Date{}, "date": &Date{},
"daterange": &Daterange{}, "daterange": &Daterange{},
@@ -256,7 +256,7 @@ func init() {
"polygon": &Polygon{}, "polygon": &Polygon{},
"record": &Record{}, "record": &Record{},
"text": &Text{}, "text": &Text{},
"tid": &Tid{}, "tid": &TID{},
"timestamp": &Timestamp{}, "timestamp": &Timestamp{},
"timestamptz": &Timestamptz{}, "timestamptz": &Timestamptz{},
"tsrange": &Tsrange{}, "tsrange": &Tsrange{},
@@ -265,6 +265,6 @@ func init() {
"uuid": &UUID{}, "uuid": &UUID{},
"varbit": &Varbit{}, "varbit": &Varbit{},
"varchar": &Varchar{}, "varchar": &Varchar{},
"xid": &Xid{}, "xid": &XID{},
} }
} }
+1 -1
View File
@@ -20,7 +20,7 @@ type _float32Slice []float32
type _float64Slice []float64 type _float64Slice []float64
type _byteSlice []byte type _byteSlice []byte
func mustParseCidr(t testing.TB, s string) *net.IPNet { func mustParseCIDR(t testing.TB, s string) *net.IPNet {
_, ipnet, err := net.ParseCIDR(s) _, ipnet, err := net.ParseCIDR(s)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
+1 -1
View File
@@ -11,7 +11,7 @@ import (
) )
// pguint32 is the core type that is used to implement PostgreSQL types such as // pguint32 is the core type that is used to implement PostgreSQL types such as
// Cid and Xid. // CID and XID.
type pguint32 struct { type pguint32 struct {
Uint uint32 Uint uint32
Status Status Status Status
+17 -17
View File
@@ -10,7 +10,7 @@ import (
"github.com/jackc/pgx/pgio" "github.com/jackc/pgx/pgio"
) )
// Tid is PostgreSQL's Tuple Identifier type. // TID is PostgreSQL's Tuple Identifier type.
// //
// When one does // When one does
// //
@@ -21,17 +21,17 @@ import (
// It is currently implemented as a pair unsigned two byte integers. // It is currently implemented as a pair unsigned two byte integers.
// Its conversion functions can be found in src/backend/utils/adt/tid.c // Its conversion functions can be found in src/backend/utils/adt/tid.c
// in the PostgreSQL sources. // in the PostgreSQL sources.
type Tid struct { type TID struct {
BlockNumber uint32 BlockNumber uint32
OffsetNumber uint16 OffsetNumber uint16
Status Status Status Status
} }
func (dst *Tid) Set(src interface{}) error { func (dst *TID) Set(src interface{}) error {
return fmt.Errorf("cannot convert %v to Tid", src) return fmt.Errorf("cannot convert %v to TID", src)
} }
func (dst *Tid) Get() interface{} { func (dst *TID) Get() interface{} {
switch dst.Status { switch dst.Status {
case Present: case Present:
return dst return dst
@@ -42,13 +42,13 @@ func (dst *Tid) Get() interface{} {
} }
} }
func (src *Tid) AssignTo(dst interface{}) error { func (src *TID) AssignTo(dst interface{}) error {
return fmt.Errorf("cannot assign %v to %T", src, dst) return fmt.Errorf("cannot assign %v to %T", src, dst)
} }
func (dst *Tid) DecodeText(ci *ConnInfo, src []byte) error { func (dst *TID) DecodeText(ci *ConnInfo, src []byte) error {
if src == nil { if src == nil {
*dst = Tid{Status: Null} *dst = TID{Status: Null}
return nil return nil
} }
@@ -71,13 +71,13 @@ func (dst *Tid) DecodeText(ci *ConnInfo, src []byte) error {
return err return err
} }
*dst = Tid{BlockNumber: uint32(blockNumber), OffsetNumber: uint16(offsetNumber), Status: Present} *dst = TID{BlockNumber: uint32(blockNumber), OffsetNumber: uint16(offsetNumber), Status: Present}
return nil return nil
} }
func (dst *Tid) DecodeBinary(ci *ConnInfo, src []byte) error { func (dst *TID) DecodeBinary(ci *ConnInfo, src []byte) error {
if src == nil { if src == nil {
*dst = Tid{Status: Null} *dst = TID{Status: Null}
return nil return nil
} }
@@ -85,7 +85,7 @@ func (dst *Tid) DecodeBinary(ci *ConnInfo, src []byte) error {
return fmt.Errorf("invalid length for tid: %v", len(src)) return fmt.Errorf("invalid length for tid: %v", len(src))
} }
*dst = Tid{ *dst = TID{
BlockNumber: binary.BigEndian.Uint32(src), BlockNumber: binary.BigEndian.Uint32(src),
OffsetNumber: binary.BigEndian.Uint16(src[4:]), OffsetNumber: binary.BigEndian.Uint16(src[4:]),
Status: Present, Status: Present,
@@ -93,7 +93,7 @@ func (dst *Tid) DecodeBinary(ci *ConnInfo, src []byte) error {
return nil return nil
} }
func (src *Tid) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) { func (src *TID) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) {
switch src.Status { switch src.Status {
case Null: case Null:
return nil, nil return nil, nil
@@ -105,7 +105,7 @@ func (src *Tid) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) {
return buf, nil return buf, nil
} }
func (src *Tid) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) { func (src *TID) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) {
switch src.Status { switch src.Status {
case Null: case Null:
return nil, nil return nil, nil
@@ -119,9 +119,9 @@ func (src *Tid) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) {
} }
// Scan implements the database/sql Scanner interface. // Scan implements the database/sql Scanner interface.
func (dst *Tid) Scan(src interface{}) error { func (dst *TID) Scan(src interface{}) error {
if src == nil { if src == nil {
*dst = Tid{Status: Null} *dst = TID{Status: Null}
return nil return nil
} }
@@ -138,6 +138,6 @@ func (dst *Tid) Scan(src interface{}) error {
} }
// Value implements the database/sql/driver Valuer interface. // Value implements the database/sql/driver Valuer interface.
func (src *Tid) Value() (driver.Value, error) { func (src *TID) Value() (driver.Value, error) {
return EncodeValueText(src) return EncodeValueText(src)
} }
+4 -4
View File
@@ -7,10 +7,10 @@ import (
"github.com/jackc/pgx/pgtype/testutil" "github.com/jackc/pgx/pgtype/testutil"
) )
func TestTidTranscode(t *testing.T) { func TestTIDTranscode(t *testing.T) {
testutil.TestSuccessfulTranscode(t, "tid", []interface{}{ testutil.TestSuccessfulTranscode(t, "tid", []interface{}{
&pgtype.Tid{BlockNumber: 42, OffsetNumber: 43, Status: pgtype.Present}, &pgtype.TID{BlockNumber: 42, OffsetNumber: 43, Status: pgtype.Present},
&pgtype.Tid{BlockNumber: 4294967295, OffsetNumber: 65535, Status: pgtype.Present}, &pgtype.TID{BlockNumber: 4294967295, OffsetNumber: 65535, Status: pgtype.Present},
&pgtype.Tid{Status: pgtype.Null}, &pgtype.TID{Status: pgtype.Null},
}) })
} }
+1 -1
View File
@@ -8,7 +8,7 @@ erb pgtype_array_type=TimestampArray pgtype_element_type=Timestamp go_array_type
erb pgtype_array_type=Float4Array pgtype_element_type=Float4 go_array_types=[]float32 element_type_name=float4 text_null=NULL binary_format=true typed_array.go.erb > float4_array.go erb pgtype_array_type=Float4Array pgtype_element_type=Float4 go_array_types=[]float32 element_type_name=float4 text_null=NULL binary_format=true typed_array.go.erb > float4_array.go
erb pgtype_array_type=Float8Array pgtype_element_type=Float8 go_array_types=[]float64 element_type_name=float8 text_null=NULL binary_format=true typed_array.go.erb > float8_array.go erb pgtype_array_type=Float8Array pgtype_element_type=Float8 go_array_types=[]float64 element_type_name=float8 text_null=NULL binary_format=true typed_array.go.erb > float8_array.go
erb pgtype_array_type=InetArray pgtype_element_type=Inet go_array_types=[]*net.IPNet,[]net.IP element_type_name=inet text_null=NULL binary_format=true typed_array.go.erb > inet_array.go erb pgtype_array_type=InetArray pgtype_element_type=Inet go_array_types=[]*net.IPNet,[]net.IP element_type_name=inet text_null=NULL binary_format=true typed_array.go.erb > inet_array.go
erb pgtype_array_type=CidrArray pgtype_element_type=Cidr go_array_types=[]*net.IPNet,[]net.IP element_type_name=cidr text_null=NULL binary_format=true typed_array.go.erb > cidr_array.go erb pgtype_array_type=CIDRArray pgtype_element_type=CIDR go_array_types=[]*net.IPNet,[]net.IP element_type_name=cidr text_null=NULL binary_format=true typed_array.go.erb > cidr_array.go
erb pgtype_array_type=TextArray pgtype_element_type=Text go_array_types=[]string element_type_name=text text_null='"NULL"' binary_format=true typed_array.go.erb > text_array.go erb pgtype_array_type=TextArray pgtype_element_type=Text go_array_types=[]string element_type_name=text text_null='"NULL"' binary_format=true typed_array.go.erb > text_array.go
erb pgtype_array_type=VarcharArray pgtype_element_type=Varchar go_array_types=[]string element_type_name=varchar text_null='"NULL"' binary_format=true typed_array.go.erb > varchar_array.go erb pgtype_array_type=VarcharArray pgtype_element_type=Varchar go_array_types=[]string element_type_name=varchar text_null='"NULL"' binary_format=true typed_array.go.erb > varchar_array.go
erb pgtype_array_type=ByteaArray pgtype_element_type=Bytea go_array_types=[][]byte element_type_name=bytea text_null=NULL binary_format=true typed_array.go.erb > bytea_array.go erb pgtype_array_type=ByteaArray pgtype_element_type=Bytea go_array_types=[][]byte element_type_name=bytea text_null=NULL binary_format=true typed_array.go.erb > bytea_array.go
+13 -13
View File
@@ -4,7 +4,7 @@ import (
"database/sql/driver" "database/sql/driver"
) )
// Xid is PostgreSQL's Transaction ID type. // XID is PostgreSQL's Transaction ID type.
// //
// In later versions of PostgreSQL, it is the type used for the backend_xid // In later versions of PostgreSQL, it is the type used for the backend_xid
// and backend_xmin columns of the pg_stat_activity system view. // and backend_xmin columns of the pg_stat_activity system view.
@@ -18,47 +18,47 @@ import (
// It is currently implemented as an unsigned four byte integer. // It is currently implemented as an unsigned four byte integer.
// Its definition can be found in src/include/postgres_ext.h as TransactionId // Its definition can be found in src/include/postgres_ext.h as TransactionId
// in the PostgreSQL sources. // in the PostgreSQL sources.
type Xid pguint32 type XID pguint32
// Set converts from src to dst. Note that as Xid is not a general // Set converts from src to dst. Note that as XID is not a general
// number type Set does not do automatic type conversion as other number // number type Set does not do automatic type conversion as other number
// types do. // types do.
func (dst *Xid) Set(src interface{}) error { func (dst *XID) Set(src interface{}) error {
return (*pguint32)(dst).Set(src) return (*pguint32)(dst).Set(src)
} }
func (dst *Xid) Get() interface{} { func (dst *XID) Get() interface{} {
return (*pguint32)(dst).Get() return (*pguint32)(dst).Get()
} }
// AssignTo assigns from src to dst. Note that as Xid is not a general number // AssignTo assigns from src to dst. Note that as XID is not a general number
// type AssignTo does not do automatic type conversion as other number types do. // type AssignTo does not do automatic type conversion as other number types do.
func (src *Xid) AssignTo(dst interface{}) error { func (src *XID) AssignTo(dst interface{}) error {
return (*pguint32)(src).AssignTo(dst) return (*pguint32)(src).AssignTo(dst)
} }
func (dst *Xid) DecodeText(ci *ConnInfo, src []byte) error { func (dst *XID) DecodeText(ci *ConnInfo, src []byte) error {
return (*pguint32)(dst).DecodeText(ci, src) return (*pguint32)(dst).DecodeText(ci, src)
} }
func (dst *Xid) DecodeBinary(ci *ConnInfo, src []byte) error { func (dst *XID) DecodeBinary(ci *ConnInfo, src []byte) error {
return (*pguint32)(dst).DecodeBinary(ci, src) return (*pguint32)(dst).DecodeBinary(ci, src)
} }
func (src *Xid) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) { func (src *XID) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) {
return (*pguint32)(src).EncodeText(ci, buf) return (*pguint32)(src).EncodeText(ci, buf)
} }
func (src *Xid) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) { func (src *XID) EncodeBinary(ci *ConnInfo, buf []byte) ([]byte, error) {
return (*pguint32)(src).EncodeBinary(ci, buf) return (*pguint32)(src).EncodeBinary(ci, buf)
} }
// Scan implements the database/sql Scanner interface. // Scan implements the database/sql Scanner interface.
func (dst *Xid) Scan(src interface{}) error { func (dst *XID) Scan(src interface{}) error {
return (*pguint32)(dst).Scan(src) return (*pguint32)(dst).Scan(src)
} }
// Value implements the database/sql/driver Valuer interface. // Value implements the database/sql/driver Valuer interface.
func (src *Xid) Value() (driver.Value, error) { func (src *XID) Value() (driver.Value, error) {
return (*pguint32)(src).Value() return (*pguint32)(src).Value()
} }
+15 -15
View File
@@ -8,11 +8,11 @@ import (
"github.com/jackc/pgx/pgtype/testutil" "github.com/jackc/pgx/pgtype/testutil"
) )
func TestXidTranscode(t *testing.T) { func TestXIDTranscode(t *testing.T) {
pgTypeName := "xid" pgTypeName := "xid"
values := []interface{}{ values := []interface{}{
&pgtype.Xid{Uint: 42, Status: pgtype.Present}, &pgtype.XID{Uint: 42, Status: pgtype.Present},
&pgtype.Xid{Status: pgtype.Null}, &pgtype.XID{Status: pgtype.Null},
} }
eqFunc := func(a, b interface{}) bool { eqFunc := func(a, b interface{}) bool {
return reflect.DeepEqual(a, b) return reflect.DeepEqual(a, b)
@@ -28,16 +28,16 @@ func TestXidTranscode(t *testing.T) {
} }
} }
func TestXidSet(t *testing.T) { func TestXIDSet(t *testing.T) {
successfulTests := []struct { successfulTests := []struct {
source interface{} source interface{}
result pgtype.Xid result pgtype.XID
}{ }{
{source: uint32(1), result: pgtype.Xid{Uint: 1, Status: pgtype.Present}}, {source: uint32(1), result: pgtype.XID{Uint: 1, Status: pgtype.Present}},
} }
for i, tt := range successfulTests { for i, tt := range successfulTests {
var r pgtype.Xid var r pgtype.XID
err := r.Set(tt.source) err := r.Set(tt.source)
if err != nil { if err != nil {
t.Errorf("%d: %v", i, err) t.Errorf("%d: %v", i, err)
@@ -49,17 +49,17 @@ func TestXidSet(t *testing.T) {
} }
} }
func TestXidAssignTo(t *testing.T) { func TestXIDAssignTo(t *testing.T) {
var ui32 uint32 var ui32 uint32
var pui32 *uint32 var pui32 *uint32
simpleTests := []struct { simpleTests := []struct {
src pgtype.Xid src pgtype.XID
dst interface{} dst interface{}
expected interface{} expected interface{}
}{ }{
{src: pgtype.Xid{Uint: 42, Status: pgtype.Present}, dst: &ui32, expected: uint32(42)}, {src: pgtype.XID{Uint: 42, Status: pgtype.Present}, dst: &ui32, expected: uint32(42)},
{src: pgtype.Xid{Status: pgtype.Null}, dst: &pui32, expected: ((*uint32)(nil))}, {src: pgtype.XID{Status: pgtype.Null}, dst: &pui32, expected: ((*uint32)(nil))},
} }
for i, tt := range simpleTests { for i, tt := range simpleTests {
@@ -74,11 +74,11 @@ func TestXidAssignTo(t *testing.T) {
} }
pointerAllocTests := []struct { pointerAllocTests := []struct {
src pgtype.Xid src pgtype.XID
dst interface{} dst interface{}
expected interface{} expected interface{}
}{ }{
{src: pgtype.Xid{Uint: 42, Status: pgtype.Present}, dst: &pui32, expected: uint32(42)}, {src: pgtype.XID{Uint: 42, Status: pgtype.Present}, dst: &pui32, expected: uint32(42)},
} }
for i, tt := range pointerAllocTests { for i, tt := range pointerAllocTests {
@@ -93,10 +93,10 @@ func TestXidAssignTo(t *testing.T) {
} }
errorTests := []struct { errorTests := []struct {
src pgtype.Xid src pgtype.XID
dst interface{} dst interface{}
}{ }{
{src: pgtype.Xid{Status: pgtype.Null}, dst: &ui32}, {src: pgtype.XID{Status: pgtype.Null}, dst: &ui32},
} }
for i, tt := range errorTests { for i, tt := range errorTests {
+6 -6
View File
@@ -100,7 +100,7 @@ func init() {
databaseSqlOIDs = make(map[pgtype.OID]bool) databaseSqlOIDs = make(map[pgtype.OID]bool)
databaseSqlOIDs[pgtype.BoolOID] = true databaseSqlOIDs[pgtype.BoolOID] = true
databaseSqlOIDs[pgtype.ByteaOID] = true databaseSqlOIDs[pgtype.ByteaOID] = true
databaseSqlOIDs[pgtype.CidOID] = true databaseSqlOIDs[pgtype.CIDOID] = true
databaseSqlOIDs[pgtype.DateOID] = true databaseSqlOIDs[pgtype.DateOID] = true
databaseSqlOIDs[pgtype.Float4OID] = true databaseSqlOIDs[pgtype.Float4OID] = true
databaseSqlOIDs[pgtype.Float8OID] = true databaseSqlOIDs[pgtype.Float8OID] = true
@@ -110,7 +110,7 @@ func init() {
databaseSqlOIDs[pgtype.OIDOID] = true databaseSqlOIDs[pgtype.OIDOID] = true
databaseSqlOIDs[pgtype.TimestampOID] = true databaseSqlOIDs[pgtype.TimestampOID] = true
databaseSqlOIDs[pgtype.TimestamptzOID] = true databaseSqlOIDs[pgtype.TimestamptzOID] = true
databaseSqlOIDs[pgtype.XidOID] = true databaseSqlOIDs[pgtype.XIDOID] = true
} }
type Driver struct { type Driver struct {
@@ -432,8 +432,8 @@ func (r *Rows) Next(dest []driver.Value) error {
r.values[i] = &pgtype.Bool{} r.values[i] = &pgtype.Bool{}
case pgtype.ByteaOID: case pgtype.ByteaOID:
r.values[i] = &pgtype.Bytea{} r.values[i] = &pgtype.Bytea{}
case pgtype.CidOID: case pgtype.CIDOID:
r.values[i] = &pgtype.Cid{} r.values[i] = &pgtype.CID{}
case pgtype.DateOID: case pgtype.DateOID:
r.values[i] = &pgtype.Date{} r.values[i] = &pgtype.Date{}
case pgtype.Float4OID: case pgtype.Float4OID:
@@ -452,8 +452,8 @@ func (r *Rows) Next(dest []driver.Value) error {
r.values[i] = &pgtype.Timestamp{} r.values[i] = &pgtype.Timestamp{}
case pgtype.TimestamptzOID: case pgtype.TimestamptzOID:
r.values[i] = &pgtype.Timestamptz{} r.values[i] = &pgtype.Timestamptz{}
case pgtype.XidOID: case pgtype.XIDOID:
r.values[i] = &pgtype.Xid{} r.values[i] = &pgtype.XID{}
default: default:
r.values[i] = &pgtype.GenericText{} r.values[i] = &pgtype.GenericText{}
} }
+53 -53
View File
@@ -225,7 +225,7 @@ func testJSONStruct(t *testing.T, conn *pgx.Conn, typename string) {
} }
} }
func mustParseCidr(t *testing.T, s string) *net.IPNet { func mustParseCIDR(t *testing.T, s string) *net.IPNet {
_, ipnet, err := net.ParseCIDR(s) _, ipnet, err := net.ParseCIDR(s)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@@ -260,7 +260,7 @@ func TestStringToNotTextTypeTranscode(t *testing.T) {
} }
} }
func TestInetCidrTranscodeIPNet(t *testing.T) { func TestInetCIDRTranscodeIPNet(t *testing.T) {
t.Parallel() t.Parallel()
conn := mustConnect(t, *defaultConnConfig) conn := mustConnect(t, *defaultConnConfig)
@@ -270,26 +270,26 @@ func TestInetCidrTranscodeIPNet(t *testing.T) {
sql string sql string
value *net.IPNet value *net.IPNet
}{ }{
{"select $1::inet", mustParseCidr(t, "0.0.0.0/32")}, {"select $1::inet", mustParseCIDR(t, "0.0.0.0/32")},
{"select $1::inet", mustParseCidr(t, "127.0.0.1/32")}, {"select $1::inet", mustParseCIDR(t, "127.0.0.1/32")},
{"select $1::inet", mustParseCidr(t, "12.34.56.0/32")}, {"select $1::inet", mustParseCIDR(t, "12.34.56.0/32")},
{"select $1::inet", mustParseCidr(t, "192.168.1.0/24")}, {"select $1::inet", mustParseCIDR(t, "192.168.1.0/24")},
{"select $1::inet", mustParseCidr(t, "255.0.0.0/8")}, {"select $1::inet", mustParseCIDR(t, "255.0.0.0/8")},
{"select $1::inet", mustParseCidr(t, "255.255.255.255/32")}, {"select $1::inet", mustParseCIDR(t, "255.255.255.255/32")},
{"select $1::inet", mustParseCidr(t, "::/128")}, {"select $1::inet", mustParseCIDR(t, "::/128")},
{"select $1::inet", mustParseCidr(t, "::/0")}, {"select $1::inet", mustParseCIDR(t, "::/0")},
{"select $1::inet", mustParseCidr(t, "::1/128")}, {"select $1::inet", mustParseCIDR(t, "::1/128")},
{"select $1::inet", mustParseCidr(t, "2607:f8b0:4009:80b::200e/128")}, {"select $1::inet", mustParseCIDR(t, "2607:f8b0:4009:80b::200e/128")},
{"select $1::cidr", mustParseCidr(t, "0.0.0.0/32")}, {"select $1::cidr", mustParseCIDR(t, "0.0.0.0/32")},
{"select $1::cidr", mustParseCidr(t, "127.0.0.1/32")}, {"select $1::cidr", mustParseCIDR(t, "127.0.0.1/32")},
{"select $1::cidr", mustParseCidr(t, "12.34.56.0/32")}, {"select $1::cidr", mustParseCIDR(t, "12.34.56.0/32")},
{"select $1::cidr", mustParseCidr(t, "192.168.1.0/24")}, {"select $1::cidr", mustParseCIDR(t, "192.168.1.0/24")},
{"select $1::cidr", mustParseCidr(t, "255.0.0.0/8")}, {"select $1::cidr", mustParseCIDR(t, "255.0.0.0/8")},
{"select $1::cidr", mustParseCidr(t, "255.255.255.255/32")}, {"select $1::cidr", mustParseCIDR(t, "255.255.255.255/32")},
{"select $1::cidr", mustParseCidr(t, "::/128")}, {"select $1::cidr", mustParseCIDR(t, "::/128")},
{"select $1::cidr", mustParseCidr(t, "::/0")}, {"select $1::cidr", mustParseCIDR(t, "::/0")},
{"select $1::cidr", mustParseCidr(t, "::1/128")}, {"select $1::cidr", mustParseCIDR(t, "::1/128")},
{"select $1::cidr", mustParseCidr(t, "2607:f8b0:4009:80b::200e/128")}, {"select $1::cidr", mustParseCIDR(t, "2607:f8b0:4009:80b::200e/128")},
} }
for i, tt := range tests { for i, tt := range tests {
@@ -309,7 +309,7 @@ func TestInetCidrTranscodeIPNet(t *testing.T) {
} }
} }
func TestInetCidrTranscodeIP(t *testing.T) { func TestInetCIDRTranscodeIP(t *testing.T) {
t.Parallel() t.Parallel()
conn := mustConnect(t, *defaultConnConfig) conn := mustConnect(t, *defaultConnConfig)
@@ -353,8 +353,8 @@ func TestInetCidrTranscodeIP(t *testing.T) {
sql string sql string
value *net.IPNet value *net.IPNet
}{ }{
{"select $1::inet", mustParseCidr(t, "192.168.1.0/24")}, {"select $1::inet", mustParseCIDR(t, "192.168.1.0/24")},
{"select $1::cidr", mustParseCidr(t, "192.168.1.0/24")}, {"select $1::cidr", mustParseCIDR(t, "192.168.1.0/24")},
} }
for i, tt := range failTests { for i, tt := range failTests {
var actual net.IP var actual net.IP
@@ -369,7 +369,7 @@ func TestInetCidrTranscodeIP(t *testing.T) {
} }
} }
func TestInetCidrArrayTranscodeIPNet(t *testing.T) { func TestInetCIDRArrayTranscodeIPNet(t *testing.T) {
t.Parallel() t.Parallel()
conn := mustConnect(t, *defaultConnConfig) conn := mustConnect(t, *defaultConnConfig)
@@ -382,31 +382,31 @@ func TestInetCidrArrayTranscodeIPNet(t *testing.T) {
{ {
"select $1::inet[]", "select $1::inet[]",
[]*net.IPNet{ []*net.IPNet{
mustParseCidr(t, "0.0.0.0/32"), mustParseCIDR(t, "0.0.0.0/32"),
mustParseCidr(t, "127.0.0.1/32"), mustParseCIDR(t, "127.0.0.1/32"),
mustParseCidr(t, "12.34.56.0/32"), mustParseCIDR(t, "12.34.56.0/32"),
mustParseCidr(t, "192.168.1.0/24"), mustParseCIDR(t, "192.168.1.0/24"),
mustParseCidr(t, "255.0.0.0/8"), mustParseCIDR(t, "255.0.0.0/8"),
mustParseCidr(t, "255.255.255.255/32"), mustParseCIDR(t, "255.255.255.255/32"),
mustParseCidr(t, "::/128"), mustParseCIDR(t, "::/128"),
mustParseCidr(t, "::/0"), mustParseCIDR(t, "::/0"),
mustParseCidr(t, "::1/128"), mustParseCIDR(t, "::1/128"),
mustParseCidr(t, "2607:f8b0:4009:80b::200e/128"), mustParseCIDR(t, "2607:f8b0:4009:80b::200e/128"),
}, },
}, },
{ {
"select $1::cidr[]", "select $1::cidr[]",
[]*net.IPNet{ []*net.IPNet{
mustParseCidr(t, "0.0.0.0/32"), mustParseCIDR(t, "0.0.0.0/32"),
mustParseCidr(t, "127.0.0.1/32"), mustParseCIDR(t, "127.0.0.1/32"),
mustParseCidr(t, "12.34.56.0/32"), mustParseCIDR(t, "12.34.56.0/32"),
mustParseCidr(t, "192.168.1.0/24"), mustParseCIDR(t, "192.168.1.0/24"),
mustParseCidr(t, "255.0.0.0/8"), mustParseCIDR(t, "255.0.0.0/8"),
mustParseCidr(t, "255.255.255.255/32"), mustParseCIDR(t, "255.255.255.255/32"),
mustParseCidr(t, "::/128"), mustParseCIDR(t, "::/128"),
mustParseCidr(t, "::/0"), mustParseCIDR(t, "::/0"),
mustParseCidr(t, "::1/128"), mustParseCIDR(t, "::1/128"),
mustParseCidr(t, "2607:f8b0:4009:80b::200e/128"), mustParseCIDR(t, "2607:f8b0:4009:80b::200e/128"),
}, },
}, },
} }
@@ -428,7 +428,7 @@ func TestInetCidrArrayTranscodeIPNet(t *testing.T) {
} }
} }
func TestInetCidrArrayTranscodeIP(t *testing.T) { func TestInetCIDRArrayTranscodeIP(t *testing.T) {
t.Parallel() t.Parallel()
conn := mustConnect(t, *defaultConnConfig) conn := mustConnect(t, *defaultConnConfig)
@@ -483,15 +483,15 @@ func TestInetCidrArrayTranscodeIP(t *testing.T) {
{ {
"select $1::inet[]", "select $1::inet[]",
[]*net.IPNet{ []*net.IPNet{
mustParseCidr(t, "12.34.56.0/32"), mustParseCIDR(t, "12.34.56.0/32"),
mustParseCidr(t, "192.168.1.0/24"), mustParseCIDR(t, "192.168.1.0/24"),
}, },
}, },
{ {
"select $1::cidr[]", "select $1::cidr[]",
[]*net.IPNet{ []*net.IPNet{
mustParseCidr(t, "12.34.56.0/32"), mustParseCIDR(t, "12.34.56.0/32"),
mustParseCidr(t, "192.168.1.0/24"), mustParseCIDR(t, "192.168.1.0/24"),
}, },
}, },
} }
@@ -509,7 +509,7 @@ func TestInetCidrArrayTranscodeIP(t *testing.T) {
} }
} }
func TestInetCidrTranscodeWithJustIP(t *testing.T) { func TestInetCIDRTranscodeWithJustIP(t *testing.T) {
t.Parallel() t.Parallel()
conn := mustConnect(t, *defaultConnConfig) conn := mustConnect(t, *defaultConnConfig)
@@ -534,7 +534,7 @@ func TestInetCidrTranscodeWithJustIP(t *testing.T) {
} }
for i, tt := range tests { for i, tt := range tests {
expected := mustParseCidr(t, tt.value) expected := mustParseCIDR(t, tt.value)
var actual net.IPNet var actual net.IPNet
err := conn.QueryRow(tt.sql, expected.IP).Scan(&actual) err := conn.QueryRow(tt.sql, expected.IP).Scan(&actual)