From bad7dd4198430fe3af3195b7cec2b21c3b1ac3bc Mon Sep 17 00:00:00 2001 From: hantmac Date: Sun, 6 Nov 2022 21:44:10 +0800 Subject: [PATCH] fix large num parser --- dataparser.go | 22 ++++++++++++---------- rows.go | 1 + 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/dataparser.go b/dataparser.go index 1930f83..39acbb2 100644 --- a/dataparser.go +++ b/dataparser.go @@ -476,30 +476,32 @@ func (p *intParser) Parse(s io.RuneScanner) (driver.Value, error) { } if p.signed { - v, err := strconv.ParseInt(repr, 10, p.bitSize) + f, err := strconv.ParseFloat(repr, 10) + //v, err := strconv.ParseInt(repr, 10, p.bitSize) switch p.bitSize { case 8: - return int8(v), err + return int8(f), err case 16: - return int16(v), err + return int16(f), err case 32: - return int32(v), err + return int32(f), err case 64: - return int64(v), err + return int64(f), err default: panic("unsupported bit size") } } else { - v, err := strconv.ParseUint(repr, 10, p.bitSize) + f, err := strconv.ParseFloat(repr, 10) + //v, err := strconv.ParseUint(repr, 10, p.bitSize) switch p.bitSize { case 8: - return uint8(v), err + return uint8(f), err case 16: - return uint16(v), err + return uint16(f), err case 32: - return uint32(v), err + return uint32(f), err case 64: - return uint64(v), err + return uint64(f), err default: panic("unsupported bit size") } diff --git a/rows.go b/rows.go index 5c35c19..6e1547c 100644 --- a/rows.go +++ b/rows.go @@ -73,6 +73,7 @@ func (r *nextRows) Next(dest []driver.Value) error { reader := strings.NewReader(fmt.Sprintf("%v", lineData[j])) v, err := r.parsers[j].Parse(reader) if err != nil { + r.dc.log("parse error ", err) return err } dest[j] = v