mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge gleb.loc:/home/uchum/work/bk/5.0-opt
into gleb.loc:/home/uchum/work/bk/5.1-opt libmysql/libmysql.c: Merge with 5.0-opt. mysql-test/r/insert_select.result: Merge with 5.0-opt. mysql-test/r/mysqlbinlog.result: Merge with 5.0-opt. mysql-test/r/rpl_change_master.result: Merge with 5.0-opt. mysql-test/r/view.result: Merge with 5.0-opt. mysql-test/t/insert_select.test: Merge with 5.0-opt. mysql-test/t/mysqlbinlog.test: Merge with 5.0-opt. mysql-test/t/rpl_change_master.test: Merge with 5.0-opt. mysql-test/t/view.test: Merge with 5.0-opt. sql/item.cc: Merge with 5.0-opt. sql/item.h: Merge with 5.0-opt. sql/log_event.cc: Merge with 5.0-opt. sql/sql_select.cc: Merge with 5.0-opt.
This commit is contained in:
@ -3657,33 +3657,38 @@ static void fetch_long_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
|
||||
case MYSQL_TYPE_FLOAT:
|
||||
{
|
||||
/*
|
||||
We need to store data in the buffer before the truncation check to
|
||||
We need to mark the local variable volatile to
|
||||
workaround Intel FPU executive precision feature.
|
||||
(See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=323 for details)
|
||||
AFAIU it does not guarantee to work.
|
||||
*/
|
||||
float data;
|
||||
volatile float data;
|
||||
if (is_unsigned)
|
||||
{
|
||||
data= (float) ulonglong2double(value);
|
||||
*param->error= ((ulonglong) value) != ((ulonglong) data);
|
||||
}
|
||||
else
|
||||
data= (float) value;
|
||||
{
|
||||
data= (float)value;
|
||||
*param->error= value != ((longlong) data);
|
||||
}
|
||||
floatstore(buffer, data);
|
||||
*param->error= is_unsigned ?
|
||||
((ulonglong) value) != ((ulonglong) (*(float*) buffer)) :
|
||||
((longlong) value) != ((longlong) (*(float*) buffer));
|
||||
break;
|
||||
}
|
||||
case MYSQL_TYPE_DOUBLE:
|
||||
{
|
||||
double data;
|
||||
volatile double data;
|
||||
if (is_unsigned)
|
||||
{
|
||||
data= ulonglong2double(value);
|
||||
*param->error= ((ulonglong) value) != ((ulonglong) data);
|
||||
}
|
||||
else
|
||||
{
|
||||
data= (double)value;
|
||||
*param->error= value != ((longlong) data);
|
||||
}
|
||||
doublestore(buffer, data);
|
||||
*param->error= is_unsigned ?
|
||||
((ulonglong) value) != ((ulonglong) (*(double*) buffer)) :
|
||||
((longlong) value) != ((longlong) (*(double*) buffer));
|
||||
break;
|
||||
}
|
||||
case MYSQL_TYPE_TIME:
|
||||
|
Reference in New Issue
Block a user