From 511ebe238d3d9b29963d59a022a695c96264b7bc Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 7 May 2019 17:43:38 -0400 Subject: [PATCH] import mariadb-10.3.11-2.module+el8+2885+7b8bb354 --- SOURCES/rhbz_1686818.patch | 114 +++++++++++++++++++++++++++++++++++++ SPECS/mariadb.spec | 11 +++- 2 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 SOURCES/rhbz_1686818.patch diff --git a/SOURCES/rhbz_1686818.patch b/SOURCES/rhbz_1686818.patch new file mode 100644 index 0000000..8b55754 --- /dev/null +++ b/SOURCES/rhbz_1686818.patch @@ -0,0 +1,114 @@ +Patch for https://bugzilla.redhat.com/show_bug.cgi?id=1686818 +Picked from https://github.com/MariaDB/server/commit/802ce9672f + +Fixed by rebase to 10.3.12 + +--- mariadb-10.3.11/storage/innobase/handler/handler0alter.cc 2018-11-16 19:04:53.000000000 +0100 ++++ mariadb-10.3.11/storage/innobase/handler/handler0alter.cc_patched 2019-03-13 11:52:15.752268825 +0100 +@@ -7712,36 +7712,40 @@ err_exit: + index != NULL; + index = dict_table_get_next_index(index)) { + ++ bool has_prefixes = false; ++ for (size_t i = 0; i < dict_index_get_n_fields(index); i++) { ++ if (dict_index_get_nth_field(index, i)->prefix_len) { ++ has_prefixes = true; ++ break; ++ } ++ } ++ + for (ulint i = 0; i < dict_index_get_n_fields(index); i++) { +- if (my_strcasecmp( +- system_charset_info, +- dict_index_get_nth_field(index, i)->name, +- from)) { ++ const dict_field_t* field ++ = dict_index_get_nth_field(index, i); ++ if (my_strcasecmp(system_charset_info, field->name, ++ from)) { + continue; + } + + info = pars_info_create(); + ++ int pos = i; ++ if (has_prefixes) { ++ pos = (pos << 16) + field->prefix_len; ++ } ++ + pars_info_add_ull_literal(info, "indexid", index->id); +- pars_info_add_int4_literal(info, "nth", i); ++ pars_info_add_int4_literal(info, "nth", pos); + pars_info_add_str_literal(info, "new", to); + + error = que_eval_sql( + info, + "PROCEDURE RENAME_SYS_FIELDS_PROC () IS\n" + "BEGIN\n" +- + "UPDATE SYS_FIELDS SET COL_NAME=:new\n" + "WHERE INDEX_ID=:indexid\n" + "AND POS=:nth;\n" +- +- /* Try again, in case there is a prefix_len +- encoded in SYS_FIELDS.POS */ +- +- "UPDATE SYS_FIELDS SET COL_NAME=:new\n" +- "WHERE INDEX_ID=:indexid\n" +- "AND POS>=65536*:nth AND POS<65536*(:nth+1);\n" +- + "END;\n", + FALSE, trx); + +--- mariadb-10.3.11/mysql-test/suite/innodb/r/innodb-alter.result 2018-11-16 19:04:50.000000000 +0100 ++++ mariadb-10.3.11/mysql-test/suite/innodb/r/innodb-alter.result_patched 2019-03-13 12:06:48.788107502 +0100 +@@ -879,6 +879,27 @@ NAME + a + b + DROP TABLE t1; ++# and an MDEV-18041 regression related to indexes prefixes ++create table `test` ( ++`test_old` varchar(255) NOT NULL, ++`other` varchar(255) NOT NULL, ++PRIMARY KEY (`test_old`,`other`), ++UNIQUE KEY uk (`test_old`(100), `other`) ++) ENGINE=InnoDB; ++select name, pos from information_schema.innodb_SYS_FIELDS where name in ('test_old', 'other', 'test_new'); ++name pos ++test_old 0 ++other 1 ++test_old 0 ++other 1 ++alter table `test` CHANGE COLUMN `test_old` `test_new` varchar(255) NOT NULL; ++select name, pos from information_schema.innodb_SYS_FIELDS where name in ('test_old', 'other', 'test_new'); ++name pos ++test_new 0 ++other 1 ++test_new 0 ++other 1 ++drop table `test`; + # + # BUG 20029625 - HANDLE_FATAL_SIGNAL (SIG=11) IN + # DICT_MEM_TABLE_COL_RENAME_LOW +--- mariadb-10.3.11/mysql-test/suite/innodb/t/innodb-alter.test 2018-11-16 19:04:50.000000000 +0100 ++++ mariadb-10.3.11/mysql-test/suite/innodb/t/innodb-alter.test_patched 2019-03-13 12:08:36.398847184 +0100 +@@ -545,6 +545,19 @@ SELECT C.NAME FROM INFORMATION_SCHEMA.IN + WHERE T.NAME='test/t1'; + DROP TABLE t1; + ++--echo # and an MDEV-18041 regression related to indexes prefixes ++create table `test` ( ++ `test_old` varchar(255) NOT NULL, ++ `other` varchar(255) NOT NULL, ++ PRIMARY KEY (`test_old`,`other`), ++ UNIQUE KEY uk (`test_old`(100), `other`) ++) ENGINE=InnoDB; ++ ++select name, pos from information_schema.innodb_SYS_FIELDS where name in ('test_old', 'other', 'test_new'); ++alter table `test` CHANGE COLUMN `test_old` `test_new` varchar(255) NOT NULL; ++select name, pos from information_schema.innodb_SYS_FIELDS where name in ('test_old', 'other', 'test_new'); ++drop table `test`; ++ + + --echo # + --echo # BUG 20029625 - HANDLE_FATAL_SIGNAL (SIG=11) IN diff --git a/SPECS/mariadb.spec b/SPECS/mariadb.spec index d59bb6c..a544207 100644 --- a/SPECS/mariadb.spec +++ b/SPECS/mariadb.spec @@ -149,7 +149,7 @@ Name: mariadb Version: 10.3.11 -Release: 1%{?with_debug:.debug}%{?dist} +Release: 2%{?with_debug:.debug}%{?dist} Epoch: 3 Summary: A very fast and robust SQL database server @@ -185,8 +185,10 @@ Source72: mariadb-server-galera.te # https://github.com/dciabrin/wsrep_sst_rsync_tunnel/blob/master/wsrep_sst_rsync_tunnel Source73: wsrep_sst_rsync_tunnel -# Patch1: Fix python shebang to specificaly say the python version +# Patch1: Fix python shebang to specificaly say the python version Patch1: %{pkgnamepatch}-shebang.patch +# Patch2: rhbz#1686818 +Patch2: rhbz_1686818.patch # Patch4: Red Hat distributions specific logrotate fix # it would be big unexpected change, if we start shipping it now. Better wait for MariaDB 10.2 Patch4: %{pkgnamepatch}-logrotate.patch @@ -694,6 +696,7 @@ sources. find . -name "*.jar" -type f -exec rm --verbose -f {} \; %patch1 -p1 +%patch2 -p1 %patch4 -p1 %patch7 -p1 %patch9 -p1 @@ -1586,6 +1589,10 @@ fi %endif %changelog +* Wed Mar 13 2019 Michal Schorm - 3:10.3.11-2 +- Added patch for rhbz#1686818 + Resolves: #1686818 + * Mon Dec 10 2018 Michal Schorm - 3:10.3.11-1 - Rebase to 10.3.11 - Remove README.mysql-cnf as we don't ship example configuration files anymore