• Alvaro Herrera's avatar
    Avoid resetting Xmax when it's a multi with an aborted update · 07aeb1fe
    Alvaro Herrera authored
    HeapTupleSatisfiesUpdate can very easily "forget" tuple locks while
    checking the contents of a multixact and finding it contains an aborted
    update, by setting the HEAP_XMAX_INVALID bit.  This would lead to
    concurrent transactions not noticing any previous locks held by
    transactions that might still be running, and thus being able to acquire
    subsequent locks they wouldn't be normally able to acquire.
    
    This bug was introduced in commit 1ce150b7; backpatch this fix to 9.3,
    like that commit.
    
    This change reverts the change to the delete-abort-savept isolation test
    in 1ce150b7, because that behavior change was caused by this bug.
    
    Noticed by Andres Freund while investigating a different issue reported
    by Noah Misch.
    07aeb1fe
tqual.c 43.8 KB