• Peter Geoghegan's avatar
    Simplify state managed by VACUUM. · b4af70cb
    Peter Geoghegan authored
    Reorganize the state struct used by VACUUM -- group related items
    together to make it easier to understand.  Also stop relying on stack
    variables inside lazy_scan_heap() -- move those into the state struct
    instead.  Doing things this way simplifies large groups of related
    functions whose function signatures had a lot of unnecessary redundancy.
    
    Switch over to using int64 for the struct fields used to count things
    that are reported to the user via log_autovacuum and VACUUM VERBOSE
    output.  We were using double, but that doesn't seem to have any
    advantages.  Using int64 makes it possible to add assertions that verify
    that the first pass over the heap (pruning) encounters precisely the
    same number of LP_DEAD items that get deleted from indexes later on, in
    the second pass over the heap.  These assertions will be added in later
    commits.
    
    Finally, adjust the signatures of functions with IndexBulkDeleteResult
    pointer arguments in cases where there was ambiguity about whether or
    not the argument relates to a single index or all indexes.  Functions
    now use the idiom that both ambulkdelete() and amvacuumcleanup() have
    always used (where appropriate): accept a mutable IndexBulkDeleteResult
    pointer argument, and return a result IndexBulkDeleteResult pointer to
    caller.
    
    Author: Peter Geoghegan <pg@bowt.ie>
    Reviewed-By: default avatarMasahiko Sawada <sawada.mshk@gmail.com>
    Reviewed-By: default avatarRobert Haas <robertmhaas@gmail.com>
    Discussion: https://postgr.es/m/CAH2-WzkeOSYwC6KNckbhk2b1aNnWum6Yyn0NKP9D-Hq1LGTDPw@mail.gmail.com
    b4af70cb
vacuum.c 66.7 KB