@@ -223,7 +223,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
223223 case sqltypes .Int8 :
224224 num , _ , err := convertToInt64 (t , v )
225225 if err != nil {
226- return nil , sql .OutOfRange , err
226+ return int8 ( num ) , sql .OutOfRange , err
227227 }
228228 if num > math .MaxInt8 {
229229 return int8 (math .MaxInt8 ), sql .OutOfRange , nil
@@ -235,7 +235,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
235235 case sqltypes .Uint8 :
236236 num , _ , err := convertToInt64 (t , v )
237237 if err != nil {
238- return nil , sql .OutOfRange , err
238+ return uint8 ( num ) , sql .OutOfRange , err
239239 }
240240 if num > math .MaxUint8 {
241241 return uint8 (math .MaxUint8 ), sql .OutOfRange , nil
@@ -247,7 +247,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
247247 case sqltypes .Int16 :
248248 num , _ , err := convertToInt64 (t , v )
249249 if err != nil {
250- return nil , sql .OutOfRange , err
250+ return int16 ( num ) , sql .OutOfRange , err
251251 }
252252 if num > math .MaxInt16 {
253253 return int16 (math .MaxInt16 ), sql .OutOfRange , nil
@@ -259,7 +259,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
259259 case sqltypes .Uint16 :
260260 num , _ , err := convertToInt64 (t , v )
261261 if err != nil {
262- return nil , sql .OutOfRange , err
262+ return uint16 ( num ) , sql .OutOfRange , err
263263 }
264264 if num > math .MaxUint16 {
265265 return uint16 (math .MaxUint16 ), sql .OutOfRange , nil
@@ -271,7 +271,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
271271 case sqltypes .Int24 :
272272 num , _ , err := convertToInt64 (t , v )
273273 if err != nil {
274- return nil , sql .OutOfRange , err
274+ return int32 ( num ) , sql .OutOfRange , err
275275 }
276276 if num > (1 << 23 - 1 ) {
277277 return int32 (1 << 23 - 1 ), sql .OutOfRange , nil
@@ -283,7 +283,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
283283 case sqltypes .Uint24 :
284284 num , _ , err := convertToInt64 (t , v )
285285 if err != nil {
286- return nil , sql .OutOfRange , err
286+ return uint32 ( num ) , sql .OutOfRange , err
287287 }
288288 if num >= (1 << 24 ) {
289289 return uint32 (1 << 24 - 1 ), sql .OutOfRange , nil
@@ -295,7 +295,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
295295 case sqltypes .Int32 :
296296 num , _ , err := convertToInt64 (t , v )
297297 if err != nil {
298- return nil , sql .OutOfRange , err
298+ return int32 ( num ) , sql .OutOfRange , err
299299 }
300300 if num > math .MaxInt32 {
301301 return int32 (math .MaxInt32 ), sql .OutOfRange , nil
@@ -307,7 +307,7 @@ func (t NumberTypeImpl_) Convert(ctx context.Context, v interface{}) (interface{
307307 case sqltypes .Uint32 :
308308 num , _ , err := convertToInt64 (t , v )
309309 if err != nil {
310- return nil , sql .OutOfRange , err
310+ return uint32 ( num ) , sql .OutOfRange , err
311311 }
312312 if num > math .MaxUint32 {
313313 return uint32 (math .MaxUint32 ), sql .OutOfRange , nil
@@ -1244,6 +1244,7 @@ func convertToFloat64(t NumberTypeImpl_, v interface{}) (float64, error) {
12441244 }
12451245 return float64 (i ), nil
12461246 case string :
1247+ // TODO: proper truncation and rounding behavior
12471248 v = strings .Trim (v , sql .NumericCutSet )
12481249 i , err := strconv .ParseFloat (v , 64 )
12491250 if err != nil {
0 commit comments