CREATE TABLE t1 (a INT, b VARCHAR(10)) ENGINE=InnoDB STATS_PERSISTENT=1 STATS_AUTO_RECALC=0 PARTITION BY RANGE(a) (PARTITION pa VALUES LESS THAN (3), PARTITION pb VALUES LESS THAN (5)); INSERT INTO t1 VALUES(2,'two'),(2,'two'),(4,'four'); connect ddl,localhost,root,,test; SET DEBUG_SYNC = 'inplace_after_index_build SIGNAL go WAIT_FOR done'; ALTER TABLE t1 ADD UNIQUE KEY (a,b(3)); connection default; SET DEBUG_SYNC = 'now WAIT_FOR go'; BEGIN; SELECT * FROM t1 FOR UPDATE; a b 2 two 2 two 4 four SET DEBUG_SYNC = 'now SIGNAL done'; connection ddl; ERROR 23000: Duplicate entry '2-two' for key 'a' connection default; DELETE FROM t1; SET DEBUG_SYNC = 'RESET'; CHECK TABLE t1; Table Op Msg_type Msg_text test.t1 check status OK CREATE TABLE t(a INT, b VARCHAR(10)) ENGINE=InnoDB STATS_PERSISTENT=1 STATS_AUTO_RECALC=1; RENAME TABLE t TO u; DELETE FROM mysql.innodb_table_stats WHERE table_name='u'; DELETE FROM mysql.innodb_index_stats WHERE table_name='u'; SET STATEMENT debug_dbug='+d,dict_stats_save_exit_notify_and_wait' FOR SELECT * FROM u; connection ddl; SET DEBUG_SYNC='open_tables_after_open_and_process_table WAIT_FOR dict_stats_save_finished'; ALTER TABLE t1 EXCHANGE PARTITION pb WITH TABLE u; connect sync,localhost,root; SET DEBUG_SYNC='now SIGNAL dict_stats_save_unblock'; disconnect sync; connection default; a b connection ddl; disconnect ddl; connection default; SELECT * FROM u; a b SET DEBUG_SYNC = 'RESET'; DROP TABLE t1,u;