• Tom Lane's avatar
    Remove UpdateFreeSpaceMap(), use FreeSpaceMapVacuumRange() instead. · a063baac
    Tom Lane authored
    FreeSpaceMapVacuumRange has the same effect, is more efficient if many
    pages are involved, and makes fewer assumptions about how it's used.
    Notably, Claudio Freire pointed out that UpdateFreeSpaceMap could fail
    if the specified freespace value isn't the maximum possible.  This isn't
    a problem for the single existing user, but the function represents an
    attractive nuisance IMO, because it's named as though it were a
    general-purpose update function and its limitations are undocumented.
    In any case we don't need multiple ways to get the same result.
    
    In passing, do some code review and cleanup in RelationAddExtraBlocks.
    In particular, I see no excuse for it to omit the PageIsNew safety check
    that's done in the mainline extension path in RelationGetBufferForTuple.
    
    Discussion: https://postgr.es/m/CAGTBQpYR0uJCNTt3M5GOzBRHo+-GccNO1nCaQ8yEJmZKSW5q1A@mail.gmail.com
    a063baac
freespace.c 24.5 KB