[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