• Tom Lane's avatar
    When truncating a relation in-place (eg during VACUUM), do not try to unlink · 1a5c450f
    Tom Lane authored
    any no-longer-needed segments; just truncate them to zero bytes and leave
    the files in place for possible future re-use.  This avoids problems when
    the segments are re-used due to relation growth shortly after truncation.
    Before, the bgwriter, and possibly other backends, could still be holding
    open file references to the old segment files, and would write dirty blocks
    into those files where they'd disappear from the view of other processes.
    
    Back-patch as far as 8.0.  I believe the 7.x branches are not vulnerable,
    because they had no bgwriter, and "blind" writes by other backends would
    always be done via freshly-opened file references.
    1a5c450f
md.c 27 KB