• Amit Kapila's avatar
    Fix decoding of speculative aborts. · 4daa140a
    Amit Kapila authored
    During decoding for speculative inserts, we were relying for cleaning
    toast hash on confirmation records or next change records. But that
    could lead to multiple problems (a) memory leak if there is neither a
    confirmation record nor any other record after toast insertion for a
    speculative insert in the transaction, (b) error and assertion failures
    if the next operation is not an insert/update on the same table.
    
    The fix is to start queuing spec abort change and clean up toast hash
    and change record during its processing. Currently, we are queuing the
    spec aborts for both toast and main table even though we perform cleanup
    while processing the main table's spec abort record. Later, if we have a
    way to distinguish between the spec abort record of toast and the main
    table, we can avoid queuing the change for spec aborts of toast tables.
    
    Reported-by: Ashutosh Bapat
    Author: Dilip Kumar
    Reviewed-by: Amit Kapila
    Backpatch-through: 9.6, where it was introduced
    Discussion: https://postgr.es/m/CAExHW5sPKF-Oovx_qZe4p5oM6Dvof7_P+XgsNAViug15Fm99jA@mail.gmail.com
    4daa140a
reorderbuffer.h 20.3 KB