From 8890a746d79e2ef181eaf126f4f4420ec65db309 Mon Sep 17 00:00:00 2001 From: Jim Tsao Date: Sun, 31 Oct 2021 13:47:09 +0100 Subject: [PATCH] Add infinity support for Numeric Text Encode/Decode --- numeric.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/numeric.go b/numeric.go index 72e59b69..cf8770fa 100644 --- a/numeric.go +++ b/numeric.go @@ -431,6 +431,12 @@ func (dst *Numeric) DecodeText(ci *ConnInfo, src []byte) error { if string(src) == "NaN" { *dst = Numeric{Status: Present, NaN: true} return nil + } else if string(src) == "Infinity" { + *dst = Numeric{Status: Present, InfinityModifier: Infinity} + return nil + } else if string(src) == "-Infinity" { + *dst = Numeric{Status: Present, InfinityModifier: NegativeInfinity} + return nil } num, exp, err := parseNumericString(string(src)) @@ -597,6 +603,12 @@ func (src Numeric) EncodeText(ci *ConnInfo, buf []byte) ([]byte, error) { if src.NaN { buf = append(buf, "NaN"...) return buf, nil + } else if src.InfinityModifier == Infinity { + buf = append(buf, "Infinity"...) + return buf, nil + } else if src.InfinityModifier == NegativeInfinity { + buf = append(buf, "-Infinity"...) + return buf, nil } buf = append(buf, src.Int.String()...)