| Thread Previous • Date Previous • Date Next • Thread Next |
Hi Sergei, I'm not sure what to do with this:
MariaDB [test]> select
-> timediff('2014-01-01 00:00:00' , '2014-01-01 01:00:00' ),
-> timediff(20140101000000.000 , 20140101010000.000 ),
-> timediff(20140101000000.000 , '2014-01-01 01:00:00' ),
-> datediff('2014-01-01 00:00:00' , '2014-01-02 01:00:00' ),
-> datediff(20140101000000.000 , 20140102010000.000 ),
-> datediff(20140101000000.000 , '2014-01-02 01:00:00' )\G
*************************** 1. row ***************************
timediff('2014-01-01 00:00:00' , '2014-01-01 01:00:00' ): -01:00:00
timediff(20140101000000.000 , 20140101010000.000 ): -01:00:00.000
timediff(20140101000000.000 , '2014-01-01 01:00:00' ): NULL
datediff('2014-01-01 00:00:00' , '2014-01-02 01:00:00' ): -1
datediff(20140101000000.000 , 20140102010000.000 ): -1
datediff(20140101000000.000 , '2014-01-02 01:00:00' ): -1
1 row in set (0.03 sec)
Notice, it returns NULL in one case. The problem is in this piece of the code:
if (args[0]->get_time(&l_time1) ||
args[1]->get_time(&l_time2) ||
l_time1.time_type != l_time2.time_type)
return (null_value= 1);
get_time() forces decimal-to-time conversion to truncate the date part and return MYSQL_TIMESTAMP_TIME.get_time() does not force string-to-time conversion to truncate the date part. It still returns the full MYSQL_TIMESTAMP_DATETIME.
I'm afraid a lot of the code rely in this behavior. If we fix string-to-time conversion, mtr will start to fail in other cases. Any ideas what to do?
| Thread Previous • Date Previous • Date Next • Thread Next |