snapshot_type.patch
text/x-diff
Filename: snapshot_type.patch
Type: text/x-diff
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/replication/logical/snapbuild.c | 2 | 0 |
| src/backend/utils/time/snapmgr.c | 7 | 0 |
diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c
index 2f185f7823..3394abb602 100644
--- a/src/backend/replication/logical/snapbuild.c
+++ b/src/backend/replication/logical/snapbuild.c
@@ -615,6 +615,8 @@ SnapBuildInitialSnapshot(SnapBuild *builder)
TransactionIdAdvance(xid);
}
+ /* And of course, adjust snapshot type accordingly. */
+ snap->snapshot_type = SNAPSHOT_MVCC;
snap->xcnt = newxcnt;
snap->xip = newxip;
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 6e02585e10..bc0166cc6f 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -1502,6 +1502,13 @@ ImportSnapshot(const char *idstr)
*/
memset(&snapshot, 0, sizeof(snapshot));
+ /*
+ * Do not rely on the fact that SNAPSHOT_MVCC is zero. (The core code
+ * currently does not use this field of imported snapshot, but let's keep
+ * things consistent.)
+ */
+ snapshot.snapshot_type = SNAPSHOT_MVCC;
+
parseVxidFromText("vxid:", &filebuf, path, &src_vxid);
src_pid = parseIntFromText("pid:", &filebuf, path);
/* we abuse parseXidFromText a bit here ... */