mirror of
https://github.com/zhashkevych/go-sqlxmock.git
synced 2024-11-24 08:12:13 +02:00
tests/NullInt.Scan: fix integer conversion from int{8,16,32,64}
This commit is contained in:
parent
b9ca56ce96
commit
c1f08b2bb1
@ -2,6 +2,7 @@ package sqlmock
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"time"
|
||||
@ -25,8 +26,28 @@ func (ni *NullInt) Scan(value interface{}) (err error) {
|
||||
}
|
||||
|
||||
switch v := value.(type) {
|
||||
case int, int8, int16, int32, int64:
|
||||
ni.Integer, ni.Valid = v.(int), true
|
||||
case int:
|
||||
ni.Integer, ni.Valid = v, true
|
||||
return
|
||||
case int8:
|
||||
ni.Integer, ni.Valid = int(v), true
|
||||
return
|
||||
case int16:
|
||||
ni.Integer, ni.Valid = int(v), true
|
||||
return
|
||||
case int32:
|
||||
ni.Integer, ni.Valid = int(v), true
|
||||
return
|
||||
case int64:
|
||||
const maxUint = ^uint(0)
|
||||
const minUint = 0
|
||||
const maxInt = int(maxUint >> 1)
|
||||
const minInt = -maxInt - 1
|
||||
|
||||
if v > int64(maxInt) || v < int64(minInt) {
|
||||
return errors.New("value out of int range")
|
||||
}
|
||||
ni.Integer, ni.Valid = int(v), true
|
||||
return
|
||||
case []byte:
|
||||
ni.Integer, err = strconv.Atoi(string(v))
|
||||
|
Loading…
Reference in New Issue
Block a user