diff options
Diffstat (limited to 'src/pkg/database/sql/convert.go')
| -rw-r--r-- | src/pkg/database/sql/convert.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/pkg/database/sql/convert.go b/src/pkg/database/sql/convert.go index a12d564bc3..5530a5d905 100644 --- a/src/pkg/database/sql/convert.go +++ b/src/pkg/database/sql/convert.go @@ -122,6 +122,12 @@ func convertAssign(dest, src interface{}) error { } *d = s return nil + case *RawBytes: + if d == nil { + return errNilPtr + } + *d = s + return nil } case nil: switch d := dest.(type) { @@ -131,6 +137,12 @@ func convertAssign(dest, src interface{}) error { } *d = nil return nil + case *RawBytes: + if d == nil { + return errNilPtr + } + *d = nil + return nil } } @@ -147,6 +159,26 @@ func convertAssign(dest, src interface{}) error { *d = fmt.Sprintf("%v", src) return nil } + case *[]byte: + sv = reflect.ValueOf(src) + switch sv.Kind() { + case reflect.Bool, + reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, + reflect.Float32, reflect.Float64: + *d = []byte(fmt.Sprintf("%v", src)) + return nil + } + case *RawBytes: + sv = reflect.ValueOf(src) + switch sv.Kind() { + case reflect.Bool, + reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, + reflect.Float32, reflect.Float64: + *d = RawBytes(fmt.Sprintf("%v", src)) + return nil + } case *bool: bv, err := driver.Bool.ConvertValue(src) if err == nil { |
