• Peter Geoghegan's avatar
    Remove unneeded "pin scan" nbtree VACUUM code. · 9f83468b
    Peter Geoghegan authored
    The REDO routine for nbtree's xl_btree_vacuum record type hasn't
    performed a "pin scan" since commit 3e4b7d87 went in, so clearly there
    isn't any point in VACUUM WAL-logging information that won't actually be
    used.  Finish off the work of commit 3e4b7d87 (and the closely related
    preceding commit 687f2cd7) by removing the code that generates this
    unused information.  Also remove the REDO routine code disabled by
    commit 3e4b7d87.
    
    Replace the unneeded lastBlockVacuumed field in xl_btree_vacuum with a
    new "ndeleted" field.  The new field isn't actually needed right now,
    since we could continue to infer the array length from the overall
    record length.  However, an upcoming patch to add deduplication to
    nbtree needs to add an "items updated" field to xl_btree_vacuum, so we
    might as well start being explicit about the number of items now.
    (Besides, it doesn't seem like a good idea to leave the xl_btree_vacuum
    struct without any fields; the C standard says that that's undefined.)
    
    nbtree VACUUM no longer forces writing a WAL record for the last block
    in the index.  Writing out a WAL record with no items for the final
    block was supposed to force processing of a lastBlockVacuumed field by a
    pin scan.
    
    Bump XLOG_PAGE_MAGIC because xl_btree_vacuum changed.
    
    Discussion: https://postgr.es/m/CAH2-WzmY_mT7UnTzFB5LBQDBkKpdV5UxP3B5bLb7uP%3D%3D6UQJRQ%40mail.gmail.com
    9f83468b
nbtpage.c 64.8 KB