From d3cc7f5d09c8bf89cdd0f02fcf4bffcb66ef1a8f Mon Sep 17 00:00:00 2001 From: Nayuta Yanagisawa Date: Fri, 29 Oct 2021 19:04:53 +0900 Subject: MDEV-26127 Assertion `err != DB_DUPLICATE_KEY' failed or InnoDB: Failing assertion: id != 0 on ALTER ... REBUILD PARTITION --- mysql-test/suite/parts/r/mdev_26127.result | 7 +++++++ mysql-test/suite/parts/t/mdev_26127.test | 12 ++++++++++++ sql/ha_partition.cc | 2 ++ 3 files changed, 21 insertions(+) create mode 100644 mysql-test/suite/parts/r/mdev_26127.result create mode 100644 mysql-test/suite/parts/t/mdev_26127.test diff --git a/mysql-test/suite/parts/r/mdev_26127.result b/mysql-test/suite/parts/r/mdev_26127.result new file mode 100644 index 00000000000..62fd8d0efd9 --- /dev/null +++ b/mysql-test/suite/parts/r/mdev_26127.result @@ -0,0 +1,7 @@ +CREATE TABLE t ( +c INT +) ENGINE=InnoDB PARTITION BY LINEAR KEY(c) PARTITIONS 4; +LOCK TABLES t WRITE, t AS a READ; +ALTER TABLE t REBUILD PARTITION p0; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +DROP TABLE t; diff --git a/mysql-test/suite/parts/t/mdev_26127.test b/mysql-test/suite/parts/t/mdev_26127.test new file mode 100644 index 00000000000..f1f2b2d3e63 --- /dev/null +++ b/mysql-test/suite/parts/t/mdev_26127.test @@ -0,0 +1,12 @@ +--source include/have_innodb.inc +--source include/have_partition.inc + +CREATE TABLE t ( + c INT +) ENGINE=InnoDB PARTITION BY LINEAR KEY(c) PARTITIONS 4; + +LOCK TABLES t WRITE, t AS a READ; +--error ER_LOCK_WAIT_TIMEOUT +ALTER TABLE t REBUILD PARTITION p0; + +DROP TABLE t; diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 1aa917d525b..25eb9ee07a3 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -1164,6 +1164,8 @@ int ha_partition::rename_partitions(const char *path) error= 1; (void) ddl_log_sync(); } + if (error) + DBUG_RETURN(error); file= m_new_file[i]; DBUG_PRINT("info", ("Rename partition from %s to %s", part_name_buff, norm_name_buff)); -- cgit v1.2.1