[MDEV-630] LP:917129 - Replication failure on concurrent REMOVE PARTITIONING and OPTIMIZE PARTITION Created: 2012-01-16  Updated: 2023-11-28

Status: Open
Project: MariaDB Server
Component/s: Replication
Affects Version/s: 5.5.28, 5.5, 10.0, 10.1, 10.2, 10.4, 10.5, 10.6, 10.10, 10.11, 11.0, 11.1
Fix Version/s: 10.4, 10.5, 10.6, 10.11, 11.0, 11.1

Type: Bug Priority: Minor
Reporter: Elena Stepanova Assignee: Nikita Malyavin
Resolution: Unresolved Votes: 0
Labels: Launchpad, upstream-fixed

Attachments: XML File LPexportBug917129.xml    

 Description   

In the provided test case, REMOVE PARTITIONING is run in parallel with OPTIMIZE PARTITION. On master, OPTIMIZE partition starts first and doesn't cause an error, but in the binary log it is written after REMOVE PARTITIONING, and it makes SQL slave thread abort with ER_PARTITION_MGMT_ON_NONPARTITIONED.

It's only reproducible with InnoDB tables, so it might be related to optimize not being supported and executed as recreate + analyze instead:

CREATE TABLE t (a INT) ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 4;
ALTER TABLE t OPTIMIZE PARTITION p1;
ALTER TABLE t REMOVE PARTITIONING;
Table   Op      Msg_type        Msg_text
test.t  optimize        note    Table does not support optimize, doing recreate + analyze instead
test.t  optimize        status  OK

master-bin.000001       4       Format_desc     1       106     Server ver: 5.1.60-MariaDB-log, Binlog ver: 4
master-bin.000001       106     Query   1       242     use `test`; CREATE TABLE t (a INT) ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 4
master-bin.000001       242     Query   1       338     use `test`; ALTER TABLE t REMOVE PARTITIONING
master-bin.000001       338     Query   1       436     use `test`; ALTER TABLE t OPTIMIZE PARTITION p1
 
Last_SQL_Error  Error 'Partition management on a not partitioned table is not possible' on query. Default database: 'test'. Query: 'ALTER TABLE t OPTIMIZE PARTITION p1'

Affects 5.1, 5.2, 5.3, 5.5.

Also reproducible on MySQL 5.1.60, 5.5.20, 5.6.4 and filed as http://bugs.mysql.com/bug.php?id=64041.

Test case

# Run with --repeat=N if it does not fail right away
 
--source include/have_innodb.inc
--source include/have_partition.inc
--source include/master-slave.inc
CREATE TABLE t (a INT) ENGINE = InnoDB PARTITION BY HASH (a) PARTITIONS 4;
--connection master1
--send
ALTER TABLE t OPTIMIZE PARTITION p1;
--connection master
ALTER TABLE t REMOVE PARTITIONING;
--connection master1
--reap
--sync_slave_with_master



 Comments   
Comment by Rasmus Johansson (Inactive) [ 2012-03-29 ]

Launchpad bug id: 917129

Comment by Elena Stepanova [ 2017-11-22 ]

Still reproducible on 5.5-10.3, MySQL 5.5.
The upstream bug is also still open, but I can't reproduce it anymore on MySQL 5.6; possibly it's been fixed there; thus I'm setting it to 'upstream-fixed'.

Generated at Thu Feb 08 06:30:11 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.