# HG changeset patch # User Vladimir Marek # Date 1475582656 -7200 # Node ID 6587d6b487828ca38cca50cd8efb77496898831f # Parent c0715e78cafb0f089a97dc24380b7f138fa1f277 24794975 Update DBD::mysql to 4.0.37 24794982 problem in PERL-MOD/DBD-MYSQL diff -r c0715e78cafb -r 6587d6b48782 components/perl_modules/dbd-mysql/DBD-mysql-PERLVER.p5m --- a/components/perl_modules/dbd-mysql/DBD-mysql-PERLVER.p5m Tue Oct 18 13:46:28 2016 -0500 +++ b/components/perl_modules/dbd-mysql/DBD-mysql-PERLVER.p5m Tue Oct 04 14:04:16 2016 +0200 @@ -40,11 +40,9 @@ #file path=usr/perl5/$(PERLVER)/lib/$(PERL_ARCH)/perllocal.pod file path=usr/perl5/$(PERLVER)/man/man3/Bundle::DBD::mysql.3 -file path=usr/perl5/$(PERLVER)/man/man3/DBD::README.3 file path=usr/perl5/$(PERLVER)/man/man3/DBD::mysql.3 file path=usr/perl5/$(PERLVER)/man/man3/DBD::mysql::INSTALL.3 file path=usr/perl5/vendor_perl/$(PERLVER)/$(PERL_ARCH)/Bundle/DBD/mysql.pm -file path=usr/perl5/vendor_perl/$(PERLVER)/$(PERL_ARCH)/DBD/README.pod file path=usr/perl5/vendor_perl/$(PERLVER)/$(PERL_ARCH)/DBD/mysql.pm file path=usr/perl5/vendor_perl/$(PERLVER)/$(PERL_ARCH)/DBD/mysql/GetInfo.pm file path=usr/perl5/vendor_perl/$(PERLVER)/$(PERL_ARCH)/DBD/mysql/INSTALL.pod diff -r c0715e78cafb -r 6587d6b48782 components/perl_modules/dbd-mysql/Makefile --- a/components/perl_modules/dbd-mysql/Makefile Tue Oct 18 13:46:28 2016 -0500 +++ b/components/perl_modules/dbd-mysql/Makefile Tue Oct 04 14:04:16 2016 +0200 @@ -32,16 +32,16 @@ include ../../../make-rules/shared-macros.mk COMPONENT_NAME= DBD-mysql -COMPONENT_VERSION= 4.035 -IPS_COMPONENT_VERSION= 4035 +COMPONENT_VERSION= 4.037 +IPS_COMPONENT_VERSION= 4037 HUMAN_VERSION= $(COMPONENT_VERSION) COMPONENT_ARCHIVE_HASH= \ - sha256:b7eca365ea16bcf4c96c2fc0221304ff9c4995e7a551886837804a8f66b61937 + sha256:df578acef28ed3f6aaae52dc98e6821a1407d3bfa88585255729bb0ebfed3cfc 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= 30300 +TPNO= 32078 # MySQL 5.7 is not available in S11. diff -r c0715e78cafb -r 6587d6b48782 components/perl_modules/dbd-mysql/patches/01_test05.patch --- a/components/perl_modules/dbd-mysql/patches/01_test05.patch Tue Oct 18 13:46:28 2016 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -https://rt.cpan.org/Public/Bug/Display.html?id=112072 - ---- DBD-mysql-4.033/t/05dbcreate.t 2016-02-13 13:29:56.467130717 -0800 -+++ DBD-mysql-4.033/t/05dbcreate.t 2016-02-13 13:23:45.371688976 -0800 -@@ -10,7 +10,7 @@ use lib 't', '.'; - require 'lib.pl'; - - my $dbh; --eval {$dbh= DBI->connect('DBI:mysql:', $test_user, $test_password, -+eval {$dbh= DBI->connect($test_dsn, $test_user, $test_password, - { RaiseError => 1, PrintError => 1, AutoCommit => 0 });}; - if ($@) { - diag $@; diff -r c0715e78cafb -r 6587d6b48782 components/perl_modules/dbd-mysql/patches/02_int_min_max_test.patch --- a/components/perl_modules/dbd-mysql/patches/02_int_min_max_test.patch Tue Oct 18 13:46:28 2016 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -https://rt.cpan.org/Public/Bug/Display.html?id=57266 - ---- DBD-mysql-4.033/t/41int_min_max.t 2016-03-02 17:52:49.620948225 +0100 -+++ DBD-mysql-4.033/t/41int_min_max.t 2016-03-02 17:52:20.582073477 +0100 -@@ -0,0 +1,148 @@ -+use strict; -+use warnings; -+use bigint; -+ -+use DBI; -+use Test::More; -+use lib 't', '.'; -+use Data::Dumper; -+require 'lib.pl'; -+use vars qw($test_dsn $test_user $test_password); -+ -+my $dbh; -+eval {$dbh= DBI->connect($test_dsn, $test_user, $test_password, -+ { RaiseError => 1, PrintError => 1, AutoCommit => 1 });}; -+if ($@) { -+ plan skip_all => "no database connection"; -+} -+ -+if (!MinimumVersion($dbh, '4.1')) { -+ plan skip_all => "ERROR: $DBI::errstr. Can't continue test"; -+ plan skip_all => -+ "SKIP TEST: You must have MySQL version 4.1 and greater for this test to run"; -+} -+# nostrict tests + strict tests + init/tear down commands -+plan tests => 19*8 + 17*8 + 4; -+ -+my $table = 'dbd_mysql_t41minmax'; # name of the table we will be using -+my $mode; # 'strict' or 'nostrict' corresponds to strict SQL mode -+ -+sub test_int_type ($$$$) { -+ my ($perl_type, $mysql_type, $min, $max) = @_; -+ -+ # Disable the warning text clobbering our output -+ local $SIG{__WARN__} = sub { 1; }; -+ -+ # Create the table -+ ok($dbh->do(qq{DROP TABLE IF EXISTS $table}), "removing $table"); -+ ok($dbh->do(qq{ -+ CREATE TABLE `$table` ( -+ `id` int not null auto_increment, -+ `val` $mysql_type, -+ primary key (id) -+ ) -+ }), "creating minmax table for type $mysql_type"); -+ -+ my ($store, $retrieve); # statements -+ my $read_value; # retrieved value -+ ok($store = $dbh->prepare("INSERT INTO $table (val) VALUES (?)")); -+ ok($retrieve = $dbh->prepare("SELECT val from $table where id=(SELECT MAX(id) FROM $table)")); -+ -+ ######################################## -+ # Insert allowed min value -+ ######################################## -+ ok($store->bind_param( 1, $min->bstr(), $perl_type ), "binding minimal $mysql_type, mode=$mode"); -+ ok($store->execute(), "inserting min data for type $mysql_type, mode=$mode"); -+ -+ ######################################## -+ # Read it back and compare -+ ######################################## -+ ok{$retrieve->execute()}; -+ ($read_value) = $retrieve->fetchrow_array(); -+ cmp_ok($read_value, 'eq', $min, "retrieved minimal value for $mysql_type, mode=$mode"); -+ -+ ######################################## -+ # Insert allowed max value -+ ######################################## -+ ok($store->bind_param( 1, $max->bstr(), $perl_type ), "binding maximal $mysql_type, mode=$mode"); -+ ok($store->execute(), "inserting max data for type $mysql_type, mode=$mode"); -+ -+ ######################################## -+ # Read it back and compare -+ ######################################## -+ ok{$retrieve->execute()}; -+ ($read_value) = $retrieve->fetchrow_array(); -+ cmp_ok($read_value, 'eq', $max, "retrieved maximal value for $mysql_type, mode=$mode"); -+ -+ ######################################## -+ # Try to insert under the limit value -+ ######################################## -+ ok($store->bind_param( 1, ($min-1)->bstr(), $perl_type ), "binding less than minimal $mysql_type, mode=$mode"); -+ if ($mode eq 'strict') { -+ $@ = ''; -+ eval{$store->execute()}; -+ like($@, qr/Out of range value for column 'val'/, "Error, you stored ".($min-1)." into $mysql_type, mode=$mode\n". -+ Data::Dumper->Dump([$dbh->selectall_arrayref("SELECT * FROM $table")]). -+ Data::Dumper->Dump([$dbh->selectall_arrayref("describe $table")]) -+ ); -+ } else { -+ ok{$store->execute()}; -+ ######################################## -+ # Check that it was rounded correctly -+ ######################################## -+ ok{$retrieve->execute()}; -+ ($read_value) = $retrieve->fetchrow_array(); -+ cmp_ok($read_value, 'eq', $min, "retrieved minimal value for type $mysql_type, mode=$mode"); -+ }; -+ -+ ######################################## -+ # Try to insert over the limit value -+ ######################################## -+ ok($store->bind_param( 1, ($max+1)->bstr(), $perl_type ), "binding more than maximal $mysql_type, mode=$mode"); -+ if ($mode eq 'strict') { -+ $@ = ''; -+ eval{$store->execute()}; -+ like($@, qr/Out of range value for column 'val'/, "Error, you stored ".($max+1)." into $mysql_type, mode=$mode\n". -+ Data::Dumper->Dump([$dbh->selectall_arrayref("SELECT * FROM $table")]). -+ Data::Dumper->Dump([$dbh->selectall_arrayref("describe $table")]) -+ ); -+ } else { -+ ok{$store->execute()}; -+ ######################################## -+ # Check that it was rounded correctly -+ ######################################## -+ ok{$retrieve->execute()}; -+ ($read_value) = $retrieve->fetchrow_array(); -+ cmp_ok($read_value, 'eq', $max, "retrieved maximal value for type $mysql_type, mode=$mode"); -+ }; -+} -+ -+# Set strict SQL mode -+ok($dbh->do("SET SQL_MODE='STRICT_ALL_TABLES'"),"Enter strict SQL mode."); -+$mode = 'strict'; -+ -+test_int_type(DBI::SQL_TINYINT, 'tinyint signed', -2**7, 2**7-1); -+test_int_type(DBI::SQL_TINYINT, 'tinyint unsigned', 0, 2**8-1); -+test_int_type(DBI::SQL_SMALLINT, 'smallint signed', -2**15, 2**15-1); -+test_int_type(DBI::SQL_SMALLINT, 'smallint unsigned', 0, 2**16-1); -+test_int_type(DBI::SQL_INTEGER, 'int signed', -2**31, 2**31-1); -+test_int_type(DBI::SQL_INTEGER, 'int unsigned', 0, 2**32-1); -+test_int_type(DBI::SQL_BIGINT, 'bigint signed', -2**63, 2**63-1); -+test_int_type(DBI::SQL_BIGINT, 'bigint unsigned', 0, 2**64-1); -+ -+# Do not use strict SQL mode -+ok($dbh->do("SET SQL_MODE=''"),"Leave strict SQL mode."); -+$mode = 'nostrict'; -+ -+test_int_type(DBI::SQL_TINYINT, 'tinyint signed', -2**7, 2**7-1); -+test_int_type(DBI::SQL_TINYINT, 'tinyint unsigned', 0, 2**8-1); -+test_int_type(DBI::SQL_SMALLINT, 'smallint signed', -2**15, 2**15-1); -+test_int_type(DBI::SQL_SMALLINT, 'smallint unsigned', 0, 2**16-1); -+test_int_type(DBI::SQL_INTEGER, 'int signed', -2**31, 2**31-1); -+test_int_type(DBI::SQL_INTEGER, 'int unsigned', 0, 2**32-1); -+test_int_type(DBI::SQL_BIGINT, 'bigint signed', -2**63, 2**63-1); -+test_int_type(DBI::SQL_BIGINT, 'bigint unsigned', 0, 2**64-1); -+ -+ok ($dbh->do("DROP TABLE $table")); -+ -+ok $dbh->disconnect; diff -r c0715e78cafb -r 6587d6b48782 components/perl_modules/dbd-mysql/patches/05_31insertid.t.patch --- a/components/perl_modules/dbd-mysql/patches/05_31insertid.t.patch Tue Oct 18 13:46:28 2016 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -https://rt.cpan.org/Public/Bug/Display.html?id=108000 -https://bugs.mysql.com/bug.php?id=78778 - -The fix will be available in next DBD::mysql stable release - -commit 85459c2f43243e41841180e554e4ef142d95d56b -Author: Michiel Beijen -Date: Mon Aug 1 08:10:33 2016 +0200 - - $dbh->{mysql_insertid} is cleared after SELECT - - Apparently, on t/31insertid.t, there is one test that fails when - compiled against libmysqlclient 5.7 or up; issuing a SELECT statement - on the same database handle that previously executed an INSERT clears - $dbh->{mysql_insertid}, while previously this was retained. - (https://rt.cpan.org/Ticket/Display.html?id=108000) - ---- a/Changes -+++ b/Changes -@@ -1,3 +1,10 @@ -+2016-08-01 Patrick Galbraith, Michiel Beijen, DBI/DBD community (4.035_01) -+* Apparently, on t/31insertid.t, there is one test that fails when compiled -+ against libmysqlclient 5.7 or up; issuing a SELECT statement on the same -+ database handle that previously executed an INSERT clears -+ $dbh->{mysql_insertid}, while previously this was retained. -+ (https://rt.cpan.org/Ticket/Display.html?id=108000) -+ - 2016-07-09 Patrick Galbraith, Michiel Beijen, DBI/DBD community (4.035) - * Add DBI back to configure_requires, fix by miyagawa. - -diff --git a/lib/DBD/mysql.pm b/lib/DBD/mysql.pm -index 069e882..4830b9d 100644 ---- a/lib/DBD/mysql.pm -+++ b/lib/DBD/mysql.pm -@@ -1733,10 +1733,14 @@ have impact on the I attribute. - - =item mysql_insertid - --MySQL has the ability to choose unique key values automatically. If this --happened, the new ID will be stored in this attribute. An alternative --way for accessing this attribute is via $dbh->{'mysql_insertid'}. --(Note we are using the $dbh in this case!) -+If the statement you executed performs an INSERT, and there is an AUTO_INCREMENT -+column in the table you inserted in, this attribute holds the value stored into -+the AUTO_INCREMENT column, if that value is automatically generated, by -+storing NULL or 0 or was specified as an explicit value. -+ -+Typically, you'd access the value via $sth->{mysql_insertid}. The value can -+also be accessed via $dbh->{mysql_insertid} but this can easily -+produce incorrect results in case one database handle is shared. - - =item mysql_is_blob - -diff --git a/t/31insertid.t b/t/31insertid.t -index 18a6d3b..f00c5a4 100644 ---- a/t/31insertid.t -+++ b/t/31insertid.t -@@ -16,7 +16,7 @@ if ($@) { - plan skip_all => - "no database connection"; - } --plan tests => 18; -+plan tests => 19; - - ok $dbh->do('SET @@auto_increment_offset = 1'); - ok $dbh->do('SET @@auto_increment_increment = 1'); -@@ -38,7 +38,8 @@ ok defined $sth; - - ok $sth->execute("Jochen"); - --is $dbh->{'mysql_insertid'}, 1, "insert id == $dbh->{mysql_insertid}"; -+is $sth->{mysql_insertid}, 1, "insert id == $sth->{mysql_insertid}"; -+is $dbh->{mysql_insertid}, 1, "insert id == $dbh->{mysql_insertid}"; - - ok $sth->execute("Patrick"); - -@@ -53,12 +54,15 @@ ok ($max_id= $sth2->fetch()); - - ok defined $max_id; - --cmp_ok $sth->{'mysql_insertid'}, '==', $max_id->[0], "sth insert id $sth->{'mysql_insertid'} == max(id) $max_id->[0] in dbd_mysql_t31"; -- --cmp_ok $dbh->{'mysql_insertid'}, '==', $max_id->[0], "dbh insert id $dbh->{'mysql_insertid'} == max(id) $max_id->[0] in dbd_mysql_t31"; -+SKIP: { -+ skip 'using libmysqlclient 5.7 or up we now have an empty dbh insertid', -+ 1, if $dbh->{mysql_clientversion} >= 50700; -+ cmp_ok $dbh->{mysql_insertid}, '==', $max_id->[0], -+ "dbh insert id $dbh->{'mysql_insertid'} == max(id) $max_id->[0] in dbd_mysql_t31"; -+} -+cmp_ok $sth->{mysql_insertid}, '==', $max_id->[0], -+ "sth insert id $sth->{'mysql_insertid'} == max(id) $max_id->[0] in dbd_mysql_t31"; - - ok $sth->finish(); -- - ok $sth2->finish(); -- - ok $dbh->disconnect(); - diff -r c0715e78cafb -r 6587d6b48782 components/perl_modules/dbd-mysql/test/results-all.master --- a/components/perl_modules/dbd-mysql/test/results-all.master Tue Oct 18 13:46:28 2016 -0500 +++ b/components/perl_modules/dbd-mysql/test/results-all.master Tue Oct 04 14:04:16 2016 +0200 @@ -79,6 +79,6 @@ t/rt91715.t .......................... ok t/version.t .......................... ok All tests successful. -Files=67, Tests=1642, +Files=67, Tests=1640, Result: PASS make[1]: Leaving directory '$(@D)'