@@ -12,6 +12,8 @@ func TestInt4rangeTranscode(t *testing.T) {
|
|||||||
&pgtype.Int4range{LowerType: pgtype.Empty, UpperType: pgtype.Empty, Status: pgtype.Present},
|
&pgtype.Int4range{LowerType: pgtype.Empty, UpperType: pgtype.Empty, Status: pgtype.Present},
|
||||||
&pgtype.Int4range{Lower: pgtype.Int4{Int: 1, Status: pgtype.Present}, Upper: pgtype.Int4{Int: 10, Status: pgtype.Present}, LowerType: pgtype.Inclusive, UpperType: pgtype.Exclusive, Status: pgtype.Present},
|
&pgtype.Int4range{Lower: pgtype.Int4{Int: 1, Status: pgtype.Present}, Upper: pgtype.Int4{Int: 10, Status: pgtype.Present}, LowerType: pgtype.Inclusive, UpperType: pgtype.Exclusive, Status: pgtype.Present},
|
||||||
&pgtype.Int4range{Lower: pgtype.Int4{Int: -42, Status: pgtype.Present}, Upper: pgtype.Int4{Int: -5, Status: pgtype.Present}, LowerType: pgtype.Inclusive, UpperType: pgtype.Exclusive, Status: pgtype.Present},
|
&pgtype.Int4range{Lower: pgtype.Int4{Int: -42, Status: pgtype.Present}, Upper: pgtype.Int4{Int: -5, Status: pgtype.Present}, LowerType: pgtype.Inclusive, UpperType: pgtype.Exclusive, Status: pgtype.Present},
|
||||||
|
&pgtype.Int4range{Lower: pgtype.Int4{Int: 1, Status: pgtype.Present}, LowerType: pgtype.Inclusive, UpperType: pgtype.Unbounded, Status: pgtype.Present},
|
||||||
|
&pgtype.Int4range{Upper: pgtype.Int4{Int: 1, Status: pgtype.Present}, LowerType: pgtype.Unbounded, UpperType: pgtype.Exclusive, Status: pgtype.Present},
|
||||||
&pgtype.Int4range{Status: pgtype.Null},
|
&pgtype.Int4range{Status: pgtype.Null},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ func TestInt8rangeTranscode(t *testing.T) {
|
|||||||
&pgtype.Int8range{LowerType: pgtype.Empty, UpperType: pgtype.Empty, Status: pgtype.Present},
|
&pgtype.Int8range{LowerType: pgtype.Empty, UpperType: pgtype.Empty, Status: pgtype.Present},
|
||||||
&pgtype.Int8range{Lower: pgtype.Int8{Int: 1, Status: pgtype.Present}, Upper: pgtype.Int8{Int: 10, Status: pgtype.Present}, LowerType: pgtype.Inclusive, UpperType: pgtype.Exclusive, Status: pgtype.Present},
|
&pgtype.Int8range{Lower: pgtype.Int8{Int: 1, Status: pgtype.Present}, Upper: pgtype.Int8{Int: 10, Status: pgtype.Present}, LowerType: pgtype.Inclusive, UpperType: pgtype.Exclusive, Status: pgtype.Present},
|
||||||
&pgtype.Int8range{Lower: pgtype.Int8{Int: -42, Status: pgtype.Present}, Upper: pgtype.Int8{Int: -5, Status: pgtype.Present}, LowerType: pgtype.Inclusive, UpperType: pgtype.Exclusive, Status: pgtype.Present},
|
&pgtype.Int8range{Lower: pgtype.Int8{Int: -42, Status: pgtype.Present}, Upper: pgtype.Int8{Int: -5, Status: pgtype.Present}, LowerType: pgtype.Inclusive, UpperType: pgtype.Exclusive, Status: pgtype.Present},
|
||||||
|
&pgtype.Int8range{Lower: pgtype.Int8{Int: 1, Status: pgtype.Present}, LowerType: pgtype.Inclusive, UpperType: pgtype.Unbounded, Status: pgtype.Present},
|
||||||
|
&pgtype.Int8range{Upper: pgtype.Int8{Int: 1, Status: pgtype.Present}, LowerType: pgtype.Unbounded, UpperType: pgtype.Exclusive, Status: pgtype.Present},
|
||||||
&pgtype.Int8range{Status: pgtype.Null},
|
&pgtype.Int8range{Status: pgtype.Null},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,18 @@ func TestNumrangeTranscode(t *testing.T) {
|
|||||||
UpperType: pgtype.Exclusive,
|
UpperType: pgtype.Exclusive,
|
||||||
Status: pgtype.Present,
|
Status: pgtype.Present,
|
||||||
},
|
},
|
||||||
|
&pgtype.Numrange{
|
||||||
|
Lower: pgtype.Numeric{Int: big.NewInt(-42), Exp: 1, Status: pgtype.Present},
|
||||||
|
LowerType: pgtype.Inclusive,
|
||||||
|
UpperType: pgtype.Unbounded,
|
||||||
|
Status: pgtype.Present,
|
||||||
|
},
|
||||||
|
&pgtype.Numrange{
|
||||||
|
Upper: pgtype.Numeric{Int: big.NewInt(-42), Exp: 1, Status: pgtype.Present},
|
||||||
|
LowerType: pgtype.Unbounded,
|
||||||
|
UpperType: pgtype.Exclusive,
|
||||||
|
Status: pgtype.Present,
|
||||||
|
},
|
||||||
&pgtype.Numrange{Status: pgtype.Null},
|
&pgtype.Numrange{Status: pgtype.Null},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,28 +79,28 @@ func ParseUntypedTextRange(src string) (*UntypedTextRange, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Errorf("invalid upper value: %v", err)
|
return nil, errors.Errorf("invalid upper value: %v", err)
|
||||||
}
|
}
|
||||||
buf.UnreadRune()
|
|
||||||
|
|
||||||
if r == ')' || r == ']' {
|
if r == ')' || r == ']' {
|
||||||
utr.UpperType = Unbounded
|
utr.UpperType = Unbounded
|
||||||
} else {
|
} else {
|
||||||
|
buf.UnreadRune()
|
||||||
utr.Upper, err = rangeParseValue(buf)
|
utr.Upper, err = rangeParseValue(buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Errorf("invalid upper value: %v", err)
|
return nil, errors.Errorf("invalid upper value: %v", err)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
r, _, err = buf.ReadRune()
|
r, _, err = buf.ReadRune()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Errorf("missing upper bound: %v", err)
|
return nil, errors.Errorf("missing upper bound: %v", err)
|
||||||
}
|
}
|
||||||
switch r {
|
switch r {
|
||||||
case ')':
|
case ')':
|
||||||
utr.UpperType = Exclusive
|
utr.UpperType = Exclusive
|
||||||
case ']':
|
case ']':
|
||||||
utr.UpperType = Inclusive
|
utr.UpperType = Inclusive
|
||||||
default:
|
default:
|
||||||
return nil, errors.Errorf("missing upper bound, instead got: %v", string(r))
|
return nil, errors.Errorf("missing upper bound, instead got: %v", string(r))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
skipWhitespace(buf)
|
skipWhitespace(buf)
|
||||||
|
|||||||
Reference in New Issue
Block a user