24352444 Update DBD::mysql to 4.0.35
authorVladimir Marek <Vladimir.Marek@oracle.com>
Tue, 26 Jul 2016 07:06:37 -0700
changeset 6534 7944bbb85989
parent 6533 de74a7d8f718
child 6536 2fd312fc3224
24352444 Update DBD::mysql to 4.0.35 24367883 problem in PERL-MOD/DBD-MYSQL
components/perl_modules/dbd-mysql/Makefile
components/perl_modules/dbd-mysql/TESTING
components/perl_modules/dbd-mysql/patches/01_test05.patch
components/perl_modules/dbd-mysql/patches/03-Fix-transferring-MYSQL_TYPE_LONG-values-on-64-bit-bi.patch
components/perl_modules/dbd-mysql/patches/04_87async_missing_test_deep.patch
components/perl_modules/dbd-mysql/test/results-all.master
--- a/components/perl_modules/dbd-mysql/Makefile	Sat Jul 30 09:46:03 2016 -0700
+++ b/components/perl_modules/dbd-mysql/Makefile	Tue Jul 26 07:06:37 2016 -0700
@@ -32,16 +32,16 @@
 include ../../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		DBD-mysql
-COMPONENT_VERSION=	4.033
-IPS_COMPONENT_VERSION=  4033
+COMPONENT_VERSION=	4.035
+IPS_COMPONENT_VERSION=  4035
 HUMAN_VERSION=		$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE_HASH=	\
-	sha256:cc98bbcc33581fbc55b42ae681c6946b70a26f549b3c64466740dfe9a7eac91c
-COMPONENT_ARCHIVE_URL=	http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/$(COMPONENT_ARCHIVE)
+	sha256:b7eca365ea16bcf4c96c2fc0221304ff9c4995e7a551886837804a8f66b61937
+COMPONENT_ARCHIVE_URL=	http://search.cpan.org/CPAN/authors/id/M/MI/MICHIELB/$(COMPONENT_ARCHIVE)
 COMPONENT_PROJECT_URL=	https://github.com/perl5-dbi/DBD-mysql
 COMPONENT_BUGDB=	perl-mod/dbd-mysql
 
-TPNO=			25495
+TPNO=			30300
 
 BUILD_STYLE= makemaker
 LICENSE=DBD-mysql.license
@@ -56,7 +56,9 @@
 	'-e "s/[0-9][0-9]* wallclock secs (.*CPU)$$/<TIMINGS REMOVED>/" ' \
 	'-e "s/^\(\# mysql_[a-z][a-z]* is: \).*/\1<REMOVED>/" ' \
 	'-e "s/^\(\# SQL_DBMS_VER is \).*/\1<REMOVED>/" ' \
-	'-e "s/^\(\# Driver version is \).*/\1<REMOVED>/" '
+	'-e "s/^\(\# Driver version is \).*/\1<REMOVED>/" ' \
+	'-e "/chmod 644 \"mysql.bs\"/d"' \
+	'-e "/Running Mkbootstrap/d"'
 
 ASLR_MODE = $(ASLR_NOT_APPLICABLE)
 
@@ -127,7 +129,7 @@
 	echo "$$TEST_LINK" > "$$TEST_LINK"/test_link; \
 	\
 	: "alter the tests to use the path we just created"; \
-	$(PERL) -pi -e "s,CHANGEME,$$TEST_LINK/socket," t/mysql.mtest ;\
+	$(PERL) -pi -e "s,('testsocket' => ').*?',\$$1/$$TEST_LINK/socket'," t/mysql.mtest ;\
 	\
 	: "Initialize mysql DB"; \
 	"$(MYSQL_BINDIR)/mysql_install_db" \
--- a/components/perl_modules/dbd-mysql/TESTING	Sat Jul 30 09:46:03 2016 -0700
+++ b/components/perl_modules/dbd-mysql/TESTING	Tue Jul 26 07:06:37 2016 -0700
@@ -70,7 +70,7 @@
 $dsn = "DBI:mysql:$dbname;mysql_socket=/var/tmp/mysql/socket;";
 $dbh = DBI->connect($dsn, 'root', 'new-password');
 
-eval { $dbh->do("DROP TABLE foo") };
+eval { $dbh->do("DROP TABLE IF EXISTS foo") };
 
 $dbh->do("CREATE TABLE foo (id INTEGER, name VARCHAR(20))");
 
--- a/components/perl_modules/dbd-mysql/patches/01_test05.patch	Sat Jul 30 09:46:03 2016 -0700
+++ b/components/perl_modules/dbd-mysql/patches/01_test05.patch	Tue Jul 26 07:06:37 2016 -0700
@@ -11,28 +11,3 @@
                        { RaiseError => 1, PrintError => 1, AutoCommit => 0 });};
  if ([email protected]) {
      diag [email protected];
---- DBD-mysql-4.033/t/87async.t	2016-02-13 13:37:19.948093572 -0800
-+++ DBD-mysql-4.033/t/87async.t	2016-02-13 13:36:58.066381499 -0800
[email protected]@ -1,7 +1,6 @@
- use strict;
- use warnings;
- 
--use Test::Deep;
- use Test::More;
- use DBI;
- use DBI::Const::GetInfoType;
[email protected]@ -11,10 +10,10 @@ use vars qw($test_dsn $test_user $test_p
- use lib 't', '.';
- require 'lib.pl';
- 
--eval { use Test::Deep };
--SKIP: {
--    if ($!) {
--        skip "Test::Deep is not installed!";
-+BEGIN {
-+    eval { require Test::Deep };
-+    if ([email protected]) {
-+            plan skip_all => 'Test::Deep is not installed!';
-     }
- }
- my $dbh;
--- a/components/perl_modules/dbd-mysql/patches/03-Fix-transferring-MYSQL_TYPE_LONG-values-on-64-bit-bi.patch	Sat Jul 30 09:46:03 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-From 95b210810301f0a5c87adc0d682bc8424dfb41d0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <[email protected]>
-Date: Fri, 26 Feb 2016 13:32:31 +0100
-Subject: [PATCH] Fix transferring MYSQL_TYPE_LONG values on 64-bit big endian
- systems
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-t/40server_prepare.t test failed on s390x platform. Server-prepared
-values of types int, smallint, and tinyint are passed to application
-as 32-bit integer. The same buffer was interpreted as long integer
-by DBD::MySQL. This caused missaligned read/write and bogus
-interpretation of the values.
-
-https://rt.cpan.org/Public/Bug/Display.html?id=57266
-https://bugzilla.redhat.com/show_bug.cgi?id=1311646
-http://dev.mysql.com/doc/refman/5.7/en/mysql-stmt-fetch.html
-Signed-off-by: Petr Písař <[email protected]>
----
- dbdimp.c | 20 +++++++++++++-------
- dbdimp.h |  5 +++--
- 2 files changed, 16 insertions(+), 9 deletions(-)
-
-diff --git a/dbdimp.c b/dbdimp.c
-index d507588..9a1be20 100644
---- a/dbdimp.c
-+++ b/dbdimp.c
[email protected]@ -18,6 +18,7 @@
- #endif
- 
- #include "dbdimp.h"
-+#include <inttypes.h> /* for PRId32 */
- 
- #if defined(WIN32)  &&  defined(WORD)
- #undef WORD
[email protected]@ -3753,8 +3754,8 @@ int dbd_describe(SV* sth, imp_sth_t* imp_sth)
- 
-       if (DBIc_TRACE_LEVEL(imp_xxh) >= 2)
-       {
--        PerlIO_printf(DBIc_LOGPIO(imp_xxh),"\t\ti %d col_type %d fbh->length %d\n",
--                      i, col_type, (int) fbh->length);
-+        PerlIO_printf(DBIc_LOGPIO(imp_xxh),"\t\ti %d col_type %d fbh->length %lu\n",
-+                      i, col_type, fbh->length);
-         PerlIO_printf(DBIc_LOGPIO(imp_xxh),
-                       "\t\tfields[i].length %lu fields[i].max_length %lu fields[i].type %d fields[i].charsetnr %d\n",
-                       (long unsigned int) fields[i].length, (long unsigned int) fields[i].max_length, fields[i].type,
[email protected]@ -4015,8 +4016,8 @@ process:
- 
-         case MYSQL_TYPE_LONG:
-           if (DBIc_TRACE_LEVEL(imp_xxh) >= 2)
--            PerlIO_printf(DBIc_LOGPIO(imp_xxh), "\t\tst_fetch int data %d, unsigned? %d\n",
--                          (int) fbh->ldata, buffer->is_unsigned);
-+            PerlIO_printf(DBIc_LOGPIO(imp_xxh), "\t\tst_fetch int data %"PRId32", unsigned? %d\n",
-+                          fbh->ldata, buffer->is_unsigned);
-           if (buffer->is_unsigned)
-             sv_setuv(sv, fbh->ldata);
-           else
[email protected]@ -4787,6 +4788,7 @@ int dbd_bind_ph(SV *sth, imp_sth_t *imp_sth, SV *param, SV *value,
-   int buffer_is_null= 0;
-   int buffer_length= slen;
-   unsigned int buffer_type= 0;
-+  IV tmp;
- #endif
- 
-   D_imp_dbh_from_sth;
[email protected]@ -4874,12 +4876,16 @@ int dbd_bind_ph(SV *sth, imp_sth_t *imp_sth, SV *param, SV *value,
-           if (!SvIOK(imp_sth->params[idx].value) && DBIc_TRACE_LEVEL(imp_xxh) >= 2)
-             PerlIO_printf(DBIc_LOGPIO(imp_xxh), "\t\tTRY TO BIND AN INT NUMBER\n");
-           buffer_length = sizeof imp_sth->fbind[idx].numeric_val.lval;
--          imp_sth->fbind[idx].numeric_val.lval= SvIV(imp_sth->params[idx].value);
-+
-+          tmp = SvIV(imp_sth->params[idx].value);
-+          if (tmp > INT32_MAX)
-+	        croak("Could not bind %ld: Integer too large for MYSQL_TYPE_LONG", tmp);
-+          imp_sth->fbind[idx].numeric_val.lval= tmp;
-           buffer=(void*)&(imp_sth->fbind[idx].numeric_val.lval);
-           if (DBIc_TRACE_LEVEL(imp_xxh) >= 2)
-             PerlIO_printf(DBIc_LOGPIO(imp_xxh),
--                          "   SCALAR type %d ->%ld<- IS A INT NUMBER\n",
--                          (int) sql_type, (long) (*buffer));
-+                          "   SCALAR type %d ->%"PRId32"<- IS A INT NUMBER\n",
-+                          (int) sql_type, *(int32_t *)buffer);
-           break;
- 
-         case MYSQL_TYPE_DOUBLE:
-diff --git a/dbdimp.h b/dbdimp.h
-index 8723bcc..1ef5d72 100644
---- a/dbdimp.h
-+++ b/dbdimp.h
[email protected]@ -22,6 +22,7 @@
- #include <mysqld_error.h>  /* Comes MySQL */
- 
- #include <errmsg.h> /* Comes with MySQL-devel */
-+#include <stdint.h> /* For int32_t */
- 
- /* For now, we hardcode this, but in the future,
-  * we can detect capabilities of the MySQL libraries
[email protected]@ -212,7 +213,7 @@ typedef struct imp_sth_ph_st {
- typedef struct imp_sth_phb_st {
-     union
-     {
--      long lval;
-+      int32_t lval;
-       double dval;
-     } numeric_val;
-     unsigned long   length;
[email protected]@ -233,7 +234,7 @@ typedef struct imp_sth_fbh_st {
-     char           *data;
-     int            charsetnr;
-     double         ddata;
--    long           ldata;
-+    int32_t        ldata;
- #if MYSQL_VERSION_ID < FIELD_CHARSETNR_VERSION 
-     unsigned int   flags;
- #endif
--- 
-2.5.0
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/perl_modules/dbd-mysql/patches/04_87async_missing_test_deep.patch	Tue Jul 26 07:06:37 2016 -0700
@@ -0,0 +1,28 @@
+Run the test only if Test::Deep is available
+
+Not accepted by upstream (instead they put Test::Deep as a requirement for
+DBD::mysql)
+https://rt.cpan.org/Public/Bug/Display.html?id=112072
+
+--- DBD-mysql-4.035/t/87async.t	2016-07-26 06:28:30.550483257 -0700
++++ DBD-mysql-4.035/t/87async.t	2016-07-26 06:27:51.584879116 -0700
[email protected]@ -1,12 +1,18 @@
+ use strict;
+ use warnings;
+ 
+-use Test::Deep;
+ use Test::More;
+ use DBI;
+ use DBI::Const::GetInfoType;
+ use Time::HiRes;
+ 
++BEGIN {
++    eval { require Test::Deep };
++    if ([email protected]) {
++            plan skip_all => 'Test::Deep is not installed!';
++    }
++}
++
+ use vars qw($test_dsn $test_user $test_password);
+ use lib 't', '.';
+ require 'lib.pl';
--- a/components/perl_modules/dbd-mysql/test/results-all.master	Sat Jul 30 09:46:03 2016 -0700
+++ b/components/perl_modules/dbd-mysql/test/results-all.master	Tue Jul 26 07:06:37 2016 -0700
@@ -2,6 +2,7 @@
 PERL_DL_NONLAZY=1 "$(PERL)" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
 # Driver version is <REMOVED>
 t/00base.t ........................... ok
+# Database 'test' accessible
 t/05dbcreate.t ....................... ok
 # mysql_clientinfo is: <REMOVED>
 # mysql_clientversion is: <REMOVED>
@@ -14,6 +15,7 @@
 # Default storage engine is: InnoDB
 t/10connect.t ........................ ok
 t/15reconnect.t ...................... ok
+t/16dbi-get_info.t ................... ok
 t/20createdrop.t ..................... ok
 t/25lockunlock.t ..................... ok
 t/29warnings.t ....................... ok
@@ -46,6 +48,8 @@
 t/52comment.t ........................ ok
 t/53comment.t ........................ ok
 t/55utf8.t ........................... ok
+t/55utf8mb4.t ........................ ok
+t/56connattr.t ....................... ok
 t/60leaks.t .......................... skipped: Skip $ENV{EXTENDED_TESTING} is not set
 t/65segfault.t ....................... ok
 t/65types.t .......................... ok
@@ -67,6 +71,7 @@
 t/pod.t .............................. skipped: Test::Pod 1.00 required for testing POD
 t/rt25389-bin-case.t ................. ok
 t/rt50304-column_info_parentheses.t .. ok
+t/rt75353-innodb-lock-timeout.t ...... ok
 t/rt83494-quotes-comments.t .......... ok
 t/rt85919-fetch-lost-connection.t .... ok
 t/rt86153-reconnect-fail-memory.t .... skipped: $ENV{EXTENDED_TESTING} is not set
@@ -74,6 +79,6 @@
 t/rt91715.t .......................... ok
 t/version.t .......................... ok
 All tests successful.
-Files=63, Tests=1615, <TIMINGS REMOVED>
+Files=67, Tests=1641, <TIMINGS REMOVED>
 Result: PASS
 make[1]: Leaving directory '$(@D)'