• Thomas Munro's avatar
    Fix rare dsa_allocate() failures due to freepage.c corruption. · 7215efdc
    Thomas Munro authored
    In a corner case, a btree page was allocated during a clean-up operation
    that could cause the tracking of the largest contiguous span of free
    space to get out of whack.  That was supposed to be prevented by the use
    of the "soft" flag to avoid allocating internal pages during incidental
    clean-up work, but the flag was ignored in the case where the FPM was
    promoted from singleton format to btree format.  Repair.
    
    Remove an obsolete comment in passing.
    
    Back-patch to 10, where freepage.c arrived (as support for dsa.c).
    
    Author: Robert Haas
    Diagnosed-by: Thomas Munro and Robert Haas
    Reported-by: Justin Pryzby, Rick Otten, Sand Stone, Arne Roland and others
    Discussion: https://postgr.es/m/CAMAYy4%2Bw3NTBM5JLWFi8twhWK4%3Dk_5L4nV5%2BbYDSPu8r4b97Zg%40mail.gmail.com
    7215efdc
freepage.c 55.7 KB