diff --git a/array.go b/array.go index 3d5930c1..174007c1 100644 --- a/array.go +++ b/array.go @@ -305,7 +305,7 @@ func arrayParseInteger(buf *bytes.Buffer) (int32, error) { return 0, err } - if '0' <= r && r <= '9' { + if ('0' <= r && r <= '9') || r == '-' { s.WriteRune(r) } else { buf.UnreadRune() diff --git a/array_test.go b/array_test.go index d2120677..f1fe90f4 100644 --- a/array_test.go +++ b/array_test.go @@ -100,6 +100,14 @@ func TestParseUntypedTextArray(t *testing.T) { }, }, }, + { + source: "[-4:-2]={1,2,3}", + result: pgtype.UntypedTextArray{ + Elements: []string{"1", "2", "3"}, + Quoted: []bool{false, false, false}, + Dimensions: []pgtype.ArrayDimension{{Length: 3, LowerBound: -4}}, + }, + }, } for i, tt := range tests {