• Heikki Linnakangas's avatar
    Fix buffer pin leak in heap update redo routine. · 3cfb572d
    Heikki Linnakangas authored
    In a heap update, if the old and new tuple were on different pages, and the
    new page no longer existed (because it was subsequently truncated away by
    vacuum), heap_xlog_update forgot to release the pin on the old buffer. This
    bug was introduced by the "Fix multiple problems in WAL replay" patch,
    commit 3bbf668d (on master branch).
    
    With full_page_writes=off, this triggered an "incorrect local pin count"
    error later in replay, if the old page was vacuumed.
    
    This fixes bug #7969, reported by Yunong Xiao. Backpatch to 9.0, like the
    commit that introduced this bug.
    3cfb572d
heapam.c 207 KB