From 9149017bb838e9efbef40c5f2807894c38b3412f Mon Sep 17 00:00:00 2001 From: Nikita Malyavin Date: Thu, 2 Apr 2020 22:37:36 +1000 Subject: MDEV-17091 - Assertion failed after dropping versioning Assertion `old_part_id == m_last_part' failed in ha_partition::update_row or `part_id == m_last_part' in ha_partition::delete_row upon UPDATE/DELETE after dropping versioning PRIMARY KEY change hadn't been treated as partition reorganization in case of partitioning by KEY() (without parameters). * set `*partition_changed= true` in the described case. * since add/drop system versioning does not affect alter_info->key_list, it required separate attention --- mysql-test/main/partition_alter.test | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'mysql-test/main/partition_alter.test') diff --git a/mysql-test/main/partition_alter.test b/mysql-test/main/partition_alter.test index 91ae67e2f7b..dbe7802b5fb 100644 --- a/mysql-test/main/partition_alter.test +++ b/mysql-test/main/partition_alter.test @@ -123,3 +123,22 @@ alter table t1 add partition (partition p1); --error ER_SAME_NAME_PARTITION alter table t1 add partition (partition p1); drop table t1; + +--echo # +--echo # MDEV-17091 Assertion `old_part_id == m_last_part' failed in +--echo # ha_partition::update_row or `part_id == m_last_part' in +--echo # ha_partition::delete_row upon UPDATE/DELETE after dropping versioning +--echo # +create or replace table t1 (pk int, f int, primary key(pk, f)) engine=innodb + partition by key() partitions 2; + +insert into t1 values (1,10),(2,11); +--echo # expected to hit same partition +select * from t1 partition (p0); + +alter table t1 drop primary key, drop f, add primary key(pk); +--echo # 1 and 2 are expected to be in different partitions +select * from t1 partition(p0); +select * from t1 partition(p1); +delete from t1; +drop table t1; -- cgit v1.2.1