• Andres Freund's avatar
    Correct logical decoding restore behaviour for subtransactions. · 61633f79
    Andres Freund authored
    Before initializing iteration over a subtransaction's changes, the last
    few changes were not spilled to disk. That's correct if the transaction
    didn't spill to disk, but otherwise... This bug can lead to missed or
    misorderd subtransaction contents when they were spilled to disk.
    
    Move spilling of the remaining in-memory changes to
    ReorderBufferIterTXNInit(), where it can easily be applied to the top
    transaction and, if present, subtransactions.
    
    Since this code had too many bugs already, noticeably increase test
    coverage.
    
    Fixes: #14319
    Reported-By: Huan Ruan
    Discussion: <20160909012610.20024.58169@wrigleys.postgresql.org>
    Backport: 9,4-, where logical decoding was added
    61633f79
spill.out 18.8 KB