mirror of https://github.com/jackc/pgx.git
Parse array header to empty slices instead of nils
parent
bcc0af3f56
commit
1334d45d71
|
@ -58,9 +58,7 @@ func (dst *ArrayHeader) DecodeBinary(ci *ConnInfo, src []byte) (int, error) {
|
|||
dst.ElementOID = binary.BigEndian.Uint32(src[rp:])
|
||||
rp += 4
|
||||
|
||||
if numDims > 0 {
|
||||
dst.Dimensions = make([]ArrayDimension, numDims)
|
||||
}
|
||||
dst.Dimensions = make([]ArrayDimension, numDims)
|
||||
if len(src) < 12+numDims*8 {
|
||||
return 0, fmt.Errorf("array header too short for %d dimensions: %d", numDims, len(src))
|
||||
}
|
||||
|
@ -101,7 +99,11 @@ type UntypedTextArray struct {
|
|||
}
|
||||
|
||||
func ParseUntypedTextArray(src string) (*UntypedTextArray, error) {
|
||||
dst := &UntypedTextArray{}
|
||||
dst := &UntypedTextArray{
|
||||
Elements: []string{},
|
||||
Quoted: []bool{},
|
||||
Dimensions: []ArrayDimension{},
|
||||
}
|
||||
|
||||
buf := bytes.NewBufferString(src)
|
||||
|
||||
|
@ -234,7 +236,6 @@ func ParseUntypedTextArray(src string) (*UntypedTextArray, error) {
|
|||
}
|
||||
|
||||
if len(dst.Elements) == 0 {
|
||||
dst.Dimensions = nil
|
||||
} else if len(explicitDimensions) > 0 {
|
||||
dst.Dimensions = explicitDimensions
|
||||
} else {
|
||||
|
|
|
@ -238,12 +238,6 @@ func (c *ArrayCodec) decodeBinary(ci *ConnInfo, arrayOID uint32, src []byte, arr
|
|||
return err
|
||||
}
|
||||
|
||||
// TODO - ArrayHeader.DecodeBinary should do this. But doing this there breaks old array code. Leave until old code
|
||||
// can be removed.
|
||||
if arrayHeader.Dimensions == nil {
|
||||
arrayHeader.Dimensions = []ArrayDimension{}
|
||||
}
|
||||
|
||||
err = array.SetDimensions(arrayHeader.Dimensions)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -283,12 +277,6 @@ func (c *ArrayCodec) decodeText(ci *ConnInfo, arrayOID uint32, src []byte, array
|
|||
return err
|
||||
}
|
||||
|
||||
// TODO - ParseUntypedTextArray should do this. But doing this there breaks old array code. Leave until old code
|
||||
// can be removed.
|
||||
if uta.Dimensions == nil {
|
||||
uta.Dimensions = []ArrayDimension{}
|
||||
}
|
||||
|
||||
err = array.SetDimensions(uta.Dimensions)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -15,9 +15,9 @@ func TestParseUntypedTextArray(t *testing.T) {
|
|||
{
|
||||
source: "{}",
|
||||
result: pgtype.UntypedTextArray{
|
||||
Elements: nil,
|
||||
Quoted: nil,
|
||||
Dimensions: nil,
|
||||
Elements: []string{},
|
||||
Quoted: []bool{},
|
||||
Dimensions: []pgtype.ArrayDimension{},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue