diff options
author | Sergei Golubchik <serg@mariadb.org> | 2019-09-03 15:28:32 +0200 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2019-09-04 09:30:43 +0200 |
commit | 647d5b243020b799fd7112a801965f5780b86349 (patch) | |
tree | 4e2e51c35a17b8824271375cc243312568b9b5ee /mysql-test | |
parent | 08b01ace8a7284272662c793b3d93b3ddddc7123 (diff) | |
download | mariadb-git-647d5b243020b799fd7112a801965f5780b86349.tar.gz |
MDEV-20079 When setting back the system time while mysqld is running, NOW() and UNIX_TIMESTAMP() results get stuck
typo. system_time.start wasn't updated when system_time.sec
and system_time.sec_part were.
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/main/system_time_debug.result | 16 | ||||
-rw-r--r-- | mysql-test/main/system_time_debug.test | 16 |
2 files changed, 32 insertions, 0 deletions
diff --git a/mysql-test/main/system_time_debug.result b/mysql-test/main/system_time_debug.result new file mode 100644 index 00000000000..98266f5e9d7 --- /dev/null +++ b/mysql-test/main/system_time_debug.result @@ -0,0 +1,16 @@ +set @old_dbug=@@debug_dbug; +select timestampdiff(minute,now(),sysdate()) as 'must be 0', (unix_timestamp(sysdate()) - unix_timestamp()) div 60 as 'must be 0'; +must be 0 must be 0 +0 0 +set @@debug_dbug='+d,system_time_plus_one_hour'; +select timestampdiff(minute,now(),sysdate()) as 'must be 0', (unix_timestamp(sysdate()) - unix_timestamp()) div 60 as 'must be 0'; +must be 0 must be 0 +0 0 +set @@debug_dbug='+d,system_time_minus_one_hour:-d,system_time_plus_one_hour'; +select timestampdiff(minute,now(),sysdate()) as 'must be 0', (unix_timestamp(sysdate()) - unix_timestamp()) div 60 as 'must be 0'; +must be 0 must be 0 +0 0 +set @@debug_dbug=@old_dbug; +select timestampdiff(minute,now(),sysdate()) as 'must be 0', (unix_timestamp(sysdate()) - unix_timestamp()) div 60 as 'must be 0'; +must be 0 must be 0 +0 0 diff --git a/mysql-test/main/system_time_debug.test b/mysql-test/main/system_time_debug.test new file mode 100644 index 00000000000..040b4c3000e --- /dev/null +++ b/mysql-test/main/system_time_debug.test @@ -0,0 +1,16 @@ +source include/have_debug.inc; +# +# MDEV-20079 When setting back the system time while mysqld is running, NOW() and UNIX_TIMESTAMP() results get stuck +# +set @old_dbug=@@debug_dbug; + +# because NOW() is taken at the beginning of the query and sysdate() is the actual +# time when sysdate() was evaluated, they don't necessarily have to be equal. +# but hopefully they're less than within a minute from each other. +select timestampdiff(minute,now(),sysdate()) as 'must be 0', (unix_timestamp(sysdate()) - unix_timestamp()) div 60 as 'must be 0'; +set @@debug_dbug='+d,system_time_plus_one_hour'; +select timestampdiff(minute,now(),sysdate()) as 'must be 0', (unix_timestamp(sysdate()) - unix_timestamp()) div 60 as 'must be 0'; +set @@debug_dbug='+d,system_time_minus_one_hour:-d,system_time_plus_one_hour'; +select timestampdiff(minute,now(),sysdate()) as 'must be 0', (unix_timestamp(sysdate()) - unix_timestamp()) div 60 as 'must be 0'; +set @@debug_dbug=@old_dbug; +select timestampdiff(minute,now(),sysdate()) as 'must be 0', (unix_timestamp(sysdate()) - unix_timestamp()) div 60 as 'must be 0'; |