mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Fix that round(0.1,1) == round(0.1,1)
sql/slave.cc: Fixed problem with --debug output in handle_slave
This commit is contained in:
parent
065bedc5d4
commit
66e8db8241
2 changed files with 17 additions and 8 deletions
|
@ -679,20 +679,28 @@ double Item_func_round::val()
|
|||
double value=args[0]->val();
|
||||
int dec=(int) args[1]->val_int();
|
||||
uint abs_dec=abs(dec);
|
||||
double tmp;
|
||||
/*
|
||||
tmp2 is here to avoid return the value with 80 bit precision
|
||||
This will fix that the test round(0.1,1) = round(0.1,1) is true
|
||||
*/
|
||||
volatile double tmp2;
|
||||
|
||||
if ((null_value=args[0]->null_value || args[1]->null_value))
|
||||
return 0.0;
|
||||
double tmp=(abs_dec < array_elements(log_10) ?
|
||||
log_10[abs_dec] : pow(10.0,(double) abs_dec));
|
||||
tmp=(abs_dec < array_elements(log_10) ?
|
||||
log_10[abs_dec] : pow(10.0,(double) abs_dec));
|
||||
|
||||
if (truncate)
|
||||
{
|
||||
if (value >= 0)
|
||||
return dec < 0 ? floor(value/tmp)*tmp : floor(value*tmp)/tmp;
|
||||
tmp2= dec < 0 ? floor(value/tmp)*tmp : floor(value*tmp)/tmp;
|
||||
else
|
||||
return dec < 0 ? ceil(value/tmp)*tmp : ceil(value*tmp)/tmp;
|
||||
tmp2= dec < 0 ? ceil(value/tmp)*tmp : ceil(value*tmp)/tmp;
|
||||
}
|
||||
return dec < 0 ? rint(value/tmp)*tmp : rint(value*tmp)/tmp;
|
||||
else
|
||||
tmp2=dec < 0 ? rint(value/tmp)*tmp : rint(value*tmp)/tmp;
|
||||
return tmp2;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1815,7 +1815,8 @@ static int init_slave_thread(THD* thd, SLAVE_THD_TYPE thd_type)
|
|||
|
||||
if (init_thr_lock() || thd->store_globals())
|
||||
{
|
||||
end_thread(thd,0);
|
||||
thd->cleanup();
|
||||
delete thd;
|
||||
DBUG_RETURN(-1);
|
||||
}
|
||||
|
||||
|
@ -2096,6 +2097,7 @@ extern "C" pthread_handler_decl(handle_slave_io,arg)
|
|||
|
||||
// needs to call my_thread_init(), otherwise we get a coredump in DBUG_ stuff
|
||||
my_thread_init();
|
||||
DBUG_ENTER("handle_slave_io");
|
||||
|
||||
#ifndef DBUG_OFF
|
||||
slave_begin:
|
||||
|
@ -2113,7 +2115,6 @@ slave_begin:
|
|||
#endif
|
||||
|
||||
thd= new THD; // note that contructor of THD uses DBUG_ !
|
||||
DBUG_ENTER("handle_slave_io");
|
||||
THD_CHECK_SENTRY(thd);
|
||||
|
||||
pthread_detach_this_thread();
|
||||
|
@ -2370,6 +2371,7 @@ extern "C" pthread_handler_decl(handle_slave_sql,arg)
|
|||
|
||||
// needs to call my_thread_init(), otherwise we get a coredump in DBUG_ stuff
|
||||
my_thread_init();
|
||||
DBUG_ENTER("handle_slave_sql");
|
||||
|
||||
#ifndef DBUG_OFF
|
||||
slave_begin:
|
||||
|
@ -2382,7 +2384,6 @@ slave_begin:
|
|||
#ifndef DBUG_OFF
|
||||
rli->events_till_abort = abort_slave_event_count;
|
||||
#endif
|
||||
DBUG_ENTER("handle_slave_sql");
|
||||
|
||||
thd = new THD; // note that contructor of THD uses DBUG_ !
|
||||
THD_CHECK_SENTRY(thd);
|
||||
|
|
Loading…
Reference in a new issue