CREATE TABLE t(a INT PRIMARY KEY, b INT, c INT, UNIQUE KEY `b_c` (`b`,`c`)) ENGINE=InnoDB, STATS_PERSISTENT=0; INSERT INTO t SET a = 1, c = 2; connect con1,localhost,root; BEGIN; INSERT INTO t SET a=2, c=2; connection default; BEGIN; SET DEBUG_SYNC="lock_wait_start SIGNAL select_locked"; SELECT * FROM t FORCE INDEX(b) FOR UPDATE; connection con1; SET DEBUG_SYNC="now WAIT_FOR select_locked"; ROLLBACK; connection default; # If the bug is not fixed, and the both unique index key fields are # NULL, there will be two (1, NULL, 2) rows in the result, # because cursor will be restored to (NULL, 2, 1) position for # secondary key instead of "supremum". a b c 1 NULL 2 COMMIT; SET DEBUG_SYNC="RESET"; disconnect con1; DROP TABLE t;