Commit b3a2a3d6 authored by unknown's avatar unknown
Browse files

Fix for verification tests: truncation of post digits should not return an error

parent 44dcec99
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -3656,6 +3656,7 @@ static void fetch_long_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
  }
}

#define MY_TRUNC(val) (val < 0 ? - floor(-val) : floor(val))

/*
  Convert double/float column to supplied buffer of any type.
@@ -3688,7 +3689,7 @@ static void fetch_float_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
      *buffer= (uint8) value;
    else
      *buffer= (int8) value;
    *param->error= value != (param->is_unsigned ? (double) ((uint8) *buffer) :
    *param->error= MY_TRUNC(value) != (param->is_unsigned ? (double) ((uint8) *buffer) :
                                                  (double) ((int8) *buffer));
    break;
  case MYSQL_TYPE_SHORT:
@@ -3702,7 +3703,7 @@ static void fetch_float_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
      short data= (short) value;
      shortstore(buffer, data);
    }
    *param->error= value != (param->is_unsigned ? (double) (*(ushort*) buffer):
    *param->error= MY_TRUNC(value) != (param->is_unsigned ? (double) (*(ushort*) buffer):
                                                  (double) (*(short*) buffer));
    break;
  case MYSQL_TYPE_LONG:
@@ -3716,7 +3717,7 @@ static void fetch_float_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
      int32 data= (int32) value;
      longstore(buffer, data);
    }
    *param->error= value != (param->is_unsigned ? (double) (*(uint32*) buffer):
    *param->error= MY_TRUNC(value) != (param->is_unsigned ? (double) (*(uint32*) buffer):
                                                  (double) (*(int32*) buffer));
      break;
  case MYSQL_TYPE_LONGLONG:
@@ -3730,7 +3731,7 @@ static void fetch_float_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
      longlong data= (longlong) value;
      longlongstore(buffer, data);
    }
    *param->error= value != (param->is_unsigned ?
    *param->error= MY_TRUNC(value) != (param->is_unsigned ?
                             ulonglong2double(*(ulonglong*) buffer) :
                             (double) (*(longlong*) buffer));
    break;