diff options
author | Nayuta Yanagisawa <nayuta.yanagisawa@hey.com> | 2021-10-29 19:04:53 +0900 |
---|---|---|
committer | Nayuta Yanagisawa <nayuta.yanagisawa@hey.com> | 2021-10-29 19:04:53 +0900 |
commit | d3cc7f5d09c8bf89cdd0f02fcf4bffcb66ef1a8f (patch) | |
tree | b9048b0b5cd9e2d5ab246d5b7b15ae1aec15a2a9 | |
parent | d8c6c53a0658ea8315252997f65d796b13182387 (diff) | |
download | mariadb-git-bb-10.6-mdev-26127.tar.gz |
MDEV-26127 Assertion `err != DB_DUPLICATE_KEY' failed or InnoDB: Failing assertion: id != 0 on ALTER ... REBUILD PARTITIONbb-10.6-mdev-26127
-rw-r--r-- | mysql-test/suite/parts/r/mdev_26127.result | 7 | ||||
-rw-r--r-- | mysql-test/suite/parts/t/mdev_26127.test | 12 | ||||
-rw-r--r-- | sql/ha_partition.cc | 2 |
3 files changed, 21 insertions, 0 deletions
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)); |