• Vlad Lesin's avatar
    MDEV-26206 gap lock is not set if implicit lock exists · 2d259187
    Vlad Lesin authored
    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.
    2d259187
lock0lock.cc 192 KB