diff options
Diffstat (limited to 'src/database/sql')
| -rw-r--r-- | src/database/sql/convert.go | 12 | ||||
| -rw-r--r-- | src/database/sql/sql_test.go | 2 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/database/sql/convert.go b/src/database/sql/convert.go index c450d987a4..2149a8e700 100644 --- a/src/database/sql/convert.go +++ b/src/database/sql/convert.go @@ -420,6 +420,9 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error { dv.Set(reflect.New(dv.Type().Elem())) return convertAssignRows(dv.Interface(), src, rows) case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + if src == nil { + return fmt.Errorf("converting NULL to %s is unsupported", dv.Kind()) + } s := asString(src) i64, err := strconv.ParseInt(s, 10, dv.Type().Bits()) if err != nil { @@ -429,6 +432,9 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error { dv.SetInt(i64) return nil case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + if src == nil { + return fmt.Errorf("converting NULL to %s is unsupported", dv.Kind()) + } s := asString(src) u64, err := strconv.ParseUint(s, 10, dv.Type().Bits()) if err != nil { @@ -438,6 +444,9 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error { dv.SetUint(u64) return nil case reflect.Float32, reflect.Float64: + if src == nil { + return fmt.Errorf("converting NULL to %s is unsupported", dv.Kind()) + } s := asString(src) f64, err := strconv.ParseFloat(s, dv.Type().Bits()) if err != nil { @@ -447,6 +456,9 @@ func convertAssignRows(dest, src interface{}, rows *Rows) error { dv.SetFloat(f64) return nil case reflect.String: + if src == nil { + return fmt.Errorf("converting NULL to %s is unsupported", dv.Kind()) + } switch v := src.(type) { case string: dv.SetString(v) diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go index c07c5d3bd2..cc30ad3daa 100644 --- a/src/database/sql/sql_test.go +++ b/src/database/sql/sql_test.go @@ -1401,7 +1401,7 @@ func TestInvalidNilValues(t *testing.T) { { name: "int", input: &date2, - expectedError: `sql: Scan error on column index 0, name "bdate": converting driver.Value type <nil> ("<nil>") to a int: invalid syntax`, + expectedError: `sql: Scan error on column index 0, name "bdate": converting NULL to int is unsupported`, }, } |
