Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package perl-DBD-MariaDB for openSUSE:Factory checked in at 2022-05-04 15:11:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-DBD-MariaDB (Old) and /work/SRC/openSUSE:Factory/.perl-DBD-MariaDB.new.1538 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-DBD-MariaDB" Wed May 4 15:11:05 2022 rev:5 rq:974829 version:1.22 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-DBD-MariaDB/perl-DBD-MariaDB.changes 2021-10-06 19:50:04.916060647 +0200 +++ /work/SRC/openSUSE:Factory/.perl-DBD-MariaDB.new.1538/perl-DBD-MariaDB.changes 2022-05-04 15:11:27.832195136 +0200 @@ -1,0 +2,22 @@ +Mon Apr 25 11:15:13 UTC 2022 - Tina M??ller <tina.muel...@suse.com> + +- Update patch perl-DBD-MariaDB-fix_c_32x_test.patch + +------------------------------------------------------------------- +Fri Apr 22 03:06:56 UTC 2022 - Tina M??ller <timueller+p...@suse.de> + +- updated to 1.22 + see /usr/share/doc/packages/perl-DBD-MariaDB/Changes + + 1.22 2022-04-22 + - Disable usage of libmysqld.a from MySQL 8.x series + - Install README.pod into DBD/MariaDB/ subdirectory + (https://github.com/gooddata/DBD-MariaDB/issues/146) + - Do not export driver private C functions + - Fix typo in error message + - Fix compatibility with new MariaDB client and server versions + (https://github.com/perl5-dbi/DBD-MariaDB/issues/164) + (https://github.com/perl5-dbi/DBD-MariaDB/issues/167) + (https://github.com/perl5-dbi/DBD-mysql/issues/333) + +------------------------------------------------------------------- Old: ---- DBD-MariaDB-1.21.tar.gz New: ---- DBD-MariaDB-1.22.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-DBD-MariaDB.spec ++++++ --- /var/tmp/diff_new_pack.KWAmTP/_old 2022-05-04 15:11:28.392195825 +0200 +++ /var/tmp/diff_new_pack.KWAmTP/_new 2022-05-04 15:11:28.396195830 +0200 @@ -1,7 +1,7 @@ # # spec file for package perl-DBD-MariaDB # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,20 +16,18 @@ # +%define cpan_name DBD-MariaDB Name: perl-DBD-MariaDB -Version: 1.21 +Version: 1.22 Release: 0 -%define cpan_name DBD-MariaDB -Summary: MariaDB and MySQL driver for the Perl5 Database Interface (DBI) License: Artistic-1.0 OR GPL-1.0-or-later -Group: Development/Libraries/Perl +Summary: MariaDB and MySQL driver for the Perl5 Database Interface (DBI) URL: https://metacpan.org/release/%{cpan_name} Source0: https://cpan.metacpan.org/authors/id/P/PA/PALI/%{cpan_name}-%{version}.tar.gz Source1: test-setup.sh Source2: test-clean.sh Source3: cpanspec.yml Patch0: perl-DBD-MariaDB-fix_c_32x_test.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: perl BuildRequires: perl-macros BuildRequires: perl(DBI) >= 1.608 @@ -79,8 +77,7 @@ are missing, mainly because no-one ever requested them. %prep -%setup -q -n %{cpan_name}-%{version} -%patch0 -p1 +%autosetup -n %{cpan_name}-%{version} -p1 %build # fails to detect the paths since perl 5.32 @@ -100,7 +97,6 @@ %perl_gen_filelist %files -f %{name}.files -%defattr(-,root,root,755) %doc Changes Changes.historic %license LICENSE ++++++ DBD-MariaDB-1.21.tar.gz -> DBD-MariaDB-1.22.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBD-MariaDB-1.21/Changes new/DBD-MariaDB-1.22/Changes --- old/DBD-MariaDB-1.21/Changes 2019-02-27 12:04:38.000000000 +0100 +++ new/DBD-MariaDB-1.22/Changes 2022-04-22 00:58:12.000000000 +0200 @@ -1,3 +1,14 @@ +1.22 2022-04-22 + - Disable usage of libmysqld.a from MySQL 8.x series + - Install README.pod into DBD/MariaDB/ subdirectory + (https://github.com/gooddata/DBD-MariaDB/issues/146) + - Do not export driver private C functions + - Fix typo in error message + - Fix compatibility with new MariaDB client and server versions + (https://github.com/perl5-dbi/DBD-MariaDB/issues/164) + (https://github.com/perl5-dbi/DBD-MariaDB/issues/167) + (https://github.com/perl5-dbi/DBD-mysql/issues/333) + 1.21 2019-02-27 - Fix skipping test t/14destruct.t - Revert "MySQL bug #93276 is fixed in 8.0.15" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBD-MariaDB-1.21/META.json new/DBD-MariaDB-1.22/META.json --- old/DBD-MariaDB-1.21/META.json 2019-02-27 12:05:31.000000000 +0100 +++ new/DBD-MariaDB-1.22/META.json 2022-04-22 00:58:37.000000000 +0200 @@ -97,7 +97,7 @@ "x_IRC" : "irc://irc.perl.org/#dbi", "x_MailingList" : "mailto:dbi-...@perl.org" }, - "version" : "1.21", + "version" : "1.22", "x_contributors" : [ "Alexandr Ciornii <alexcho...@gmail.com>", "Alexey Molchanov <alexey.molcha...@portaone.com>", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBD-MariaDB-1.21/META.yml new/DBD-MariaDB-1.22/META.yml --- old/DBD-MariaDB-1.21/META.yml 2019-02-27 12:05:31.000000000 +0100 +++ new/DBD-MariaDB-1.22/META.yml 2022-04-22 00:58:37.000000000 +0200 @@ -55,7 +55,7 @@ homepage: https://github.com/gooddata/DBD-MariaDB license: http://dev.perl.org/licenses/ repository: git://github.com/gooddata/DBD-MariaDB.git -version: '1.21' +version: '1.22' x_contributors: - 'Alexandr Ciornii <alexcho...@gmail.com>' - 'Alexey Molchanov <alexey.molcha...@portaone.com>' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBD-MariaDB-1.21/Makefile.PL new/DBD-MariaDB-1.22/Makefile.PL --- old/DBD-MariaDB-1.21/Makefile.PL 2019-02-27 12:04:38.000000000 +0100 +++ new/DBD-MariaDB-1.22/Makefile.PL 2022-04-22 00:58:12.000000000 +0200 @@ -450,6 +450,17 @@ 'realclean' => { 'FILES' => 't/MariaDB.mtest' }, 'C' => ["dbdimp.c", "MariaDB.c", "socket.c"], 'XS' => {'MariaDB.xs' => 'MariaDB.c'}, + 'PM' => { + 'lib/DBD/MariaDB.pm' => '$(INST_LIB)/DBD/MariaDB.pm', + 'lib/DBD/MariaDB.pod' => '$(INST_LIB)/DBD/MariaDB.pod', + 'lib/DBD/MariaDB/INSTALL.pod' => '$(INST_LIB)/DBD/MariaDB/INSTALL.pod', + 'README.pod' => '$(INST_LIB)/DBD/MariaDB/README.pod', + }, + 'MAN3PODS' => { + 'lib/DBD/MariaDB.pod' => '$(INST_MAN3DIR)/DBD::MariaDB.$(MAN3EXT)', + 'lib/DBD/MariaDB/INSTALL.pod' => '$(INST_MAN3DIR)/DBD::MariaDB::INSTALL.$(MAN3EXT)', + 'README.pod' => '$(INST_MAN3DIR)/DBD::MariaDB::README.$(MAN3EXT)', + }, 'OBJECT' => '$(O_FILES)', 'LIBS' => (join ' ', @libdirs, $main_lib, @libs), @ldflags ? (dynamic_lib => { OTHERLDFLAGS => (join ' ', @ldflags) }) : (), @@ -743,8 +754,16 @@ # and always crash in mysql_real_connect() function, so avoid its usage # https://jira.mariadb.org/browse/MDEV-16478 $function .= "\n#if defined(MARIADB_BASE_VERSION) || defined(MARIADB_PACKAGE_VERSION)\nif (mysql_get_client_version() >= 100301 && mysql_get_client_version() < 100308) return 1;\n#endif\n"; + # libmysqld.a from MySQL 8.x is broken too + $function .= "\n#if !defined(MARIADB_BASE_VERSION) && !defined(MARIADB_PACKAGE_VERSION)\nif (mysql_get_client_version() >= 80000) return 1;\n#endif\n"; } - $function .= 'return (mysql_get_client_version() == MYSQL_VERSION_ID) ? 0 : 1;'; + # MariaDB Connector/C 3.1.10+ has broken mysql_get_client_version() function, so use mariadb_get_infov(MARIADB_CLIENT_VERSION_ID) instead + $function .= "size_t version;\n"; + $function .= "#if defined(MARIADB_PACKAGE_VERSION) && defined(MARIADB_PACKAGE_VERSION_ID) && MARIADB_PACKAGE_VERSION_ID >= 30000\n"; + $function .= "if (mariadb_get_infov((void *)0, MARIADB_CLIENT_VERSION_ID, &version) != 0)\n"; + $function .= "#endif\n"; + $function .= "version = mysql_get_client_version();\n"; + $function .= 'return (version == MYSQL_VERSION_ID) ? 0 : 1;'; # libmysqld is built using g++ rather than gcc and sometimes # we have to use libstdc++ to resolve linking problems foreach my $add_ldflags (undef, '-lstdc++') { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBD-MariaDB-1.21/dbdimp.c new/DBD-MariaDB-1.22/dbdimp.c --- old/DBD-MariaDB-1.21/dbdimp.c 2019-02-27 12:04:38.000000000 +0100 +++ new/DBD-MariaDB-1.22/dbdimp.c 2022-04-22 00:58:12.000000000 +0200 @@ -15,6 +15,16 @@ #include "dbdimp.h" +#ifdef HAVE_GET_CHARSET_NUMBER +/* Available only in some clients and declared in header file my_sys.h which cannot be included */ +unsigned int get_charset_number(const char *cs_name, unsigned int cs_flags); +#endif + +#if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) +/* Do not export non-static functions from driver library */ +#pragma GCC visibility push(hidden) +#endif + #define ASYNC_CHECK_RETURN(h, value)\ if(imp_dbh->async_query_in_flight) {\ mariadb_dr_do_error(h, CR_UNKNOWN_ERROR, "Calling a synchronous function on an asynchronous handle", "HY000");\ @@ -513,7 +523,7 @@ /* count embedded options */ -int count_embedded_options(char *st) +static int count_embedded_options(char *st) { int rc; char c; @@ -538,7 +548,7 @@ /* Free embedded options */ -int free_embedded_options(char ** options_list, int options_count) +static int free_embedded_options(char ** options_list, int options_count) { int i; @@ -556,7 +566,7 @@ Print out embedded option settings */ -int print_embedded_options(PerlIO *stream, char ** options_list, int options_count) +static int print_embedded_options(PerlIO *stream, char ** options_list, int options_count) { int i; @@ -573,7 +583,7 @@ /* */ -char **fill_out_embedded_options(char *options, +static char **fill_out_embedded_options(char *options, int options_type, STRLEN slen, int cnt) { @@ -617,6 +627,25 @@ return options_list; } +#if MYSQL_VERSION_ID < 50001 +/* MySQL client prior to version 5.0.1 does not implement mysql_real_escape_string() for SERVER_STATUS_NO_BACKSLASH_ESCAPES */ +static unsigned long string_escape_quotes(char *to, const char *from, unsigned long len) +{ + const char *to_start = to; + const char *end = from + len; + + while (from < end) + { + if (*from == '\'') + *to++ = '\''; + *to++ = *from++; + } + + *to = '\0'; + return to - to_start; +} +#endif + /* constructs an SQL statement previously prepared with actual values replacing placeholders @@ -828,9 +857,8 @@ #if MYSQL_VERSION_ID < 50001 if (sock->server_status & SERVER_STATUS_NO_BACKSLASH_ESCAPES) { - *ptr++ = 'X'; *ptr++ = '\''; - ptr += mysql_hex_string(ptr, ph->value, ph->len); + ptr += string_escape_quotes(ptr, ph->value, ph->len); *ptr++ = '\''; } else @@ -1364,11 +1392,6 @@ mariadb_dr_do_error(h, CR_CONNECTION_ERROR, msg, "HY000"); } -#ifdef HAVE_GET_CHARSET_NUMBER -/* Available only in some clients and declared in header file my_sys.h which cannot be included */ -unsigned int get_charset_number(const char *cs_name, unsigned int cs_flags); -#endif - /*************************************************************************** * * Name: mariadb_dr_connect @@ -2221,7 +2244,7 @@ } if (connected && mysql_get_server_version(sock) < 40100) { - mariadb_dr_do_error(dbh, CR_CONNECTION_ERROR, "Connection error: MariaDB or MySQL server version is older then 4.1.0", "HY000"); + mariadb_dr_do_error(dbh, CR_CONNECTION_ERROR, "Connection error: MariaDB or MySQL server version is older than 4.1.0", "HY000"); mariadb_db_disconnect(dbh, imp_dbh); return FALSE; } @@ -2238,7 +2261,7 @@ } if (mysql_get_server_version(sock) < 40100) { - mariadb_dr_do_error(dbh, CR_CONNECTION_ERROR, "Connection error: MariaDB or MySQL server version is older then 4.1.0", "HY000"); + mariadb_dr_do_error(dbh, CR_CONNECTION_ERROR, "Connection error: MariaDB or MySQL server version is older than 4.1.0", "HY000"); mariadb_db_disconnect(dbh, imp_dbh); return FALSE; } @@ -6406,9 +6429,8 @@ #if MYSQL_VERSION_ID < 50001 if (imp_dbh->pmysql->server_status & SERVER_STATUS_NO_BACKSLASH_ESCAPES) { - *sptr++ = 'X'; *sptr++ = '\''; - sptr += mysql_hex_string(sptr, ptr, len); + sptr += string_escape_quotes(sptr, ptr, len); *sptr++ = '\''; } else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBD-MariaDB-1.21/dbdimp.h new/DBD-MariaDB-1.22/dbdimp.h --- old/DBD-MariaDB-1.21/dbdimp.h 2019-02-27 12:04:38.000000000 +0100 +++ new/DBD-MariaDB-1.22/dbdimp.h 2022-04-22 00:58:12.000000000 +0200 @@ -322,6 +322,32 @@ #define my_bool bool #endif +/* + * MariaDB Connector/C 3.1.10 changed API of mysql_get_client_version() + * function. Before that release it returned client version. With that release + * it started returning Connector/C package version. + * + * So when compiling with MariaDB Connector/C client library, redefine + * mysql_get_client_version() to always returns client version via function + * mariadb_get_infov(MARIADB_CLIENT_VERSION_ID) call. + * + * Driver code expects for a long time that mysql_get_client_version() call + * returns client version and not something different. + * + * Function mariadb_get_infov() is supported since MariaDB Connector/C 3.0+. + */ +#if defined(MARIADB_PACKAGE_VERSION) && defined(MARIADB_PACKAGE_VERSION_ID) && MARIADB_PACKAGE_VERSION_ID >= 30000 +PERL_STATIC_INLINE unsigned long mariadb_get_client_version(void) +{ + /* MARIADB_CLIENT_VERSION_ID really expects size_t type, documentation is wrong and says unsigned int. */ + size_t version; + if (mariadb_get_infov(NULL, MARIADB_CLIENT_VERSION_ID, &version) != 0) + version = mysql_get_client_version(); /* On error fallback to mysql_get_client_version() */ + return version; +} +#define mysql_get_client_version() mariadb_get_client_version() +#endif + /* MYSQL_SECURE_AUTH became a no-op from MySQL 5.7.5 and is removed from MySQL 8.0.3 */ #if defined(MARIADB_BASE_VERSION) || MYSQL_VERSION_ID <= 50704 #define HAVE_SECURE_AUTH diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBD-MariaDB-1.21/lib/DBD/MariaDB.pm new/DBD-MariaDB-1.22/lib/DBD/MariaDB.pm --- old/DBD-MariaDB-1.21/lib/DBD/MariaDB.pm 2019-02-27 12:04:38.000000000 +0100 +++ new/DBD-MariaDB-1.22/lib/DBD/MariaDB.pm 2022-04-22 00:58:12.000000000 +0200 @@ -10,7 +10,7 @@ use DynaLoader(); our @ISA = qw(DynaLoader); -our $VERSION = '1.21'; +our $VERSION = '1.22'; bootstrap DBD::MariaDB $VERSION; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBD-MariaDB-1.21/socket.c new/DBD-MariaDB-1.22/socket.c --- old/DBD-MariaDB-1.21/socket.c 2019-02-27 12:04:38.000000000 +0100 +++ new/DBD-MariaDB-1.22/socket.c 2022-04-22 00:58:12.000000000 +0200 @@ -16,6 +16,11 @@ #include <unistd.h> #endif +#if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) +/* Do not export non-static functions from driver library */ +#pragma GCC visibility push(hidden) +#endif + /* * Warning: Native socket code must be outside of dbdimp.c and dbdimp.h because * perl header files redefine socket function. This file must not diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBD-MariaDB-1.21/t/40server_prepare.t new/DBD-MariaDB-1.22/t/40server_prepare.t --- old/DBD-MariaDB-1.21/t/40server_prepare.t 2019-02-27 12:04:38.000000000 +0100 +++ new/DBD-MariaDB-1.22/t/40server_prepare.t 2022-04-22 00:58:12.000000000 +0200 @@ -72,16 +72,19 @@ is_deeply($dbh->selectall_arrayref('SELECT id, mydata FROM t3'), [[1, 2]]); +# MariaDB server since version 10.6.2 can prepare all statements except PREPARE, EXECUTE, and DEALLOCATE / DROP PREPARE. Previous MariaDB and MySQL versions cannot prepare USE statement. +my $non_preparable_statement = ($dbh->{mariadb_serverversion} >= 100602) ? q(PREPARE stmt FROM "SELECT 1") : ("USE " . $dbh->quote_identifier($test_db)); + $dbh->{mariadb_server_prepare_disable_fallback} = 1; my $error_handler_called = 0; $dbh->{HandleError} = sub { $error_handler_called = 1; die $_[0]; }; -eval { $dbh->prepare("USE " . $dbh->quote_identifier($test_db)) }; +eval { $dbh->prepare($non_preparable_statement); }; $dbh->{HandleError} = undef; -ok($error_handler_called, 'USE is not supported with mariadb_server_prepare_disable_fallback=1'); +ok($error_handler_called, "Non-preparable statement '$non_preparable_statement' is not supported with mariadb_server_prepare_disable_fallback=1"); $dbh->{mariadb_server_prepare_disable_fallback} = 0; my $sth4; -ok($sth4 = $dbh->prepare("USE " . $dbh->quote_identifier($test_db)), 'USE is supported with mariadb_server_prepare_disable_fallback=0'); +ok($sth4 = $dbh->prepare($non_preparable_statement), "Non-preparable statement '$non_preparable_statement' is supported with mariadb_server_prepare_disable_fallback=0"); ok($sth4->execute()); ok ($dbh->do(qq{DROP TABLE t3}), "cleaning up"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/DBD-MariaDB-1.21/t/45bind_no_backslash_escapes.t new/DBD-MariaDB-1.22/t/45bind_no_backslash_escapes.t --- old/DBD-MariaDB-1.21/t/45bind_no_backslash_escapes.t 2019-02-27 12:04:38.000000000 +0100 +++ new/DBD-MariaDB-1.22/t/45bind_no_backslash_escapes.t 2022-04-22 00:58:12.000000000 +0200 @@ -18,10 +18,6 @@ plan skip_all => "Servers < 5.0.1 do not support sql_mode NO_BACKSLASH_ESCAPES"; } -if ($dbh->{mariadb_clientversion} < 50001) { - $id2_quoted_no_backslash = q(X'737472696E675C737472696E6722737472696E6727737472696E67'); -} - plan tests => 20; ok $dbh->do('CREATE TEMPORARY TABLE t(id VARCHAR(255), value TEXT)'); ++++++ perl-DBD-MariaDB-fix_c_32x_test.patch ++++++ --- /var/tmp/diff_new_pack.KWAmTP/_old 2022-05-04 15:11:28.560196031 +0200 +++ /var/tmp/diff_new_pack.KWAmTP/_new 2022-05-04 15:11:28.560196031 +0200 @@ -13,26 +13,12 @@ @@ -77,7 +77,8 @@ my $error_handler_called = 0; $dbh->{HandleError} = sub { $error_handler_called = 1; die $_[0]; }; - eval { $dbh->prepare("USE " . $dbh->quote_identifier($test_db)) }; + eval { $dbh->prepare($non_preparable_statement); }; $dbh->{HandleError} = undef; --ok($error_handler_called, 'USE is not supported with mariadb_server_prepare_disable_fallback=1'); +-ok($error_handler_called, "Non-preparable statement '$non_preparable_statement' is not supported with mariadb_server_prepare_disable_fallback=1"); + -+# ok($error_handler_called, 'USE is not supported with mariadb_server_prepare_disable_fallback=1'); ++# ok($error_handler_called, "Non-preparable statement '$non_preparable_statement' is not supported with mariadb_server_prepare_disable_fallback=1"); $dbh->{mariadb_server_prepare_disable_fallback} = 0; my $sth4; -diff --git a/t/45bind_no_backslash_escapes.t b/t/45bind_no_backslash_escapes.t -index 13dce12..f4fccb9 100644 ---- a/t/45bind_no_backslash_escapes.t -+++ b/t/45bind_no_backslash_escapes.t -@@ -18,7 +18,8 @@ if ($dbh->{mariadb_serverversion} < 50001) { - plan skip_all => "Servers < 5.0.1 do not support sql_mode NO_BACKSLASH_ESCAPES"; - } - --if ($dbh->{mariadb_clientversion} < 50001) { -+# As from mariadb-connect-c 3.2.x version number for mariadb_clientversion is 3020x -+if ($dbh->{mariadb_clientversion} < 50001 && $dbh->{mariadb_serverversion} < 50001) { - $id2_quoted_no_backslash = q(X'737472696E675C737472696E6722737472696E6727737472696E67'); - } -