mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
2d259187a2
If lock type is LOCK_GAP or LOCK_ORDINARY, and the transaction holds implicit lock for the record, then explicit gap-lock will not be set for the record, as lock_rec_convert_impl_to_expl() returns true and lock_rec_convert_impl_to_expl() bypasses lock_rec_lock() call. The fix converts explicit lock to implicit one if requested lock type is not LOCK_REC_NOT_GAP. innodb_information_schema test result is also changed as after the fix the following statements execution: SET autocommit=0; INSERT INTO t1 VALUES (5,10); SELECT * FROM t1 FOR UPDATE; leads to additional gap lock requests.
21 lines
518 B
Text
21 lines
518 B
Text
--source include/have_innodb.inc
|
|
--source include/count_sessions.inc
|
|
|
|
CREATE TABLE t(a INT UNSIGNED PRIMARY KEY) ENGINE=InnoDB;
|
|
|
|
INSERT INTO t VALUES (10), (30);
|
|
|
|
--connect (con1,localhost,root,,)
|
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|
BEGIN;
|
|
INSERT INTO t VALUES (20);
|
|
SELECT * FROM t WHERE a BETWEEN 10 AND 30;
|
|
|
|
--connection default
|
|
SET session innodb_lock_wait_timeout=1;
|
|
--error ER_LOCK_WAIT_TIMEOUT
|
|
INSERT INTO t VALUES (15);
|
|
|
|
--disconnect con1
|
|
DROP TABLE t;
|
|
--source include/wait_until_count_sessions.inc
|