mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
Fix for bug #16546: DATETIME+0 not always coerced the same way
This commit is contained in:
parent
f45d6d3cc6
commit
2d52881789
4 changed files with 20 additions and 7 deletions
|
@ -7,20 +7,20 @@ period_add("9602",-12) period_diff(199505,"9404")
|
|||
199502 13
|
||||
select now()-now(),weekday(curdate())-weekday(now()),unix_timestamp()-unix_timestamp(now());
|
||||
now()-now() weekday(curdate())-weekday(now()) unix_timestamp()-unix_timestamp(now())
|
||||
0 0 0
|
||||
0.000000 0 0
|
||||
select from_unixtime(unix_timestamp("1994-03-02 10:11:12")),from_unixtime(unix_timestamp("1994-03-02 10:11:12"),"%Y-%m-%d %h:%i:%s"),from_unixtime(unix_timestamp("1994-03-02 10:11:12"))+0;
|
||||
from_unixtime(unix_timestamp("1994-03-02 10:11:12")) from_unixtime(unix_timestamp("1994-03-02 10:11:12"),"%Y-%m-%d %h:%i:%s") from_unixtime(unix_timestamp("1994-03-02 10:11:12"))+0
|
||||
1994-03-02 10:11:12 1994-03-02 10:11:12 19940302101112
|
||||
1994-03-02 10:11:12 1994-03-02 10:11:12 19940302101112.000000
|
||||
select sec_to_time(9001),sec_to_time(9001)+0,time_to_sec("15:12:22"),
|
||||
sec_to_time(time_to_sec("0:30:47")/6.21);
|
||||
sec_to_time(9001) sec_to_time(9001)+0 time_to_sec("15:12:22") sec_to_time(time_to_sec("0:30:47")/6.21)
|
||||
02:30:01 23001 54742 00:04:57
|
||||
02:30:01 23001.000000 54742 00:04:57
|
||||
select sec_to_time(time_to_sec('-838:59:59'));
|
||||
sec_to_time(time_to_sec('-838:59:59'))
|
||||
-838:59:59
|
||||
select now()-curdate()*1000000-curtime();
|
||||
now()-curdate()*1000000-curtime()
|
||||
0
|
||||
0.000000
|
||||
select strcmp(current_timestamp(),concat(current_date()," ",current_time()));
|
||||
strcmp(current_timestamp(),concat(current_date()," ",current_time()))
|
||||
0
|
||||
|
@ -626,3 +626,7 @@ last_day('2005-01-00')
|
|||
NULL
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect datetime value: '2005-01-00'
|
||||
select now() - now() + 0, curtime() - curtime() + 0,
|
||||
sec_to_time(1) + 0, from_unixtime(1) + 0;
|
||||
now() - now() + 0 curtime() - curtime() + 0 sec_to_time(1) + 0 from_unixtime(1) + 0
|
||||
0.000000 0.000000 1.000000 19700101030001.000000
|
||||
|
|
|
@ -315,4 +315,12 @@ select last_day('2005-00-00');
|
|||
select last_day('2005-00-01');
|
||||
select last_day('2005-01-00');
|
||||
|
||||
#
|
||||
# Bug #16546
|
||||
#
|
||||
|
||||
select now() - now() + 0, curtime() - curtime() + 0,
|
||||
sec_to_time(1) + 0, from_unixtime(1) + 0;
|
||||
|
||||
|
||||
# End of 4.1 tests
|
||||
|
|
|
@ -1372,7 +1372,7 @@ void Item_func_curtime::fix_length_and_dec()
|
|||
{
|
||||
TIME ltime;
|
||||
|
||||
decimals=0;
|
||||
decimals= DATETIME_DEC;
|
||||
collation.set(&my_charset_bin);
|
||||
store_now_in_TIME(<ime);
|
||||
value= TIME_to_ulonglong_time(<ime);
|
||||
|
@ -1419,7 +1419,7 @@ String *Item_func_now::val_str(String *str)
|
|||
|
||||
void Item_func_now::fix_length_and_dec()
|
||||
{
|
||||
decimals=0;
|
||||
decimals= DATETIME_DEC;
|
||||
collation.set(&my_charset_bin);
|
||||
|
||||
store_now_in_TIME(<ime);
|
||||
|
@ -1680,7 +1680,7 @@ void Item_func_from_unixtime::fix_length_and_dec()
|
|||
{
|
||||
thd= current_thd;
|
||||
collation.set(&my_charset_bin);
|
||||
decimals=0;
|
||||
decimals= DATETIME_DEC;
|
||||
max_length=MAX_DATETIME_WIDTH*MY_CHARSET_BIN_MB_MAXLEN;
|
||||
maybe_null= 1;
|
||||
thd->time_zone_used= 1;
|
||||
|
|
|
@ -580,6 +580,7 @@ public:
|
|||
{
|
||||
collation.set(&my_charset_bin);
|
||||
maybe_null=1;
|
||||
decimals= DATETIME_DEC;
|
||||
max_length=MAX_TIME_WIDTH*MY_CHARSET_BIN_MB_MAXLEN;
|
||||
}
|
||||
enum_field_types field_type() const { return MYSQL_TYPE_TIME; }
|
||||
|
|
Loading…
Reference in a new issue