• Marko Mäkelä's avatar
    MDEV-33802 Weird read view after ROLLBACK of another transaction · 4635f0fe
    Marko Mäkelä authored
    Even after commit b8a67198 there
    is an anomaly where a locking read could return inconsistent results.
    If a locking read would have to wait for a record lock, then by the
    definition of a read view, the modifications made by the current lock
    holder cannot be visible in the read view. This is because the read
    view must exclude any transactions that had not been committed at the
    time when the read view was created.
    
    lock_rec_convert_impl_to_expl_for_trx(), lock_rec_convert_impl_to_expl():
    Return an unsafe-to-dereference pointer to a transaction that holds or
    held the lock, or nullptr if the lock was available.
    
    lock_clust_rec_modify_check_and_lock(),
    lock_sec_rec_read_check_and_lock(),
    lock_clust_rec_read_check_and_lock():
    Return DB_RECORD_CHANGED if innodb_strict_isolation=ON and the
    lock was being held by another transaction.
    
    The test case, which is based on a bug report by Zhuang Liu,
    covers the function lock_sec_rec_read_check_and_lock().
    4635f0fe
lock_isolation.test 3.3 KB