[Pkg-mysql-commits] r1386 - trunk/debian/patches
Norbert Tretkowski
nobse at alioth.debian.org
Tue Dec 30 17:41:36 UTC 2008
Author: nobse
Date: 2008-12-30 17:41:35 +0000 (Tue, 30 Dec 2008)
New Revision: 1386
Modified:
trunk/debian/patches/61_fix_leap_seconds.dpatch
Log:
Update patch.
Modified: trunk/debian/patches/61_fix_leap_seconds.dpatch
===================================================================
--- trunk/debian/patches/61_fix_leap_seconds.dpatch 2008-12-30 09:34:58 UTC (rev 1385)
+++ trunk/debian/patches/61_fix_leap_seconds.dpatch 2008-12-30 17:41:35 UTC (rev 1386)
@@ -3,9 +3,11 @@
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: http://bugs.mysql.com/39920
---- a/mysql-test/r/timezone2.result 2006-11-01 14:35:35 +0000
-+++ b/mysql-test/r/timezone2.result 2008-12-01 15:41:06 +0000
-@@ -110,7 +110,7 @@ i ts
+
+diff -Nur mysql-dfsg-5.0-5.0.51a.orig/mysql-test/r/timezone2.result mysql-dfsg-5.0-5.0.51a/mysql-test/r/timezone2.result
+--- mysql-dfsg-5.0-5.0.51a.orig/mysql-test/r/timezone2.result 2008-01-11 16:23:41.000000000 +0100
++++ mysql-dfsg-5.0-5.0.51a/mysql-test/r/timezone2.result 2008-12-30 18:40:34.000000000 +0100
+@@ -110,7 +110,7 @@
362793610 1981-07-01 04:00:00
select from_unixtime(362793609);
from_unixtime(362793609)
@@ -14,4 +16,125 @@
drop table t1;
create table t1 (ts timestamp);
set time_zone='UTC';
-
+diff -Nur mysql-dfsg-5.0-5.0.51a.orig/mysql-test/r/timezone3.result mysql-dfsg-5.0-5.0.51a/mysql-test/r/timezone3.result
+--- mysql-dfsg-5.0-5.0.51a.orig/mysql-test/r/timezone3.result 2008-01-11 16:23:41.000000000 +0100
++++ mysql-dfsg-5.0-5.0.51a/mysql-test/r/timezone3.result 2008-12-30 18:40:30.000000000 +0100
+@@ -17,6 +17,9 @@
+ insert into t1 values
+ (unix_timestamp('1981-07-01 03:59:59'),'1981-07-01 03:59:59'),
+ (unix_timestamp('1981-07-01 04:00:00'),'1981-07-01 04:00:00');
++insert into t1 values
++(unix_timestamp('2009-01-01 02:59:59'),'2009-01-01 02:59:59'),
++(unix_timestamp('2009-01-01 03:00:00'),'2009-01-01 03:00:00');
+ select i, from_unixtime(i), c from t1;
+ i from_unixtime(i) c
+ 1072904422 2004-01-01 00:00:00 2004-01-01 00:00:00
+@@ -31,6 +34,8 @@
+ 1099180821 2004-10-31 02:59:59 2004-10-31 02:59:59
+ 362793608 1981-07-01 03:59:59 1981-07-01 03:59:59
+ 362793610 1981-07-01 04:00:00 1981-07-01 04:00:00
++1230768022 2009-01-01 02:59:59 2009-01-01 02:59:59
++1230768024 2009-01-01 03:00:00 2009-01-01 03:00:00
+ drop table t1;
+ create table t1 (ts timestamp);
+ insert into t1 values (19730101235900), (20040101235900);
+@@ -39,3 +44,6 @@
+ 1973-01-01 23:59:00
+ 2004-01-01 23:59:00
+ drop table t1;
++SELECT FROM_UNIXTIME(1230768022), FROM_UNIXTIME(1230768023), FROM_UNIXTIME(1230768024);
++FROM_UNIXTIME(1230768022) FROM_UNIXTIME(1230768023) FROM_UNIXTIME(1230768024)
++2009-01-01 02:59:59 2009-01-01 02:59:59 2009-01-01 03:00:00
+diff -Nur mysql-dfsg-5.0-5.0.51a.orig/mysql-test/t/timezone3.test mysql-dfsg-5.0-5.0.51a/mysql-test/t/timezone3.test
+--- mysql-dfsg-5.0-5.0.51a.orig/mysql-test/t/timezone3.test 2008-01-11 16:23:24.000000000 +0100
++++ mysql-dfsg-5.0-5.0.51a/mysql-test/t/timezone3.test 2008-12-30 18:40:30.000000000 +0100
+@@ -45,6 +45,10 @@
+ (unix_timestamp('1981-07-01 03:59:59'),'1981-07-01 03:59:59'),
+ (unix_timestamp('1981-07-01 04:00:00'),'1981-07-01 04:00:00');
+
++insert into t1 values
++ (unix_timestamp('2009-01-01 02:59:59'),'2009-01-01 02:59:59'),
++ (unix_timestamp('2009-01-01 03:00:00'),'2009-01-01 03:00:00');
++
+ select i, from_unixtime(i), c from t1;
+ drop table t1;
+
+@@ -58,4 +62,12 @@
+ select * from t1;
+ drop table t1;
+
++#
++# Test Bug #39920: MySQL cannot deal with Leap Second expression in string
++# literal
++#
++
++# 2009-01-01 02:59:59, 2009-01-01 02:59:60 and 2009-01-01 03:00:00
++SELECT FROM_UNIXTIME(1230768022), FROM_UNIXTIME(1230768023), FROM_UNIXTIME(1230768024);
++
+ # End of 4.1 tests
+diff -Nur mysql-dfsg-5.0-5.0.51a.orig/sql/tztime.cc mysql-dfsg-5.0-5.0.51a/sql/tztime.cc
+--- mysql-dfsg-5.0-5.0.51a.orig/sql/tztime.cc 2008-01-11 15:43:40.000000000 +0100
++++ mysql-dfsg-5.0-5.0.51a/sql/tztime.cc 2008-12-30 18:40:30.000000000 +0100
+@@ -1073,6 +1073,7 @@
+ localtime_r(&tmp_t, &tmp_tm);
+ localtime_to_TIME(tmp, &tmp_tm);
+ tmp->time_type= MYSQL_TIMESTAMP_DATETIME;
++ adjust_leap_second(tmp);
+ }
+
+
+@@ -1157,6 +1158,7 @@
+ gmtime_r(&tmp_t, &tmp_tm);
+ localtime_to_TIME(tmp, &tmp_tm);
+ tmp->time_type= MYSQL_TIMESTAMP_DATETIME;
++ adjust_leap_second(tmp);
+ }
+
+
+@@ -1260,6 +1262,7 @@
+ Time_zone_db::gmt_sec_to_TIME(MYSQL_TIME *tmp, my_time_t t) const
+ {
+ ::gmt_sec_to_TIME(tmp, t, tz_info);
++ adjust_leap_second(tmp);
+ }
+
+
+@@ -2373,6 +2376,25 @@
+ DBUG_RETURN(tz);
+ }
+
++
++/**
++ Convert leap seconds into non-leap
++
++ This function will convert the leap seconds added by the OS to
++ non-leap seconds, e.g. 23:59:59, 23:59:60 -> 23:59:59, 00:00:01 ...
++ This check is not checking for years on purpose : although it's not a
++ complete check this way it doesn't require looking (and having installed)
++ the leap seconds table.
++
++ @param[in,out] broken down time structure as filled in by the OS
++*/
++
++void Time_zone::adjust_leap_second(MYSQL_TIME *t)
++{
++ if (t->second == 60 || t->second == 61)
++ t->second= 59;
++}
++
+ #endif /* !defined(TESTTIME) && !defined(TZINFO2SQL) */
+
+
+diff -Nur mysql-dfsg-5.0-5.0.51a.orig/sql/tztime.h mysql-dfsg-5.0-5.0.51a/sql/tztime.h
+--- mysql-dfsg-5.0-5.0.51a.orig/sql/tztime.h 2008-01-11 15:43:18.000000000 +0100
++++ mysql-dfsg-5.0-5.0.51a/sql/tztime.h 2008-12-30 18:40:30.000000000 +0100
+@@ -55,6 +55,9 @@
+ allocated on MEM_ROOT and should not require destruction.
+ */
+ virtual ~Time_zone() {};
++
++protected:
++ static inline void adjust_leap_second(MYSQL_TIME *t);
+ };
+
+ extern Time_zone * my_tz_UTC;
More information about the Pkg-mysql-commits
mailing list