SET debug_sync='RESET'; DROP TABLE IF EXISTS t1; CREATE TABLE t1 (pk INT PRIMARY KEY COMMENT "", a INT)engine=xengine; INSERT INTO t1 VALUES(1,1), (2,2), (3,3); SET debug_sync='xengine_concurrent_delete SIGNAL parked WAIT_FOR go'; SELECT * FROM t1 order by t1.pk ASC FOR UPDATE; SET debug_sync='now WAIT_FOR parked'; DELETE FROM t1 WHERE pk = 1; SET debug_sync='now SIGNAL go'; pk a 2 2 3 3 set debug_sync='RESET'; drop table t1; SET debug_sync='RESET'; DROP TABLE IF EXISTS t1; CREATE TABLE t1 (pk INT PRIMARY KEY COMMENT "", a INT)engine=xengine; INSERT INTO t1 VALUES(1,1), (2,2), (3,3); SET debug_sync='xengine_concurrent_delete SIGNAL parked WAIT_FOR go'; SELECT * FROM t1 order by t1.pk DESC FOR UPDATE; SET debug_sync='now WAIT_FOR parked'; DELETE FROM t1 WHERE pk = 3; SET debug_sync='now SIGNAL go'; pk a 2 2 1 1 set debug_sync='RESET'; drop table t1; SET debug_sync='RESET'; DROP TABLE IF EXISTS t1; CREATE TABLE t1 (pk INT PRIMARY KEY COMMENT "rev:cf2", a INT)engine=xengine; INSERT INTO t1 VALUES(1,1), (2,2), (3,3); SET debug_sync='xengine_concurrent_delete SIGNAL parked WAIT_FOR go'; SELECT * FROM t1 order by t1.pk ASC FOR UPDATE; SET debug_sync='now WAIT_FOR parked'; DELETE FROM t1 WHERE pk = 1; SET debug_sync='now SIGNAL go'; pk a 2 2 3 3 set debug_sync='RESET'; drop table t1; SET debug_sync='RESET'; DROP TABLE IF EXISTS t1; CREATE TABLE t1 (pk INT PRIMARY KEY COMMENT "rev:cf2", a INT)engine=xengine; INSERT INTO t1 VALUES(1,1), (2,2), (3,3); SET debug_sync='xengine_concurrent_delete SIGNAL parked WAIT_FOR go'; SELECT * FROM t1 order by t1.pk DESC FOR UPDATE; SET debug_sync='now WAIT_FOR parked'; DELETE FROM t1 WHERE pk = 3; SET debug_sync='now SIGNAL go'; pk a 2 2 1 1 set debug_sync='RESET'; drop table t1;