• H
    Advance backend's advertised xmin more aggressively. · 94028691
    Heikki Linnakangas 提交于
    Currently, a backend will reset it's PGXACT->xmin value when it doesn't
    have any registered snapshots left. That covered the common case that a
    transaction in read committed mode runs several queries, one after each
    other, as there would be no snapshots active between those queries.
    However, if you hold cursors across each of the query, we didn't get a
    chance to reset xmin.
    
    To make that better, keep all the registered snapshots in a pairing heap,
    ordered by xmin so that it's always quick to find the snapshot with the
    smallest xmin. That allows us to advance PGXACT->xmin whenever the oldest
    snapshot is deregistered, even if there are others still active.
    
    Per discussion originally started by Jeff Davis back in 2009 and more
    recently by Robert Haas.
    94028691
snapmgr.c 41.1 KB