• Tom Lane's avatar
    Improve documentation about MVCC-unsafe utility commands. · 5869cbfe
    Tom Lane authored
    The table-rewriting forms of ALTER TABLE are MVCC-unsafe, in much the same
    way as TRUNCATE, because they replace all rows of the table with newly-made
    rows with a new xmin.  (Ideally, concurrent transactions with old snapshots
    would continue to see the old table contents, but the data is not there
    anymore --- and if it were there, it would be inconsistent with the table's
    updated rowtype, so there would be serious implementation problems to fix.)
    This was nowhere documented though, and the problem was only documented for
    TRUNCATE in a note in the TRUNCATE reference page.  Create a new "Caveats"
    section in the MVCC chapter that can be home to this and other limitations
    on serializable consistency.
    
    In passing, fix a mistaken statement that VACUUM and CLUSTER would reclaim
    space occupied by a dropped column.  They don't reconstruct existing tuples
    so they couldn't do that.
    
    Back-patch to all supported branches.
    5869cbfe
truncate.sgml 7.25 KB