aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2022-02-14 09:30:35 +0900
committerMichael Paquier <michael@paquier.xyz>2022-02-14 09:30:35 +0900
commitc963e84fb8c8ec75bfdbe6a7a0857ccd1378baa0 (patch)
tree9b53060531b527f4fbbe5ad866a1b537e7706a45 /src
parent994d76707a254da6d03e389fa46141371a99e4e1 (diff)
downloadpostgresql-c963e84fb8c8ec75bfdbe6a7a0857ccd1378baa0.tar.gz
postgresql-c963e84fb8c8ec75bfdbe6a7a0857ccd1378baa0.zip
Make origin data initialization consistent other fields in 2PC header
As of 1eb6d65, the origin data is optionally stored in a 2PC file header, with the data filled in EndPrepare() even in the default case where there is no origin data to add. This was inconsistent with all the other fields of TwoPhaseFileHeader which are initialized in StartPrepare(), so move the initialization of origin_lsn and origin_timestamp there instead. The effect of missing the initialization at this early stage is only cosmetic based on the current logic of the code, but could have led to issues in the long-term, and it is more consistent done this way. Reported-by: Ranier Vilela Discussion: https://postgr.es/m/CAEudQAooECJ+gU_RZB-yhioPOV94R4ucoHAf68PiJhLpgpVpBw@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/transam/twophase.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c
index 608c5149e52..874c8ed1256 100644
--- a/src/backend/access/transam/twophase.c
+++ b/src/backend/access/transam/twophase.c
@@ -1074,6 +1074,9 @@ StartPrepare(GlobalTransaction gxact)
hdr.ninvalmsgs = xactGetCommittedInvalidationMessages(&invalmsgs,
&hdr.initfileinval);
hdr.gidlen = strlen(gxact->gid) + 1; /* Include '\0' */
+ /* EndPrepare will fill the origin data, if necessary */
+ hdr.origin_lsn = InvalidXLogRecPtr;
+ hdr.origin_timestamp = 0;
save_state_data(&hdr, sizeof(TwoPhaseFileHeader));
save_state_data(gxact->gid, hdr.gidlen);
@@ -1133,11 +1136,6 @@ EndPrepare(GlobalTransaction gxact)
hdr->origin_lsn = replorigin_session_origin_lsn;
hdr->origin_timestamp = replorigin_session_origin_timestamp;
}
- else
- {
- hdr->origin_lsn = InvalidXLogRecPtr;
- hdr->origin_timestamp = 0;
- }
/*
* If the data size exceeds MaxAllocSize, we won't be able to read it in