• Amit Kapila's avatar
    Fix reorder buffer memory accounting for toast changes. · f5e0ff46
    Amit Kapila authored
    While processing toast changes in logical decoding, we rejigger the
    tuple change to point to in-memory toast tuples instead to on-disk toast
    tuples. And, to make sure the memory accounting is correct, we were
    subtracting the old change size and then after re-computing the new tuple,
    re-adding its size at the end. Now, if there is any error before we add
    the new size, we will release the changes and that will update the
    accounting info (subtracting the size from the counters). And we were
    underflowing there which leads to an assertion failure in assert enabled
    builds and wrong memory accounting in reorder buffer otherwise.
    
    Author: Bertrand Drouvot
    Reviewed-by: Amit Kapila
    Backpatch-through: 13, where memory accounting was introduced
    Discussion: https://postgr.es/m/92b0ee65-b8bd-e42d-c082-4f3f4bf12d34@amazon.com
    f5e0ff46
reorderbuffer.c 147 KB