Commit 829f12e2 authored by Simon Riggs's avatar Simon Riggs

Revert 1f30295e

Reported-by: Tom Lane
parent d1fcc622
...@@ -2076,6 +2076,14 @@ SerializeSnapshot(Snapshot snapshot, char *start_address) ...@@ -2076,6 +2076,14 @@ SerializeSnapshot(Snapshot snapshot, char *start_address)
serialized_snapshot.whenTaken = snapshot->whenTaken; serialized_snapshot.whenTaken = snapshot->whenTaken;
serialized_snapshot.lsn = snapshot->lsn; serialized_snapshot.lsn = snapshot->lsn;
/*
* Ignore the SubXID array if it has overflowed, unless the snapshot was
* taken during recovey - in that case, top-level XIDs are in subxip as
* well, and we mustn't lose them.
*/
if (serialized_snapshot.suboverflowed && !snapshot->takenDuringRecovery)
serialized_snapshot.subxcnt = 0;
/* Copy struct to possibly-unaligned buffer */ /* Copy struct to possibly-unaligned buffer */
memcpy(start_address, memcpy(start_address,
&serialized_snapshot, sizeof(SerializedSnapshotData)); &serialized_snapshot, sizeof(SerializedSnapshotData));
...@@ -2092,9 +2100,6 @@ SerializeSnapshot(Snapshot snapshot, char *start_address) ...@@ -2092,9 +2100,6 @@ SerializeSnapshot(Snapshot snapshot, char *start_address)
* snapshot taken during recovery; all the top-level XIDs are in subxip as * snapshot taken during recovery; all the top-level XIDs are in subxip as
* well in that case, so we mustn't lose them. * well in that case, so we mustn't lose them.
*/ */
if (serialized_snapshot.suboverflowed && !snapshot->takenDuringRecovery)
serialized_snapshot.subxcnt = 0;
if (serialized_snapshot.subxcnt > 0) if (serialized_snapshot.subxcnt > 0)
{ {
Size subxipoff = sizeof(SerializedSnapshotData) + Size subxipoff = sizeof(SerializedSnapshotData) +
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment