aboutsummaryrefslogtreecommitdiff
path: root/src/database/sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/database/sql')
-rw-r--r--src/database/sql/convert.go12
-rw-r--r--src/database/sql/sql_test.go2
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`,
},
}