Bug #39920 | MySQL cannot deal with Leap Second expression in string literal. | ||
---|---|---|---|
Submitted: | 8 Oct 2008 7:07 | Modified: | 11 Dec 2008 20:45 |
Reporter: | Meiji KIMURA | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: DML | Severity: | S3 (Non-critical) |
Version: | 5.0.x | OS: | Linux |
Assigned to: | Georgi Kodinov | CPU Architecture: | Any |
Tags: | timezone |
[8 Oct 2008 7:07]
Meiji KIMURA
[15 Oct 2008 6:50]
Dmitry Lenev
Hi! Please note that as a workaround for dump/restore problem one can use --tz-utc of mysqldump.
[15 Oct 2008 8:04]
Meiji KIMURA
'--tz-utc' can affect to timestamp type column only. It cannot affect to datetime type column. Then it is not a workaround for this case.
[18 Nov 2008 10:02]
Georgi Kodinov
Bug #40610 is related to this bug
[19 Nov 2008 15:15]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/59241 2717 Georgi Kodinov 2008-11-19 Bug #39920: MySQL cannot deal with Leap Second expression in string literal. Updated MySQL to react correctly on the 2008's UTC leap second. MySQL functions that return the OS current time, like e.g. CURDATE(), NOW() etc will return :59:59 instead of :59:60. As a result the reader will receive :59:59 for two consecutive seconds during the leap second.
[19 Nov 2008 16:19]
Georgi Kodinov
Seem that returning :59 for the leap second is a common solution : http://kbase.redhat.com/faq/FAQ_103_13406.shtm
[29 Nov 2008 11:17]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/60233 2717 Georgi Kodinov 2008-11-29 Bug #39920: MySQL cannot deal with Leap Second expression in string literal. Updated MySQL to react correctly on the 2008's UTC leap second. MySQL functions that return the OS current time, like e.g. CURDATE(), NOW() etc will return :59:59 instead of :59:60. As a result the reader will receive :59:59 for two consecutive seconds during the leap second. Added a test case to demonstrate this.
[1 Dec 2008 11:25]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/60268 2717 Georgi Kodinov 2008-12-01 Bug #39920: MySQL cannot deal with Leap Second expression in string literal. Updated MySQL time handling code to react correctly on UTC leap second additions that can occur on 30 Jun/1 Jul and 31 Dec/1 Jan in the second after 23:59:59. MySQL functions that return the OS current time, like e.g. CURDATE(), NOW() etc will return :59:59 instead of :59:60. As a result the reader will receive :59:59 for two consecutive seconds during the leap second. This fix will not affect the values returned by UNIX_TIMESTAMP() for leap seconds. But note that with this change when converting the value returned by UNIX_TIMESTAMP() to broken down time the correction of leap seconds will still be applied. Note that this fix will make a difference *only* if the OS is specially configured to return leap seconds from the OS time calls. Added a test case to demonstrate the effect of the fix.
[1 Dec 2008 14:19]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/60278 2717 Georgi Kodinov 2008-12-01 Bug #39920: MySQL cannot deal with Leap Second expression in string literal. Updated MySQL time handling code to react correctly on UTC leap second additions. MySQL functions that return the OS current time, like e.g. CURDATE(), NOW() etc will return :59:59 instead of :59:60 or 59:61. As a result the reader will receive :59:59 for 2 or 3 consecutive seconds during the leap second. This fix will not affect the values returned by UNIX_TIMESTAMP() for leap seconds. But note that when converting the value returned by UNIX_TIMESTAMP() to broken down time the correction of leap seconds will still be applied. Note that this fix will make a difference *only* if the OS is specially configured to return leap seconds from the OS time calls or when using a MySQL time zone defintion that has leap seconds. Even after this change date/time literals (or other broken down time representations) with leap seconds (ending on :59:60 or 59:61) will still be considered illegal and discarded by the server with an error or a warning depending on the sql mode. Added a test case to demonstrate the effect of the fix.
[1 Dec 2008 14:35]
Dmitry Lenev
Patch approved with minor comments sent by e-mail.
[1 Dec 2008 15:42]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/60291 2731 Georgi Kodinov 2008-12-01 addendum to the fix for bug #39920 : post-merge test suite fixes
[2 Dec 2008 13:02]
Bugs System
Pushed into 5.0.74 (revid:kgeorge@mysql.com-20081201154106-c310zzy5or043rqa) (version source revid:kgeorge@mysql.com-20081201154106-c310zzy5or043rqa) (pib:5)
[8 Dec 2008 10:22]
Bugs System
Pushed into 5.1.31 (revid:kgeorge@mysql.com-20081201154106-c310zzy5or043rqa) (version source revid:kgeorge@mysql.com-20081201154351-wuy9mqel7dv0ie1c) (pib:5)
[8 Dec 2008 11:33]
Bugs System
Pushed into 6.0.9-alpha (revid:kgeorge@mysql.com-20081201154106-c310zzy5or043rqa) (version source revid:kgeorge@mysql.com-20081201160003-fe3wip6fv8hhmifq) (pib:5)
[11 Dec 2008 20:45]
Paul DuBois
Noted in 5.0.74, 5.1.31, 6.0.9 changelogs. If the operating system is configured to return leap seconds from OS time calls or if the MySQL server uses a time zone definition that has leap seconds, functions such as NOW() could return a value having a time part that ends with :59:60 or :59:61. If such values are inserted into a table, they would be dumped as is by mysqldump but considered invalid when reloaded, leading to backup/restore problems. Now leap second values are returned with a time part that ends with :59:59. This means that a function such as NOW() can return the same value for two or three consecutive seconds during the leap second. It remains true that literal temporal values having a time part that ends with :59:60 or :59:61 are considered invalid. For additional details about leap-second handling, see http://dev.mysql.com/doc/refman/5.0/en/time-zone-leap-seconds.html.
[19 Jan 2009 11:25]
Bugs System
Pushed into 5.1.31-ndb-6.2.17 (revid:tomas.ulin@sun.com-20090119095303-uwwvxiibtr38djii) (version source revid:tomas.ulin@sun.com-20090108105244-8opp3i85jw0uj5ib) (merge vers: 5.1.31-ndb-6.2.17) (pib:6)
[19 Jan 2009 13:03]
Bugs System
Pushed into 5.1.31-ndb-6.3.21 (revid:tomas.ulin@sun.com-20090119104956-guxz190n2kh31fxl) (version source revid:tomas.ulin@sun.com-20090119104956-guxz190n2kh31fxl) (merge vers: 5.1.31-ndb-6.3.21) (pib:6)
[19 Jan 2009 16:09]
Bugs System
Pushed into 5.1.31-ndb-6.4.1 (revid:tomas.ulin@sun.com-20090119144033-4aylstx5czzz88i5) (version source revid:tomas.ulin@sun.com-20090119144033-4aylstx5czzz88i5) (merge vers: 5.1.31-ndb-6.4.1) (pib:6)
[5 Feb 2009 19:51]
Paul DuBois
Noted in 5.0.72sp1 changelog.