Skip to content
Snippets Groups Projects
Commit 370a46fc authored by Kevin Grittner's avatar Kevin Grittner
Browse files

Add new snapshot fields to serialize/deserialize functions.

The "snapshot too old" condition was not being recognized when
using a copied snapshot, since the original timestamp and lsn were
not being passed along.  Noticed when testing the combination of
"snapshot too old" with parallel query execution.
parent 6436a853
No related branches found
No related tags found
No related merge requests found
...@@ -239,6 +239,8 @@ typedef struct SerializedSnapshotData ...@@ -239,6 +239,8 @@ typedef struct SerializedSnapshotData
bool suboverflowed; bool suboverflowed;
bool takenDuringRecovery; bool takenDuringRecovery;
CommandId curcid; CommandId curcid;
int64 whenTaken;
XLogRecPtr lsn;
} SerializedSnapshotData; } SerializedSnapshotData;
Size Size
...@@ -1936,6 +1938,8 @@ SerializeSnapshot(Snapshot snapshot, char *start_address) ...@@ -1936,6 +1938,8 @@ SerializeSnapshot(Snapshot snapshot, char *start_address)
serialized_snapshot->suboverflowed = snapshot->suboverflowed; serialized_snapshot->suboverflowed = snapshot->suboverflowed;
serialized_snapshot->takenDuringRecovery = snapshot->takenDuringRecovery; serialized_snapshot->takenDuringRecovery = snapshot->takenDuringRecovery;
serialized_snapshot->curcid = snapshot->curcid; serialized_snapshot->curcid = snapshot->curcid;
serialized_snapshot->whenTaken = snapshot->whenTaken;
serialized_snapshot->lsn = snapshot->lsn;
/* /*
* Ignore the SubXID array if it has overflowed, unless the snapshot was * Ignore the SubXID array if it has overflowed, unless the snapshot was
...@@ -2002,6 +2006,8 @@ RestoreSnapshot(char *start_address) ...@@ -2002,6 +2006,8 @@ RestoreSnapshot(char *start_address)
snapshot->suboverflowed = serialized_snapshot->suboverflowed; snapshot->suboverflowed = serialized_snapshot->suboverflowed;
snapshot->takenDuringRecovery = serialized_snapshot->takenDuringRecovery; snapshot->takenDuringRecovery = serialized_snapshot->takenDuringRecovery;
snapshot->curcid = serialized_snapshot->curcid; snapshot->curcid = serialized_snapshot->curcid;
snapshot->whenTaken = serialized_snapshot->whenTaken;
snapshot->lsn = serialized_snapshot->lsn;
/* Copy XIDs, if present. */ /* Copy XIDs, if present. */
if (serialized_snapshot->xcnt > 0) if (serialized_snapshot->xcnt > 0)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment