summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/suite/parts/r/mdev_26127.result7
-rw-r--r--mysql-test/suite/parts/t/mdev_26127.test12
-rw-r--r--sql/ha_partition.cc2
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));