Thread

Commits

  1. Update nbtree README's "Scans during Recovery".

  2. Avoid pin scan for replay of XLOG_BTREE_VACUUM in all cases

  1. Why is get_actual_variable_range()'s use of SnapshotNonVacuumable safe during recovery?

    Peter Geoghegan <pg@bowt.ie> — 2019-11-20T21:43:05Z

    I noticed that the nbtree README has an obsolete reference to the
    former design of get_actual_variable_range() in the "Scans during
    Recovery" section. It used to use a dirty snapshot, but doesn't
    anymore. These days, get_actual_variable_range() uses
    SnapshotNonVacuumable -- see commits 3ca930fc and d3751adc. I would
    like to keep the README current.
    
    My understanding is that we can trust RecentGlobalXmin to be something
    useful and current during recovery, in general, so the selfuncs.c
    index-only scan (which uses SnapshotNonVacuumable + RecentGlobalXmin)
    can be trusted to work just as well as it would on the primary. Does
    that sound correct?
    
    The background here is that I plan on finishing off the work started
    by Simon's commit 3e4b7d87; I want to *completely* remove now-dead
    code that was used for "recovery pin scans". 3e4b7d87 disabled these
    "pin scans" without removing them altogether, which just seems sloppy
    now. There are quite a lot of comments that needlessly talk about this
    pin scan mechanism in far removed places like nbtxlog.h. Also, we
    waste a small amount of space in xl_btree_vacuum WAL records, since we
    don't need to WAL-log lastBlockVacuumed (we also don't need to call
    _bt_delitems_vacuum() one last time in the case where we don't have
    anything to kill on the last block, just so the pin scan can happen --
    it won't ever happen).
    
    -- 
    Peter Geoghegan
    
    
    
    
  2. Re: Why is get_actual_variable_range()'s use of SnapshotNonVacuumable safe during recovery?

    Peter Geoghegan <pg@bowt.ie> — 2019-12-14T00:48:39Z

    On Wed, Nov 20, 2019 at 1:43 PM Peter Geoghegan <pg@bowt.ie> wrote:
    > My understanding is that we can trust RecentGlobalXmin to be something
    > useful and current during recovery, in general, so the selfuncs.c
    > index-only scan (which uses SnapshotNonVacuumable + RecentGlobalXmin)
    > can be trusted to work just as well as it would on the primary. Does
    > that sound correct?
    
    Nobody wants to chime in on this?
    
    I would like to fix the nbtree README soon. It's kind of standing in
    the way of my plan to finish off the work started by Simon's commit
    3e4b7d87, and remove the remaining remnants of nbtree VACUUM "pin
    scans". Apart from anything else, the current organisation of the code
    is contradictory.
    
    -- 
    Peter Geoghegan