Mark correctly initial slot snapshots with MVCC type when built
authorMichael Paquier
Wed, 20 Feb 2019 03:31:32 +0000 (12:31 +0900)
committerMichael Paquier
Wed, 20 Feb 2019 03:31:32 +0000 (12:31 +0900)
When building an initial slot snapshot, snapshots are marked with
historic MVCC snapshots as type with the marker field being set in
SnapBuildBuildSnapshot() but not overriden in SnapBuildInitialSnapshot().
Existing callers of SnapBuildBuildSnapshot() do not care about the type
of snapshot used, but extensions calling it actually may, as reported.

Author: Antonin Houska
Reviewed-by: Álvaro Herrera, Michael Paquier
Discussion: https://postgr.es/m/23215.1527665193@localhost
Backpatch-through: 9.4

src/backend/replication/logical/snapbuild.c

index df82005780267240c7219f069e0e8edb31109ece..9a817df11d6f04c8448cf46d2c855a3ce108e929 100644 (file)
@@ -617,6 +617,8 @@ SnapBuildInitialSnapshot(SnapBuild *builder)
        TransactionIdAdvance(xid);
    }
 
+   /* adjust remaining snapshot fields as needed */
+   snap->satisfies = HeapTupleSatisfiesMVCC;
    snap->xcnt = newxcnt;
    snap->xip = newxip;