@@ -223,7 +223,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
223
223
case sqltypes .Int8 :
224
224
num , _ , err := convertToInt64 (t , v )
225
225
if err != nil {
226
- return nil , sql .OutOfRange , err
226
+ return int8 ( num ) , sql .OutOfRange , err
227
227
}
228
228
if num > math .MaxInt8 {
229
229
return int8 (math .MaxInt8 ), sql .OutOfRange , nil
@@ -235,7 +235,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
235
235
case sqltypes .Uint8 :
236
236
num , _ , err := convertToInt64 (t , v )
237
237
if err != nil {
238
- return nil , sql .OutOfRange , err
238
+ return uint8 ( num ) , sql .OutOfRange , err
239
239
}
240
240
if num > math .MaxUint8 {
241
241
return uint8 (math .MaxUint8 ), sql .OutOfRange , nil
@@ -247,7 +247,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
247
247
case sqltypes .Int16 :
248
248
num , _ , err := convertToInt64 (t , v )
249
249
if err != nil {
250
- return nil , sql .OutOfRange , err
250
+ return int16 ( num ) , sql .OutOfRange , err
251
251
}
252
252
if num > math .MaxInt16 {
253
253
return int16 (math .MaxInt16 ), sql .OutOfRange , nil
@@ -259,7 +259,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
259
259
case sqltypes .Uint16 :
260
260
num , _ , err := convertToInt64 (t , v )
261
261
if err != nil {
262
- return nil , sql .OutOfRange , err
262
+ return uint16 ( num ) , sql .OutOfRange , err
263
263
}
264
264
if num > math .MaxUint16 {
265
265
return uint16 (math .MaxUint16 ), sql .OutOfRange , nil
@@ -271,7 +271,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
271
271
case sqltypes .Int24 :
272
272
num , _ , err := convertToInt64 (t , v )
273
273
if err != nil {
274
- return nil , sql .OutOfRange , err
274
+ return int32 ( num ) , sql .OutOfRange , err
275
275
}
276
276
if num > (1 << 23 - 1 ) {
277
277
return int32 (1 << 23 - 1 ), sql .OutOfRange , nil
@@ -283,7 +283,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
283
283
case sqltypes .Uint24 :
284
284
num , _ , err := convertToInt64 (t , v )
285
285
if err != nil {
286
- return nil , sql .OutOfRange , err
286
+ return uint32 ( num ) , sql .OutOfRange , err
287
287
}
288
288
if num >= (1 << 24 ) {
289
289
return uint32 (1 << 24 - 1 ), sql .OutOfRange , nil
@@ -295,7 +295,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
295
295
case sqltypes .Int32 :
296
296
num , _ , err := convertToInt64 (t , v )
297
297
if err != nil {
298
- return nil , sql .OutOfRange , err
298
+ return int32 ( num ) , sql .OutOfRange , err
299
299
}
300
300
if num > math .MaxInt32 {
301
301
return int32 (math .MaxInt32 ), sql .OutOfRange , nil
@@ -307,7 +307,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
307
307
case sqltypes .Uint32 :
308
308
num , _ , err := convertToInt64 (t , v )
309
309
if err != nil {
310
- return nil , sql .OutOfRange , err
310
+ return uint32 ( num ) , sql .OutOfRange , err
311
311
}
312
312
if num > math .MaxUint32 {
313
313
return uint32 (math .MaxUint32 ), sql .OutOfRange , nil
@@ -1244,6 +1244,7 @@ func convertToFloat64(t NumberTypeImpl_, v interface{}) (float64, error) {
1244
1244
}
1245
1245
return float64 (i ), nil
1246
1246
case string :
1247
+ // TODO: proper truncation and rounding behavior
1247
1248
v = strings .Trim (v , sql .NumericCutSet )
1248
1249
i , err := strconv .ParseFloat (v , 64 )
1249
1250
if err != nil {
0 commit comments