--source include/have_debug_sync.inc CREATE TABLE t( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, k INT, c CHAR(1), UNIQUE KEY(k)) ENGINE=InnoDB; --enable_info --echo # --echo # Sequential execution --echo # INSERT INTO t(k) VALUES (1), (2), (3) ON DUPLICATE KEY UPDATE c='1'; --echo # --echo # 1 duplicate --echo # INSERT INTO t(k) VALUES (2), (4), (5) ON DUPLICATE KEY UPDATE c='2'; --echo # --echo # 5 rows, consecutive auto_inc values --echo # SELECT * FROM t; TRUNCATE t; --echo # --echo # Parallel execution --echo # --connect(con1, localhost, root) --connect(con2, localhost, root) --connection con1 --echo # --echo # Connection 1 --echo # SET DEBUG_SYNC=IF(@@innodb_autoinc_lock_mode > 0, 'ha_write_row_end WAIT_FOR continue', 'RESET'); --send INSERT INTO t(k) VALUES (1), (2), (3) ON DUPLICATE KEY UPDATE c='1' --connection con2 --echo # --echo # Connection 2 --echo # SET DEBUG_SYNC=IF(@@innodb_autoinc_lock_mode > 0, 'execute_command_after_close_tables SIGNAL continue', 'RESET'); INSERT INTO t(k) VALUES (2), (4), (5) ON DUPLICATE KEY UPDATE c='2'; --connection con1 --echo # --echo # 2 duplicates --echo # --reap --echo # --echo # 4 rows, gap in auto_inc values --echo # SELECT * FROM t; --disable_info DROP TABLE t;