# # Bug #29508068 UNNECESSARY NEXT-KEY LOCK TAKEN # CREATE TABLE t1 ( id INT NOT NULL, PRIMARY KEY (id ASC) ) ENGINE=InnoDB; CREATE TABLE t2 ( id INT NOT NULL, PRIMARY KEY (id DESC) ) ENGINE=InnoDB; SET @conditions = CONCAT( '<=0 <1 <=1 <7 <=7 <=8 <9 <=9 <=10 ', '>=10 >9 >=9 >3 >=3 >=2 >1 >=1 >0' ); INSERT INTO t1 VALUES (1), (3), (4), (5), (6), (7), (9); ANALYZE TABLE t1; Table Op Msg_type Msg_text test.t1 analyze status OK BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <=0 ORDER BY id ASC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <=0 ORDER BY id DESC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <1 ORDER BY id ASC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <1 ORDER BY id DESC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <=1 ORDER BY id ASC FOR UPDATE; id 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <=1 ORDER BY id DESC FOR UPDATE; id 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X,GAP GRANTED 3 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <7 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X,GAP GRANTED 7 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <7 ORDER BY id DESC FOR UPDATE; id 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X,GAP GRANTED 7 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <=7 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <=7 ORDER BY id DESC FOR UPDATE; id 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X,GAP GRANTED 9 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <=8 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X,GAP GRANTED 9 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <=8 ORDER BY id DESC FOR UPDATE; id 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X,GAP GRANTED 9 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <9 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X,GAP GRANTED 9 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <9 ORDER BY id DESC FOR UPDATE; id 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X,GAP GRANTED 9 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <=9 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <=9 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <=10 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <=10 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >=10 ORDER BY id ASC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >=10 ORDER BY id DESC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >9 ORDER BY id ASC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >9 ORDER BY id DESC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >=9 ORDER BY id ASC FOR UPDATE; id 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 9 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >=9 ORDER BY id DESC FOR UPDATE; id 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >3 ORDER BY id ASC FOR UPDATE; id 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >3 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >=3 ORDER BY id ASC FOR UPDATE; id 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 3 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >=3 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >=2 ORDER BY id ASC FOR UPDATE; id 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >=2 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >1 ORDER BY id ASC FOR UPDATE; id 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >1 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >=1 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >=1 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >0 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >0 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; DROP TABLE t1; INSERT INTO t2 VALUES (1), (3), (4), (5), (6), (7), (9); ANALYZE TABLE t2; Table Op Msg_type Msg_text test.t2 analyze status OK BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <=0 ORDER BY id ASC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <=0 ORDER BY id DESC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <1 ORDER BY id ASC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <1 ORDER BY id DESC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <=1 ORDER BY id ASC FOR UPDATE; id 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <=1 ORDER BY id DESC FOR UPDATE; id 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 1 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <7 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <7 ORDER BY id DESC FOR UPDATE; id 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <=7 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <=7 ORDER BY id DESC FOR UPDATE; id 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 7 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <=8 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <=8 ORDER BY id DESC FOR UPDATE; id 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <9 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <9 ORDER BY id DESC FOR UPDATE; id 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <=9 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <=9 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <=10 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <=10 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >=10 ORDER BY id ASC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 9 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >=10 ORDER BY id DESC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 9 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >9 ORDER BY id ASC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 9 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >9 ORDER BY id DESC FOR UPDATE; id SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 9 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >=9 ORDER BY id ASC FOR UPDATE; id 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X,GAP GRANTED 7 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >=9 ORDER BY id DESC FOR UPDATE; id 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 9 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >3 ORDER BY id ASC FOR UPDATE; id 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X,GAP GRANTED 3 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >3 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X,GAP GRANTED 3 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >=3 ORDER BY id ASC FOR UPDATE; id 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X,GAP GRANTED 1 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >=3 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >=2 ORDER BY id ASC FOR UPDATE; id 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X,GAP GRANTED 1 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >=2 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X,GAP GRANTED 1 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >1 ORDER BY id ASC FOR UPDATE; id 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X,GAP GRANTED 1 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >1 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X,GAP GRANTED 1 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >=1 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >=1 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >0 ORDER BY id ASC FOR UPDATE; id 1 3 4 5 6 7 9 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >0 ORDER BY id DESC FOR UPDATE; id 9 7 6 5 4 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 PRIMARY RECORD X GRANTED 9 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; DROP TABLE t2; CREATE TABLE t1 ( id1 INT NOT NULL, id2 INT NOT NULL, PRIMARY KEY (id1 ASC, id2 ASC) ) ENGINE=InnoDB; CREATE TABLE t2 ( id1 INT NOT NULL, id2 INT NOT NULL, PRIMARY KEY (id1 ASC, id2 DESC) ) ENGINE=InnoDB; CREATE TABLE t3 ( id1 INT NOT NULL, id2 INT NOT NULL, PRIMARY KEY (id1 DESC, id2 ASC) ) ENGINE=InnoDB; CREATE TABLE t4 ( id1 INT NOT NULL, id2 INT NOT NULL, PRIMARY KEY (id1 DESC, id2 DESC) ) ENGINE=InnoDB; SET @conditions = CONCAT( '<0 <1 <3 <=3 <=4 <5 <=5 ', '>6 >5 >3 >=3 >=2 >1 >=1' ); INSERT INTO t1 (id1,id2) VALUES (1,1),(1,3),(1,5),(3,1),(3,3),(3,5),(5,1),(5,3),(5,5); ANALYZE TABLE t1; Table Op Msg_type Msg_text test.t1 analyze status OK BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <0 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <0 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <0 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <0 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <1 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <1 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <1 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <1 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <3 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X,GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <3 ORDER BY id1 DESC FOR UPDATE; id1 id2 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X,GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <=3 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 1 1 3 1 5 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <=3 ORDER BY id1 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <=4 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 1 1 3 1 5 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=4 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <=4 ORDER BY id1 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=4 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <5 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 1 1 3 1 5 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <5 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <5 ORDER BY id1 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <5 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <=5 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 1 1 3 1 5 3 1 3 3 3 5 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=5 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 <=5 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 5 5 3 5 1 3 5 3 3 3 1 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=5 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >6 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >6 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >6 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >6 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >5 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >5 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >5 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >5 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >3 ORDER BY id1 ASC FOR UPDATE; id1 id2 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >3 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >=3 ORDER BY id1 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >=3 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 5 5 3 5 1 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >=2 ORDER BY id1 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=2 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >=2 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 5 5 3 5 1 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=2 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >1 ORDER BY id1 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >1 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >1 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 5 5 3 5 1 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >1 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >=1 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 1 1 3 1 5 3 1 3 3 3 5 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=1 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1 >=1 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 5 5 3 5 1 3 5 3 3 3 1 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=1 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; DROP TABLE t1; INSERT INTO t2 (id1,id2) VALUES (1,1),(1,3),(1,5),(3,1),(3,3),(3,5),(5,1),(5,3),(5,5); ANALYZE TABLE t2; Table Op Msg_type Msg_text test.t2 analyze status OK BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <0 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <0 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <0 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <0 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <1 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <1 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <1 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <1 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <3 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <3 ORDER BY id1 DESC FOR UPDATE; id1 id2 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <=3 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 5 1 3 1 1 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X,GAP GRANTED 5, 5 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <=3 ORDER BY id1 DESC FOR UPDATE; id1 id2 3 1 3 3 3 5 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X,GAP GRANTED 5, 5 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <=4 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 5 1 3 1 1 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=4 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <=4 ORDER BY id1 DESC FOR UPDATE; id1 id2 3 1 3 3 3 5 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=4 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <5 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 5 1 3 1 1 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <5 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <5 ORDER BY id1 DESC FOR UPDATE; id1 id2 3 1 3 3 3 5 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <5 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <=5 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 5 1 3 1 1 3 5 3 3 3 1 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=5 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 5, 5 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 <=5 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 1 5 3 5 5 3 1 3 3 3 5 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=5 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 5, 5 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >6 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >6 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >6 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >6 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >5 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >5 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >5 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >5 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >3 ORDER BY id1 ASC FOR UPDATE; id1 id2 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >3 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >=3 ORDER BY id1 ASC FOR UPDATE; id1 id2 3 5 3 3 3 1 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >=3 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 1 5 3 5 5 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >=2 ORDER BY id1 ASC FOR UPDATE; id1 id2 3 5 3 3 3 1 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=2 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >=2 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 1 5 3 5 5 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=2 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >1 ORDER BY id1 ASC FOR UPDATE; id1 id2 3 5 3 3 3 1 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >1 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >1 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 1 5 3 5 5 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >1 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >=1 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 5 1 3 1 1 3 5 3 3 3 1 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=1 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1 >=1 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 1 5 3 5 5 3 1 3 3 3 5 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=1 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 ROLLBACK; DROP TABLE t2; INSERT INTO t3 (id1,id2) VALUES (1,1),(1,3),(1,5),(3,1),(3,3),(3,5),(5,1),(5,3),(5,5); ANALYZE TABLE t3; Table Op Msg_type Msg_text test.t3 analyze status OK BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <0 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <0 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <0 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <0 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <1 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <1 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <1 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <1 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <3 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X,GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <3 ORDER BY id1 DESC FOR UPDATE; id1 id2 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X,GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <=3 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 5 1 3 1 1 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <=3 ORDER BY id1 DESC FOR UPDATE; id1 id2 3 1 3 3 3 5 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <=4 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 5 1 3 1 1 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=4 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <=4 ORDER BY id1 DESC FOR UPDATE; id1 id2 3 1 3 3 3 5 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=4 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <5 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 5 1 3 1 1 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <5 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <5 ORDER BY id1 DESC FOR UPDATE; id1 id2 3 1 3 3 3 5 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <5 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <=5 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 5 1 3 1 1 3 5 3 3 3 1 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=5 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 <=5 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 1 5 3 5 5 3 1 3 3 3 5 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=5 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >6 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >6 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >6 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >6 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >5 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >5 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >5 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >5 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >3 ORDER BY id1 ASC FOR UPDATE; id1 id2 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >3 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >=3 ORDER BY id1 ASC FOR UPDATE; id1 id2 3 5 3 3 3 1 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >=3 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 1 5 3 5 5 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >=2 ORDER BY id1 ASC FOR UPDATE; id1 id2 3 5 3 3 3 1 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=2 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >=2 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 1 5 3 5 5 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=2 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >1 ORDER BY id1 ASC FOR UPDATE; id1 id2 3 5 3 3 3 1 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >1 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >1 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 1 5 3 5 5 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >1 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >=1 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 5 1 3 1 1 3 5 3 3 3 1 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=1 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1 >=1 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 1 5 3 5 5 3 1 3 3 3 5 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t3 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=1 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't3'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 1 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3, 1 ROLLBACK; DROP TABLE t3; INSERT INTO t4 (id1,id2) VALUES (1,1),(1,3),(1,5),(3,1),(3,3),(3,5),(5,1),(5,3),(5,5); ANALYZE TABLE t4; Table Op Msg_type Msg_text test.t4 analyze status OK BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <0 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <0 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <0 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <0 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <1 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <1 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <1 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <1 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <3 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 1 1 3 1 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <3 ORDER BY id1 DESC FOR UPDATE; id1 id2 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <=3 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 1 1 3 1 5 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <=3 ORDER BY id1 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X,GAP GRANTED 1, 5 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <=4 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 1 1 3 1 5 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=4 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <=4 ORDER BY id1 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=4 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <5 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 1 1 3 1 5 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <5 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <5 ORDER BY id1 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <5 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <=5 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 1 1 3 1 5 3 1 3 3 3 5 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=5 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 <=5 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 5 5 3 5 1 3 5 3 3 3 1 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 <=5 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X,GAP GRANTED 1, 5 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >6 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >6 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >6 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >6 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >5 ORDER BY id1 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >5 ORDER BY id2 ASC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >5 ORDER BY id1 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 5, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >5 ORDER BY id2 DESC FOR UPDATE; id1 id2 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >3 ORDER BY id1 ASC FOR UPDATE; id1 id2 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X,GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >3 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 5 5 3 5 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 3, 3 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >=3 ORDER BY id1 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=3 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >=3 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 5 5 3 5 1 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=3 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >=2 ORDER BY id1 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=2 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >=2 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 5 5 3 5 1 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=2 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >1 ORDER BY id1 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >1 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >1 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 5 5 3 5 1 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >1 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X,GAP GRANTED 3, 1 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >=1 ORDER BY id1 ASC FOR UPDATE; id1 id2 1 1 1 3 1 5 3 1 3 3 3 5 5 1 5 3 5 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=1 ORDER BY id2 ASC FOR UPDATE; id1 id2 3 1 3 3 3 5 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X,GAP GRANTED 1, 5 ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1 >=1 ORDER BY id1 DESC FOR UPDATE; id1 id2 5 5 5 3 5 1 3 5 3 3 3 1 1 5 1 3 1 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1, 1 PRIMARY RECORD X GRANTED 1, 3 PRIMARY RECORD X GRANTED 1, 5 PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 PRIMARY RECORD X GRANTED 5, 1 PRIMARY RECORD X GRANTED 5, 3 PRIMARY RECORD X GRANTED 5, 5 PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t4 FORCE INDEX (PRIMARY) WHERE id1=3 AND id2 >=1 ORDER BY id2 DESC FOR UPDATE; id1 id2 3 5 3 3 3 1 SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't4'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 3, 1 PRIMARY RECORD X GRANTED 3, 3 PRIMARY RECORD X GRANTED 3, 5 ROLLBACK; DROP TABLE t4; CREATE TABLE t1 ( id VARCHAR(100) NOT NULL, PRIMARY KEY (id(1) ASC) ) ENGINE=InnoDB; CREATE TABLE t2 ( id VARCHAR(100) NOT NULL, PRIMARY KEY (id(1) DESC) ) ENGINE=InnoDB; SET @conditions = CONCAT( '<="c" <="d" <"e" <"ee" <="ee" <="ec" <="ef" ', '>="g" >="f" >"e" >"ee" >="ee" >="ef" >="ec"' ); INSERT INTO t1 VALUES ("aa"), ("bb"), ("cc"), ("ee"), ("gg"), ("hh"), ("ii"); ANALYZE TABLE t1; Table Op Msg_type Msg_text test.t1 analyze status OK BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="c" ORDER BY id ASC FOR UPDATE; id aa bb SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="c" ORDER BY id DESC FOR UPDATE; id bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="d" ORDER BY id ASC FOR UPDATE; id aa bb cc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X,GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="d" ORDER BY id DESC FOR UPDATE; id cc bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X,GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <"e" ORDER BY id ASC FOR UPDATE; id aa bb cc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <"e" ORDER BY id DESC FOR UPDATE; id cc bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <"ee" ORDER BY id ASC FOR UPDATE; id aa bb cc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <"ee" ORDER BY id DESC FOR UPDATE; id cc bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="ee" ORDER BY id ASC FOR UPDATE; id aa bb cc ee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="ee" ORDER BY id DESC FOR UPDATE; id ee cc bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="ec" ORDER BY id ASC FOR UPDATE; id aa bb cc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="ec" ORDER BY id DESC FOR UPDATE; id cc bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="ef" ORDER BY id ASC FOR UPDATE; id aa bb cc ee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="ef" ORDER BY id DESC FOR UPDATE; id ee cc bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="g" ORDER BY id ASC FOR UPDATE; id gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'g' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="g" ORDER BY id DESC FOR UPDATE; id ii hh gg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'g' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="f" ORDER BY id ASC FOR UPDATE; id gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="f" ORDER BY id DESC FOR UPDATE; id ii hh gg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >"e" ORDER BY id ASC FOR UPDATE; id ee gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >"e" ORDER BY id DESC FOR UPDATE; id ii hh gg ee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >"ee" ORDER BY id ASC FOR UPDATE; id gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >"ee" ORDER BY id DESC FOR UPDATE; id ii hh gg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="ee" ORDER BY id ASC FOR UPDATE; id ee gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="ee" ORDER BY id DESC FOR UPDATE; id ii hh gg ee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="ef" ORDER BY id ASC FOR UPDATE; id gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="ef" ORDER BY id DESC FOR UPDATE; id ii hh gg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="ec" ORDER BY id ASC FOR UPDATE; id ee gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="ec" ORDER BY id DESC FOR UPDATE; id ii hh gg ee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; DROP TABLE t1; INSERT INTO t2 VALUES ("aa"), ("bb"), ("cc"), ("ee"), ("gg"), ("hh"), ("ii"); ANALYZE TABLE t2; Table Op Msg_type Msg_text test.t2 analyze status OK BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="c" ORDER BY id ASC FOR UPDATE; id aa bb SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'c' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="c" ORDER BY id DESC FOR UPDATE; id bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'c' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="d" ORDER BY id ASC FOR UPDATE; id aa bb cc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="d" ORDER BY id DESC FOR UPDATE; id cc bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <"e" ORDER BY id ASC FOR UPDATE; id aa bb cc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <"e" ORDER BY id DESC FOR UPDATE; id cc bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <"ee" ORDER BY id ASC FOR UPDATE; id aa bb cc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <"ee" ORDER BY id DESC FOR UPDATE; id cc bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="ee" ORDER BY id ASC FOR UPDATE; id aa bb cc ee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="ee" ORDER BY id DESC FOR UPDATE; id ee cc bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="ec" ORDER BY id ASC FOR UPDATE; id aa bb cc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="ec" ORDER BY id DESC FOR UPDATE; id cc bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="ef" ORDER BY id ASC FOR UPDATE; id aa bb cc ee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="ef" ORDER BY id DESC FOR UPDATE; id ee cc bb aa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'a' PRIMARY RECORD X GRANTED 'b' PRIMARY RECORD X GRANTED 'c' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="g" ORDER BY id ASC FOR UPDATE; id gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="g" ORDER BY id DESC FOR UPDATE; id ii hh gg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="f" ORDER BY id ASC FOR UPDATE; id gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X,GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="f" ORDER BY id DESC FOR UPDATE; id ii hh gg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' PRIMARY RECORD X,GAP GRANTED 'e' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >"e" ORDER BY id ASC FOR UPDATE; id ee gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'e' PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >"e" ORDER BY id DESC FOR UPDATE; id ii hh gg ee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'e' PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >"ee" ORDER BY id ASC FOR UPDATE; id gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'e' PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >"ee" ORDER BY id DESC FOR UPDATE; id ii hh gg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'e' PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="ee" ORDER BY id ASC FOR UPDATE; id ee gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'e' PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="ee" ORDER BY id DESC FOR UPDATE; id ii hh gg ee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'e' PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="ef" ORDER BY id ASC FOR UPDATE; id gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'e' PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="ef" ORDER BY id DESC FOR UPDATE; id ii hh gg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'e' PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="ec" ORDER BY id ASC FOR UPDATE; id ee gg hh ii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'e' PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="ec" ORDER BY id DESC FOR UPDATE; id ii hh gg ee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'e' PRIMARY RECORD X GRANTED 'g' PRIMARY RECORD X GRANTED 'h' PRIMARY RECORD X GRANTED 'i' ROLLBACK; DROP TABLE t2; CREATE TABLE t1 ( id VARCHAR(100) NOT NULL, PRIMARY KEY (id(2) ASC) ) ENGINE=InnoDB; CREATE TABLE t2 ( id VARCHAR(100) NOT NULL, PRIMARY KEY (id(2) DESC) ) ENGINE=InnoDB; SET @conditions = CONCAT( '<="c" <="d" <"e" <"ee" <="ee" <="ec" <="ef" ', '>="g" >="f" >"e" >"ee" >="ee" >="ef" >="ec"' ); INSERT INTO t1 VALUES ("aaa"), ("bbb"), ("ccc"), ("eee"), ("ggg"), ("hhh"), ("iii"); ANALYZE TABLE t1; Table Op Msg_type Msg_text test.t1 analyze status OK BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="c" ORDER BY id ASC FOR UPDATE; id aaa bbb SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X,GAP GRANTED 'cc' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="c" ORDER BY id DESC FOR UPDATE; id bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X,GAP GRANTED 'cc' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="d" ORDER BY id ASC FOR UPDATE; id aaa bbb ccc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X,GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="d" ORDER BY id DESC FOR UPDATE; id ccc bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X,GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <"e" ORDER BY id ASC FOR UPDATE; id aaa bbb ccc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X,GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <"e" ORDER BY id DESC FOR UPDATE; id ccc bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X,GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <"ee" ORDER BY id ASC FOR UPDATE; id aaa bbb ccc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <"ee" ORDER BY id DESC FOR UPDATE; id ccc bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="ee" ORDER BY id ASC FOR UPDATE; id aaa bbb ccc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="ee" ORDER BY id DESC FOR UPDATE; id ccc bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="ec" ORDER BY id ASC FOR UPDATE; id aaa bbb ccc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X,GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="ec" ORDER BY id DESC FOR UPDATE; id ccc bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X,GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="ef" ORDER BY id ASC FOR UPDATE; id aaa bbb ccc eee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X,GAP GRANTED 'gg' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id <="ef" ORDER BY id DESC FOR UPDATE; id eee ccc bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X,GAP GRANTED 'gg' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="g" ORDER BY id ASC FOR UPDATE; id ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="g" ORDER BY id DESC FOR UPDATE; id iii hhh ggg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="f" ORDER BY id ASC FOR UPDATE; id ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="f" ORDER BY id DESC FOR UPDATE; id iii hhh ggg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >"e" ORDER BY id ASC FOR UPDATE; id eee ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >"e" ORDER BY id DESC FOR UPDATE; id iii hhh ggg eee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >"ee" ORDER BY id ASC FOR UPDATE; id eee ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >"ee" ORDER BY id DESC FOR UPDATE; id iii hhh ggg eee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="ee" ORDER BY id ASC FOR UPDATE; id eee ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="ee" ORDER BY id DESC FOR UPDATE; id iii hhh ggg eee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="ef" ORDER BY id ASC FOR UPDATE; id ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="ef" ORDER BY id DESC FOR UPDATE; id iii hhh ggg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="ec" ORDER BY id ASC FOR UPDATE; id eee ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id >="ec" ORDER BY id DESC FOR UPDATE; id iii hhh ggg eee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; DROP TABLE t1; INSERT INTO t2 VALUES ("aaa"), ("bbb"), ("ccc"), ("eee"), ("ggg"), ("hhh"), ("iii"); ANALYZE TABLE t2; Table Op Msg_type Msg_text test.t2 analyze status OK BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="c" ORDER BY id ASC FOR UPDATE; id aaa bbb SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="c" ORDER BY id DESC FOR UPDATE; id bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="d" ORDER BY id ASC FOR UPDATE; id aaa bbb ccc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="d" ORDER BY id DESC FOR UPDATE; id ccc bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <"e" ORDER BY id ASC FOR UPDATE; id aaa bbb ccc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <"e" ORDER BY id DESC FOR UPDATE; id ccc bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <"ee" ORDER BY id ASC FOR UPDATE; id aaa bbb ccc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <"ee" ORDER BY id DESC FOR UPDATE; id ccc bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="ee" ORDER BY id ASC FOR UPDATE; id aaa bbb ccc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="ee" ORDER BY id DESC FOR UPDATE; id ccc bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED supremum pseudo-record PRIMARY RECORD X,REC_NOT_GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="ec" ORDER BY id ASC FOR UPDATE; id aaa bbb ccc SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="ec" ORDER BY id DESC FOR UPDATE; id ccc bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="ef" ORDER BY id ASC FOR UPDATE; id aaa bbb ccc eee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id <="ef" ORDER BY id DESC FOR UPDATE; id eee ccc bbb aaa SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'aa' PRIMARY RECORD X GRANTED 'bb' PRIMARY RECORD X GRANTED 'cc' PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED supremum pseudo-record ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="g" ORDER BY id ASC FOR UPDATE; id ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X,GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="g" ORDER BY id DESC FOR UPDATE; id iii hhh ggg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X,GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="f" ORDER BY id ASC FOR UPDATE; id ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X,GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="f" ORDER BY id DESC FOR UPDATE; id iii hhh ggg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X,GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >"e" ORDER BY id ASC FOR UPDATE; id eee ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X,GAP GRANTED 'cc' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >"e" ORDER BY id DESC FOR UPDATE; id iii hhh ggg eee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X,GAP GRANTED 'cc' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >"ee" ORDER BY id ASC FOR UPDATE; id eee ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >"ee" ORDER BY id DESC FOR UPDATE; id iii hhh ggg eee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="ee" ORDER BY id ASC FOR UPDATE; id eee ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="ee" ORDER BY id DESC FOR UPDATE; id iii hhh ggg eee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="ef" ORDER BY id ASC FOR UPDATE; id ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X,GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="ef" ORDER BY id DESC FOR UPDATE; id iii hhh ggg SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X,GAP GRANTED 'ee' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="ec" ORDER BY id ASC FOR UPDATE; id eee ggg hhh iii SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X,GAP GRANTED 'cc' ROLLBACK; BEGIN; SELECT * FROM t2 FORCE INDEX (PRIMARY) WHERE id >="ec" ORDER BY id DESC FOR UPDATE; id iii hhh ggg eee SELECT index_name,lock_type,lock_mode,lock_status,lock_data FROM performance_schema.data_locks WHERE object_name = 't2'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 'ee' PRIMARY RECORD X GRANTED 'gg' PRIMARY RECORD X GRANTED 'hh' PRIMARY RECORD X GRANTED 'ii' PRIMARY RECORD X,GAP GRANTED 'cc' ROLLBACK; DROP TABLE t2; CREATE TABLE t1 ( id INT NOT NULL, PRIMARY KEY (id ASC) ) ENGINE=InnoDB; INSERT INTO t1 VALUES (1), (3), (4), (5), (6), (7), (9); ANALYZE TABLE t1; Table Op Msg_type Msg_text test.t1 analyze status OK BEGIN; SELECT * FROM t1 WHERE id=7 FOR UPDATE; id 7 BEGIN; SET DEBUG_SYNC='lock_wait_will_wait SIGNAL con2_will_wait'; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id<=7 FOR UPDATE;; SET DEBUG_SYNC='now WAIT_FOR con2_will_wait'; ROLLBACK; id 1 3 4 5 6 7 DROP TABLE t1; CREATE TABLE t1 ( id INT NOT NULL, PRIMARY KEY (id ASC) ) ENGINE=InnoDB; INSERT INTO t1 VALUES (1), (3), (4), (5), (6), (7), (9); ANALYZE TABLE t1; Table Op Msg_type Msg_text test.t1 analyze status OK SET GLOBAL innodb_purge_stop_now = ON; DELETE FROM t1 WHERE id=7; BEGIN; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id<=7 FOR UPDATE; id 1 3 4 5 6 SELECT index_name, lock_type, lock_mode, lock_status, lock_data FROM performance_schema.data_locks WHERE object_name='t1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X GRANTED 1 PRIMARY RECORD X GRANTED 3 PRIMARY RECORD X GRANTED 4 PRIMARY RECORD X GRANTED 5 PRIMARY RECORD X GRANTED 6 PRIMARY RECORD X GRANTED 7 ROLLBACK; SET GLOBAL innodb_purge_run_now = ON; DROP TABLE t1; CREATE TABLE t1 ( id INT NOT NULL, PRIMARY KEY (id ASC) ) ENGINE=InnoDB; INSERT INTO t1 VALUES (1), (3), (4), (5), (6), (7), (9); ANALYZE TABLE t1; Table Op Msg_type Msg_text test.t1 analyze status OK SET GLOBAL innodb_purge_stop_now = ON; DELETE FROM t1 WHERE id=7; BEGIN; SELECT * FROM t1 WHERE id=7 FOR UPDATE; id BEGIN; SET DEBUG_SYNC='lock_wait_will_wait SIGNAL con2_will_wait'; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id<=7 FOR UPDATE;; SET DEBUG_SYNC='now WAIT_FOR con2_will_wait'; ROLLBACK; id 1 3 4 5 6 SET GLOBAL innodb_purge_run_now = ON; DROP TABLE t1; CREATE TABLE t1 ( id INT NOT NULL, PRIMARY KEY (id ASC) ) ENGINE=InnoDB; INSERT INTO t1 VALUES (1), (3), (4), (5), (6), (7), (9); ANALYZE TABLE t1; Table Op Msg_type Msg_text test.t1 analyze status OK SET GLOBAL innodb_purge_stop_now = ON; DELETE FROM t1 WHERE id=7; BEGIN; INSERT INTO t1 VALUES (7); BEGIN; SET DEBUG_SYNC='lock_wait_will_wait SIGNAL con2_will_wait'; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id<=7 FOR UPDATE;; SET DEBUG_SYNC='now WAIT_FOR con2_will_wait'; ROLLBACK; id 1 3 4 5 6 SET GLOBAL innodb_purge_run_now = ON; DROP TABLE t1; CREATE TABLE t1 ( id INT NOT NULL, PRIMARY KEY (id ASC) ) ENGINE=InnoDB; INSERT INTO t1 VALUES (1), (3), (4), (5), (6), (7), (9); ANALYZE TABLE t1; Table Op Msg_type Msg_text test.t1 analyze status OK SET GLOBAL innodb_purge_stop_now = ON; DELETE FROM t1 WHERE id=7; BEGIN; INSERT INTO t1 VALUES (7); BEGIN; SET DEBUG_SYNC='lock_wait_will_wait SIGNAL con2_will_wait'; SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE id<=7 FOR UPDATE;; SET DEBUG_SYNC='now WAIT_FOR con2_will_wait'; COMMIT; id 1 3 4 5 6 7 SET GLOBAL innodb_purge_run_now = ON; DROP TABLE t1; CREATE TABLE t1 ( id INT NOT NULL, val INT, PRIMARY KEY (id ASC) ) ENGINE=InnoDB; INSERT INTO t1 (id,val) VALUES (1,1),(2,2) ,(3,3), (4,4), (5,5), (6,6), (9,9); BEGIN; DELETE FROM t1 WHERE id=6; SET TRANSACTION ISOLATION LEVEL READ COMMITTED; BEGIN; SET DEBUG_SYNC=' semi_consistent_read_would_wait SIGNAL con2_would_wait WAIT_FOR con2_can_unlock'; SET DEBUG_SYNC=' row_search_for_mysql_before_return SIGNAL con2_returns_row WAIT_FOR con2_can_return_row EXECUTE 6'; UPDATE t1 SET val=13 WHERE id<=6; Expecting row number 1 SET DEBUG_SYNC='now WAIT_FOR con2_returns_row'; SET DEBUG_SYNC='now SIGNAL con2_can_return_row'; Expecting row number 2 SET DEBUG_SYNC='now WAIT_FOR con2_returns_row'; SET DEBUG_SYNC='now SIGNAL con2_can_return_row'; Expecting row number 3 SET DEBUG_SYNC='now WAIT_FOR con2_returns_row'; SET DEBUG_SYNC='now SIGNAL con2_can_return_row'; Expecting row number 4 SET DEBUG_SYNC='now WAIT_FOR con2_returns_row'; SET DEBUG_SYNC='now SIGNAL con2_can_return_row'; Expecting row number 5 SET DEBUG_SYNC='now WAIT_FOR con2_returns_row'; SET DEBUG_SYNC='now SIGNAL con2_can_return_row'; SET DEBUG_SYNC='now WAIT_FOR con2_would_wait'; SELECT index_name, lock_type, lock_mode, lock_status, lock_data FROM performance_schema.data_locks WHERE object_name='t1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL NULL TABLE IX GRANTED NULL PRIMARY RECORD X,REC_NOT_GAP GRANTED 1 PRIMARY RECORD X,REC_NOT_GAP GRANTED 2 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3 PRIMARY RECORD X,REC_NOT_GAP GRANTED 4 PRIMARY RECORD X,REC_NOT_GAP GRANTED 5 PRIMARY RECORD X,REC_NOT_GAP GRANTED 6 PRIMARY RECORD X,REC_NOT_GAP WAITING 6 SET DEBUG_SYNC='now SIGNAL con2_can_unlock'; SET DEBUG_SYNC='now WAIT_FOR con2_returns_row'; SELECT index_name, lock_type, lock_mode, lock_status, lock_data FROM performance_schema.data_locks WHERE object_name='t1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL NULL TABLE IX GRANTED NULL PRIMARY RECORD X,REC_NOT_GAP GRANTED 1 PRIMARY RECORD X,REC_NOT_GAP GRANTED 2 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3 PRIMARY RECORD X,REC_NOT_GAP GRANTED 4 PRIMARY RECORD X,REC_NOT_GAP GRANTED 5 PRIMARY RECORD X,REC_NOT_GAP GRANTED 6 COMMIT; SELECT index_name, lock_type, lock_mode, lock_status, lock_data FROM performance_schema.data_locks WHERE object_name='t1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,REC_NOT_GAP GRANTED 1 PRIMARY RECORD X,REC_NOT_GAP GRANTED 2 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3 PRIMARY RECORD X,REC_NOT_GAP GRANTED 4 PRIMARY RECORD X,REC_NOT_GAP GRANTED 5 SET DEBUG_SYNC='now SIGNAL con2_can_return_row'; SELECT index_name, lock_type, lock_mode, lock_status, lock_data FROM performance_schema.data_locks WHERE object_name='t1'; index_name lock_type lock_mode lock_status lock_data NULL TABLE IX GRANTED NULL PRIMARY RECORD X,REC_NOT_GAP GRANTED 1 PRIMARY RECORD X,REC_NOT_GAP GRANTED 2 PRIMARY RECORD X,REC_NOT_GAP GRANTED 3 PRIMARY RECORD X,REC_NOT_GAP GRANTED 4 PRIMARY RECORD X,REC_NOT_GAP GRANTED 5 ROLLBACK; DROP TABLE t1;