• Heikki Linnakangas's avatar
    Fix bugs in SSI tuple locking. · 81fbbfe3
    Heikki Linnakangas authored
    1. In heap_hot_search_buffer(), the PredicateLockTuple() call is passed
    wrong offset number. heapTuple->t_self is set to the tid of the first
    tuple in the chain that's visited, not the one actually being read.
    
    2. CheckForSerializableConflictIn() uses the tuple's t_ctid field
    instead of t_self to check for exiting predicate locks on the tuple. If
    the tuple was updated, but the updater rolled back, t_ctid points to the
    aborted dead tuple.
    
    Reported by Hannu Krosing. Backpatch to 9.1.
    81fbbfe3
heapam.c 208 KB