• Andres Freund's avatar
    Change snapshot type to be determined by enum rather than callback. · 63746189
    Andres Freund authored
    This is in preparation for allowing the same snapshot be used for
    different table AMs. With the current callback based approach we would
    need one callback for each supported AM, which clearly would not be
    extensible.  Thus add a new Snapshot->snapshot_type field, and move
    the dispatch into HeapTupleSatisfiesVisibility() (which is now a
    function). Later work will then dispatch calls to
    HeapTupleSatisfiesVisibility() and other AMs visibility functions
    depending on the type of the table.  The central SnapshotType enum
    also seems like a good location to centralize documentation about the
    intended behaviour of various types of snapshots.
    
    As tqual.h isn't included by bufmgr.h any more (as HeapTupleSatisfies*
    isn't referenced by TestForOldSnapshot() anymore) a few files now need
    to include it directly.
    
    Author: Andres Freund, loosely based on earlier work by Haribabu Kommi
    Discussion:
        https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de
        https://postgr.es/m/20160812231527.GA690404@alvherre.pgsql
    63746189
bufmgr.h 9.02 KB