summaryrefslogtreecommitdiff
path: root/mysql-test/suite/parts
diff options
context:
space:
mode:
authorMonty <monty@mariadb.org>2020-10-16 15:36:12 +0300
committerMonty <monty@mariadb.org>2020-10-16 19:48:36 +0300
commit311b7f94e6115b50e947767af3172a73508958eb (patch)
tree0887f148077a8d52f23ecdf828f6fd1e281b42dc /mysql-test/suite/parts
parent469a249a5be775d6a536093db8c4cf29db3f16b4 (diff)
downloadmariadb-git-311b7f94e6115b50e947767af3172a73508958eb.tar.gz
MDEV-23248 Server crashes in mi_extra / ha_partition::loop_extra_alter upon REORGANIZE
This also fixes some issues with MDEV-23730 s3.replication_partition 'innodb,mix' segv The problem was that mysql_change_partitions() closes all handler files in case of error, which was not properly reflected in fast_alter_partition_table(). This caused handle_alter_part_error() to try to close already closed tables, which caused the crash. Fixed fast_alter_partion_table() to reflect when tables are opened. I also fixed that ha_partition::change_partitions() resets m_new_file in case of errors. Either of the above changes fixes the issue, but both are needed to ensure that the code works as expected.
Diffstat (limited to 'mysql-test/suite/parts')
-rw-r--r--mysql-test/suite/parts/r/reorganize.result13
-rw-r--r--mysql-test/suite/parts/t/reorganize.test20
2 files changed, 33 insertions, 0 deletions
diff --git a/mysql-test/suite/parts/r/reorganize.result b/mysql-test/suite/parts/r/reorganize.result
new file mode 100644
index 00000000000..5e6fe176edc
--- /dev/null
+++ b/mysql-test/suite/parts/r/reorganize.result
@@ -0,0 +1,13 @@
+#
+# MDEV-23248 Server crashes in mi_extra /
+# ha_partition::loop_extra_alter upon REORGANIZE
+#
+CREATE TABLE t1 (a INT, b INT) ENGINE=MyISAM PARTITION BY RANGE (a) SUBPARTITION BY HASH (a) SUBPARTITIONS 70 (PARTITION p1 VALUES LESS THAN (100), PARTITION p2 VALUES LESS THAN MAXVALUE);
+INSERT INTO t1 SELECT 4, 6 FROM seq_1_to_131072;
+UPDATE t1 SET a = 7;
+set @org_debug=@@debug_dbug;
+set @@debug_dbug="+d,debug_abort_copy_partitions";
+ALTER TABLE t1 REORGANIZE PARTITION p1,p2 INTO (PARTITION p1 VALUES LESS THAN (5), PARTITION p2 VALUES LESS THAN MAXVALUE);
+ERROR 42000: Table 't1' uses an extension that doesn't exist in this MariaDB version
+set @@debug_dbug=@org_debug;
+DROP TABLE t1;
diff --git a/mysql-test/suite/parts/t/reorganize.test b/mysql-test/suite/parts/t/reorganize.test
new file mode 100644
index 00000000000..66641254468
--- /dev/null
+++ b/mysql-test/suite/parts/t/reorganize.test
@@ -0,0 +1,20 @@
+--source include/have_sequence.inc
+--source include/have_partition.inc
+--source include/have_debug.inc
+
+--echo #
+--echo # MDEV-23248 Server crashes in mi_extra /
+--echo # ha_partition::loop_extra_alter upon REORGANIZE
+--echo #
+
+CREATE TABLE t1 (a INT, b INT) ENGINE=MyISAM PARTITION BY RANGE (a) SUBPARTITION BY HASH (a) SUBPARTITIONS 70 (PARTITION p1 VALUES LESS THAN (100), PARTITION p2 VALUES LESS THAN MAXVALUE);
+INSERT INTO t1 SELECT 4, 6 FROM seq_1_to_131072;
+UPDATE t1 SET a = 7;
+
+set @org_debug=@@debug_dbug;
+set @@debug_dbug="+d,debug_abort_copy_partitions";
+--error ER_UNSUPPORTED_EXTENSION
+ALTER TABLE t1 REORGANIZE PARTITION p1,p2 INTO (PARTITION p1 VALUES LESS THAN (5), PARTITION p2 VALUES LESS THAN MAXVALUE);
+set @@debug_dbug=@org_debug;
+
+DROP TABLE t1;