Commit b3a2a3d6 authored by unknown's avatar unknown

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

parent 44dcec99
...@@ -3656,6 +3656,7 @@ static void fetch_long_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field, ...@@ -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. 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, ...@@ -3688,7 +3689,7 @@ static void fetch_float_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
*buffer= (uint8) value; *buffer= (uint8) value;
else else
*buffer= (int8) value; *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)); (double) ((int8) *buffer));
break; break;
case MYSQL_TYPE_SHORT: case MYSQL_TYPE_SHORT:
...@@ -3702,7 +3703,7 @@ static void fetch_float_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field, ...@@ -3702,7 +3703,7 @@ static void fetch_float_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
short data= (short) value; short data= (short) value;
shortstore(buffer, data); 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)); (double) (*(short*) buffer));
break; break;
case MYSQL_TYPE_LONG: case MYSQL_TYPE_LONG:
...@@ -3716,7 +3717,7 @@ static void fetch_float_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field, ...@@ -3716,7 +3717,7 @@ static void fetch_float_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
int32 data= (int32) value; int32 data= (int32) value;
longstore(buffer, data); 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)); (double) (*(int32*) buffer));
break; break;
case MYSQL_TYPE_LONGLONG: case MYSQL_TYPE_LONGLONG:
...@@ -3730,7 +3731,7 @@ static void fetch_float_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field, ...@@ -3730,7 +3731,7 @@ static void fetch_float_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
longlong data= (longlong) value; longlong data= (longlong) value;
longlongstore(buffer, data); longlongstore(buffer, data);
} }
*param->error= value != (param->is_unsigned ? *param->error= MY_TRUNC(value) != (param->is_unsigned ?
ulonglong2double(*(ulonglong*) buffer) : ulonglong2double(*(ulonglong*) buffer) :
(double) (*(longlong*) buffer)); (double) (*(longlong*) buffer));
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment