From bb6b7c085d4e1c0f723e6505cd44b357d5c045c8 Mon Sep 17 00:00:00 2001 From: taca Date: Tue, 2 Aug 2011 16:15:08 +0000 Subject: Add patches refering link provided from PR pkg/45185 by Andras Horvath. And minor update of comments in patches. Bump PKGREVISION. --- databases/mysql5-server/Makefile | 3 +- databases/mysql5-server/distinfo | 15 +++++++--- databases/mysql5-server/patches/patch-ca | 29 ++++++++++++++---- databases/mysql5-server/patches/patch-cb | 6 ++-- databases/mysql5-server/patches/patch-cc | 6 ++-- .../mysql5-server/patches/patch-include_my__time.h | 24 +++++++++++++++ .../patches/patch-mysql-test_r_func__time.result | 22 ++++++++++++++ .../patches/patch-mysql-test_t_func__time.test | 26 +++++++++++++++++ .../patches/patch-sql-common_my__time.c | 24 +++++++++++++++ .../mysql5-server/patches/patch-sql_mysqld.cc | 34 ++++++++++++++++++++++ .../mysql5-server/patches/patch-sql_set__var.cc | 18 ++++++++++++ .../mysql5-server/patches/patch-sql_sql__class.h | 15 ++++++++++ 12 files changed, 207 insertions(+), 15 deletions(-) create mode 100644 databases/mysql5-server/patches/patch-include_my__time.h create mode 100644 databases/mysql5-server/patches/patch-mysql-test_r_func__time.result create mode 100644 databases/mysql5-server/patches/patch-mysql-test_t_func__time.test create mode 100644 databases/mysql5-server/patches/patch-sql-common_my__time.c create mode 100644 databases/mysql5-server/patches/patch-sql_mysqld.cc create mode 100644 databases/mysql5-server/patches/patch-sql_set__var.cc create mode 100644 databases/mysql5-server/patches/patch-sql_sql__class.h (limited to 'databases') diff --git a/databases/mysql5-server/Makefile b/databases/mysql5-server/Makefile index eea1ed8cf0c..ab2395ee5c2 100644 --- a/databases/mysql5-server/Makefile +++ b/databases/mysql5-server/Makefile @@ -1,6 +1,7 @@ -# $NetBSD: Makefile,v 1.31 2010/02/18 15:46:10 taca Exp $ +# $NetBSD: Makefile,v 1.32 2011/08/02 16:15:08 taca Exp $ PKGNAME= ${DISTNAME:S/-/-server-/} +PKGREVISION= 1 SVR4_PKGNAME= mysqs COMMENT= MySQL 5, a free SQL database (server) diff --git a/databases/mysql5-server/distinfo b/databases/mysql5-server/distinfo index 9cea3d3346e..3537cf76fbe 100644 --- a/databases/mysql5-server/distinfo +++ b/databases/mysql5-server/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.26 2011/02/26 02:58:56 taca Exp $ +$NetBSD: distinfo,v 1.27 2011/08/02 16:15:08 taca Exp $ SHA1 (mysql-5.0.92.tar.gz) = 10fffc7672a469af4a7fd980922b04d7ba0143ba RMD160 (mysql-5.0.92.tar.gz) = 24a373a1b124acf39d0c0726e5cb6f47dc1bef08 @@ -18,6 +18,13 @@ SHA1 (patch-an) = 1f7ede981f2e7a846f49a5cfd443051acf9f3a02 SHA1 (patch-ap) = 70049d00e30d89201dd8d9fc0ace4e6edfcffae7 SHA1 (patch-aq) = e63b5be7cb1cb2e8ca8ee52e7e42632c05804959 SHA1 (patch-bf) = 180aefb012a0d17269654ba0aeb71ec74ea98e6c -SHA1 (patch-ca) = 8d3f658a44a8d225a362b7f6135c772ee53ba5e3 -SHA1 (patch-cb) = b3a6bcc6f201b3ba1068ebe2d0cef3fbb22ab621 -SHA1 (patch-cc) = 2d1347ba57e35da484edd4fa3c764441ec6a80ed +SHA1 (patch-ca) = a1620b5ebad72bcf9265ec0f9b44ecebb2ee22c7 +SHA1 (patch-cb) = 3e6e3e5aeb0476b399ce80d7af58564cdad7da7a +SHA1 (patch-cc) = 5dc7423892271cf9be86be71de10d275532a8541 +SHA1 (patch-include_my__time.h) = 369fb468388bdec4e8449927e2109a8839fdde8a +SHA1 (patch-mysql-test_r_func__time.result) = c85c6ff7981adf9dd10a4d1724e0b94616dcbe1c +SHA1 (patch-mysql-test_t_func__time.test) = 5ff59d3fb9486a34ab23f33a942c2bd16be87776 +SHA1 (patch-sql-common_my__time.c) = 7056ca896030d26a30ba2c34a6adcd335fadfdb6 +SHA1 (patch-sql_mysqld.cc) = ae26b56f5ede21ed975005f47994b685b2c8083e +SHA1 (patch-sql_set__var.cc) = 5dbbeeb5e3db648da395b372535e780da8ef294f +SHA1 (patch-sql_sql__class.h) = 27fc6cc1684288b7ca517915af69a4ef8447c691 diff --git a/databases/mysql5-server/patches/patch-ca b/databases/mysql5-server/patches/patch-ca index 216aa52f8c7..923899b4e48 100644 --- a/databases/mysql5-server/patches/patch-ca +++ b/databases/mysql5-server/patches/patch-ca @@ -1,12 +1,29 @@ -$NetBSD: patch-ca,v 1.3 2010/02/18 15:46:10 taca Exp $ +$NetBSD: patch-ca,v 1.4 2011/08/02 16:15:08 taca Exp $ -Before calling sigsend(), make sure the function actuall exists. Fixes -the build on NetBSD >= 4.99.49, in which the macro P_MYID is defined -somewhere unrelated to signals. +* Handling of time_t: http://lists.mysql.com/commits/128103 +* Before calling sigsend(), make sure the function actuall exists. + Fixes the build on NetBSD >= 4.99.49, in which the macro P_MYID + is defined somewhere unrelated to signals. ---- configure.in.orig 2010-01-15 09:47:42.000000000 +0000 +--- configure.in.orig 2011-01-25 11:27:51.000000000 +0000 +++ configure.in -@@ -2051,7 +2051,7 @@ AC_CHECK_HEADERS(varargs.h stdarg.h dire +@@ -1956,6 +1956,15 @@ dnl + + MYSQL_CHECK_TIME_T + ++dnl ++dnl check size of time_t ++dnl ++ ++AC_CHECK_SIZEOF(time_t, 8) ++if test "$ac_cv_sizeof_time_t" -eq 0 ++then ++ AC_MSG_ERROR("MySQL needs a time_t type.") ++fi + + # do we need #pragma interface/#pragma implementation ? + # yes if it's gcc 2.x, and not icc pretending to be gcc, and not cygwin +@@ -2051,7 +2060,7 @@ AC_CHECK_HEADERS(varargs.h stdarg.h dire paths.h semaphore.h) # Already-done: strcasecmp diff --git a/databases/mysql5-server/patches/patch-cb b/databases/mysql5-server/patches/patch-cb index 79115e78781..a8928f0c4cf 100644 --- a/databases/mysql5-server/patches/patch-cb +++ b/databases/mysql5-server/patches/patch-cb @@ -1,6 +1,8 @@ -$NetBSD: patch-cb,v 1.3 2010/02/18 15:46:10 taca Exp $ +$NetBSD: patch-cb,v 1.4 2011/08/02 16:15:08 taca Exp $ -See patch-ca. +* Before calling sigsend(), make sure the function actuall exists. + Fixes the build on NetBSD >= 4.99.49, in which the macro P_MYID + is defined somewhere unrelated to signals. --- libmysqld/stacktrace.c.orig 2010-01-15 09:49:23.000000000 +0000 +++ libmysqld/stacktrace.c diff --git a/databases/mysql5-server/patches/patch-cc b/databases/mysql5-server/patches/patch-cc index 12013d328d8..73b83bde086 100644 --- a/databases/mysql5-server/patches/patch-cc +++ b/databases/mysql5-server/patches/patch-cc @@ -1,6 +1,8 @@ -$NetBSD: patch-cc,v 1.3 2010/02/18 15:46:10 taca Exp $ +$NetBSD: patch-cc,v 1.4 2011/08/02 16:15:08 taca Exp $ -See patch-ca. +* Before calling sigsend(), make sure the function actuall exists. + Fixes the build on NetBSD >= 4.99.49, in which the macro P_MYID + is defined somewhere unrelated to signals. --- sql/stacktrace.c.orig 2010-01-15 09:49:23.000000000 +0000 +++ sql/stacktrace.c diff --git a/databases/mysql5-server/patches/patch-include_my__time.h b/databases/mysql5-server/patches/patch-include_my__time.h new file mode 100644 index 00000000000..87c9a06f592 --- /dev/null +++ b/databases/mysql5-server/patches/patch-include_my__time.h @@ -0,0 +1,24 @@ +$NetBSD: patch-include_my__time.h,v 1.1 2011/08/02 16:15:08 taca Exp $ + +* Handling of time_t: http://lists.mysql.com/commits/128103 + +--- include/my_time.h.orig 2011-01-25 11:28:00.000000000 +0000 ++++ include/my_time.h +@@ -44,6 +44,17 @@ typedef long my_time_t; + #define MY_TIME_T_MIN LONG_MIN + + ++/* ++ check for valid times only if the range of time_t is greater than ++ the range of my_time_t ++*/ ++#if SIZEOF_TIME_T > SIZEOF_LONG ++# define IS_VALID_TIME_T(x) ((x) <= (time_t) MY_TIME_T_MAX && \ ++ (x) >= (time_t) MY_TIME_T_MIN) ++#else ++# define IS_VALID_TIME_T(x) (1 > 0) ++#endif ++ + /* Time handling defaults */ + #define TIMESTAMP_MAX_YEAR 2038 + #define YY_PART_YEAR 70 diff --git a/databases/mysql5-server/patches/patch-mysql-test_r_func__time.result b/databases/mysql5-server/patches/patch-mysql-test_r_func__time.result new file mode 100644 index 00000000000..3bdfc217d48 --- /dev/null +++ b/databases/mysql5-server/patches/patch-mysql-test_r_func__time.result @@ -0,0 +1,22 @@ +$NetBSD: patch-mysql-test_r_func__time.result,v 1.1 2011/08/02 16:15:08 taca Exp $ + +* Handling of time_t: http://lists.mysql.com/commits/128103 + +--- mysql-test/r/func_time.result.orig 2011-01-25 11:52:36.000000000 +0000 ++++ mysql-test/r/func_time.result +@@ -1323,4 +1323,15 @@ SELECT '2008-02-18' + INTERVAL 1 FRAC_SE + ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FRAC_SECOND' at line 1 + SELECT '2008-02-18' - INTERVAL 1 FRAC_SECOND; + ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FRAC_SECOND' at line 1 ++# ++# Bug #52315 part 2 : utc_date() crashes when system time > year 2037 ++# ++SET TIMESTAMP=-147490000; ++SELECT UTC_TIMESTAMP(); ++SET TIMESTAMP=2147483648; ++SELECT UTC_TIMESTAMP(); ++SET TIMESTAMP=2147483646; ++SELECT UTC_TIMESTAMP(); ++SET TIMESTAMP=2147483647; ++SELECT UTC_TIMESTAMP(); + End of 5.0 tests diff --git a/databases/mysql5-server/patches/patch-mysql-test_t_func__time.test b/databases/mysql5-server/patches/patch-mysql-test_t_func__time.test new file mode 100644 index 00000000000..5cb060c664c --- /dev/null +++ b/databases/mysql5-server/patches/patch-mysql-test_t_func__time.test @@ -0,0 +1,26 @@ +$NetBSD: patch-mysql-test_t_func__time.test,v 1.1 2011/08/02 16:15:08 taca Exp $ + +* Handling of time_t: http://lists.mysql.com/commits/128103 + +--- mysql-test/t/func_time.test.orig 2011-01-25 11:52:35.000000000 +0000 ++++ mysql-test/t/func_time.test +@@ -838,4 +838,19 @@ SELECT '2008-02-18' + INTERVAL 1 FRAC_SE + --error ER_PARSE_ERROR + SELECT '2008-02-18' - INTERVAL 1 FRAC_SECOND; + ++ ++--echo # ++--echo # Bug #52315 part 2 : utc_date() crashes when system time > year 2037 ++--echo # ++ ++--disable_result_log ++--error ER_UNKNOWN_ERROR ++SET TIMESTAMP=-147490000; SELECT UTC_TIMESTAMP(); ++--error ER_UNKNOWN_ERROR ++SET TIMESTAMP=2147483648; SELECT UTC_TIMESTAMP(); ++SET TIMESTAMP=2147483646; SELECT UTC_TIMESTAMP(); ++SET TIMESTAMP=2147483647; SELECT UTC_TIMESTAMP(); ++--enable_result_log ++ ++ + --echo End of 5.0 tests diff --git a/databases/mysql5-server/patches/patch-sql-common_my__time.c b/databases/mysql5-server/patches/patch-sql-common_my__time.c new file mode 100644 index 00000000000..c0fb1d8bbf5 --- /dev/null +++ b/databases/mysql5-server/patches/patch-sql-common_my__time.c @@ -0,0 +1,24 @@ +$NetBSD: patch-sql-common_my__time.c,v 1.1 2011/08/02 16:15:08 taca Exp $ + +* Handling of time_t: http://lists.mysql.com/commits/128103 + +--- sql-common/my_time.c.orig 2011-01-25 11:28:00.000000000 +0000 ++++ sql-common/my_time.c +@@ -984,8 +984,16 @@ my_system_gmt_sec(const MYSQL_TIME *t_sr + So, tmp < TIMESTAMP_MIN_VALUE will be triggered. On platfroms + with unsigned time_t tmp+= shift*86400L might result in a number, + larger then TIMESTAMP_MAX_VALUE, so another check will work. ++ ++ tmp being larger than TIMESTAMP_MAX_VALUE can only happen on ++ platforms where the size of time_t is larger than the size of ++ TIMESTAMP_MAX_VALUE (currently INT32 : 4 bytes). ++ #ifdef to avoid the compilation warnings on these platforms (OpenBSD). + */ +- if ((tmp < TIMESTAMP_MIN_VALUE) || (tmp > TIMESTAMP_MAX_VALUE)) ++ if ((tmp < TIMESTAMP_MIN_VALUE) ++#if SIZEOF_TIME_T > 4 ++ || (tmp > TIMESTAMP_MAX_VALUE)) ++#endif + tmp= 0; + + return (my_time_t) tmp; diff --git a/databases/mysql5-server/patches/patch-sql_mysqld.cc b/databases/mysql5-server/patches/patch-sql_mysqld.cc new file mode 100644 index 00000000000..31d1797af7d --- /dev/null +++ b/databases/mysql5-server/patches/patch-sql_mysqld.cc @@ -0,0 +1,34 @@ +$NetBSD: patch-sql_mysqld.cc,v 1.1 2011/08/02 16:15:08 taca Exp $ + +* Handling of time_t: http://lists.mysql.com/commits/128103 + +--- sql/mysqld.cc.orig 2011-01-25 11:27:51.000000000 +0000 ++++ sql/mysqld.cc +@@ -2836,13 +2836,6 @@ static int init_common_variables(const c + max_system_variables.pseudo_thread_id= (ulong)~0; + server_start_time= flush_status_time= time((time_t*) 0); + +- /* TODO: remove this when my_time_t is 64 bit compatible */ +- if (server_start_time >= (time_t) MY_TIME_T_MAX) +- { +- sql_print_error("This MySQL server doesn't support dates later then 2038"); +- return 1; +- } +- + if (init_thread_environment()) + return 1; + mysql_init_variables(); +@@ -2882,6 +2875,13 @@ static int init_common_variables(const c + mysql_slow_log.init_pthread_objects(); + mysql_bin_log.init_pthread_objects(); + ++ /* TODO: remove this when my_time_t is 64 bit compatible */ ++ if (!IS_VALID_TIME_T(server_start_time)) ++ { ++ sql_print_error("This MySQL server doesn't support dates later then 2038"); ++ return 1; ++ } ++ + if (gethostname(glob_hostname,sizeof(glob_hostname)) < 0) + { + strmake(glob_hostname, STRING_WITH_LEN("localhost")); diff --git a/databases/mysql5-server/patches/patch-sql_set__var.cc b/databases/mysql5-server/patches/patch-sql_set__var.cc new file mode 100644 index 00000000000..bb06756d4d9 --- /dev/null +++ b/databases/mysql5-server/patches/patch-sql_set__var.cc @@ -0,0 +1,18 @@ +$NetBSD: patch-sql_set__var.cc,v 1.1 2011/08/02 16:15:08 taca Exp $ + +* Handling of time_t: http://lists.mysql.com/commits/128103 + +--- sql/set_var.cc.orig 2011-01-25 11:27:51.000000000 +0000 ++++ sql/set_var.cc +@@ -2717,7 +2717,10 @@ bool sys_var_timestamp::check(THD *thd, + time_t val; + var->save_result.ulonglong_value= var->value->val_int(); + val= (time_t) var->save_result.ulonglong_value; +- if (val < (time_t) MY_TIME_T_MIN || val > (time_t) MY_TIME_T_MAX) ++ if ((val < TIMESTAMP_MIN_VALUE) ++#if SIZEOF_TIME_T > 4 ++ || (val > TIMESTAMP_MAX_VALUE)) ++#endif) + { + my_message(ER_UNKNOWN_ERROR, + "This version of MySQL doesn't support dates later than 2038", diff --git a/databases/mysql5-server/patches/patch-sql_sql__class.h b/databases/mysql5-server/patches/patch-sql_sql__class.h new file mode 100644 index 00000000000..d0b6d34ee33 --- /dev/null +++ b/databases/mysql5-server/patches/patch-sql_sql__class.h @@ -0,0 +1,15 @@ +$NetBSD: patch-sql_sql__class.h,v 1.1 2011/08/02 16:15:08 taca Exp $ + +* Handling of time_t: http://lists.mysql.com/commits/128103 + +--- sql/sql_class.h.orig 2011-01-25 11:27:51.000000000 +0000 ++++ sql/sql_class.h +@@ -1710,7 +1710,7 @@ public: + /*TODO: this will be obsolete when we have support for 64 bit my_time_t */ + inline bool is_valid_time() + { +- return (start_time < (time_t) MY_TIME_T_MAX); ++ return (IS_VALID_TIME_T(start_time)); + } + inline void insert_id(ulonglong id_arg) + { -- cgit v1.2.3