• Tom Lane's avatar
    Clean up the representation of special snapshots by including a "method · e85a01df
    Tom Lane authored
    pointer" in every Snapshot struct.  This allows removal of the case-by-case
    tests in HeapTupleSatisfiesVisibility, which should make it a bit faster
    (I didn't try any performance tests though).  More importantly, we are no
    longer violating portable C practices by assuming that small integers are
    distinct from all pointer values, and HeapTupleSatisfiesDirty no longer
    has a non-reentrant API involving side-effects on a global variable.
    
    There were a couple of places calling HeapTupleSatisfiesXXX routines
    directly rather than through the HeapTupleSatisfiesVisibility macro.
    Since these places had to be changed anyway, I chose to make them go
    through the macro for uniformity.
    
    Along the way I renamed HeapTupleSatisfiesSnapshot to HeapTupleSatisfiesMVCC
    to emphasize that it's only used with MVCC-type snapshots.  I was sorely
    tempted to rename HeapTupleSatisfiesVisibility to HeapTupleSatisfiesSnapshot,
    but forebore for the moment to avoid confusion and reduce the likelihood that
    this patch breaks some of the pending patches.  Might want to reconsider
    doing that later.
    e85a01df
execMain.c 71.9 KB