• Heikki Linnakangas's avatar
    Fix a bug with SSI and prepared transactions: · 928408d9
    Heikki Linnakangas authored
    If there's a dangerous structure T0 ---> T1 ---> T2, and T2 commits first,
    we need to abort something. If T2 commits before both conflicts appear,
    then it should be caught by OnConflict_CheckForSerializationFailure. If
    both conflicts appear before T2 commits, it should be caught by
    PreCommit_CheckForSerializationFailure. But that is actually run when
    T2 *prepares*. Fix that in OnConflict_CheckForSerializationFailure, by
    treating a prepared T2 as if it committed already.
    
    This is mostly a problem for prepared transactions, which are in prepared
    state for some time, but also for regular transactions because they also go
    through the prepared state in the SSI code for a short moment when they're
    committed.
    
    Kevin Grittner and Dan Ports
    928408d9
prepared_xacts_1.out 5.87 KB