Author: Noah Misch Commit: Noah Misch Remove dead forceSync parameter of XactLogCommitRecord(). The function has been reading global variable forceSyncCommit, mirroring the intent of the caller that passed forceSync=forceSyncCommit. The other caller, RecordTransactionCommitPrepared(), passed false. Since COMMIT PREPARED can't share a transaction with any command, it certainly doesn't share a transaction with a command that sets forceSyncCommit. Discussion: https://postgr.es/m/FIXME diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index e190487..571eb7c 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -2217,7 +2217,7 @@ RecordTransactionCommitPrepared(TransactionId xid, recptr = XactLogCommitRecord(committs, nchildren, children, nrels, rels, ninvalmsgs, invalmsgs, - initfileinval, false, + initfileinval, MyXactFlags | XACT_FLAGS_ACQUIREDACCESSEXCLUSIVELOCK, xid, gid); diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index cd30b62..905dc7d 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -1048,7 +1048,9 @@ CommandCounterIncrement(void) * ForceSyncCommit * * Interface routine to allow commands to force a synchronous commit of the - * current top-level transaction + * current top-level transaction. Currently, two-phase commit does not + * persist and restore this variable. So long as all callers use + * PreventInTransactionBlock(), that omission has no consequences. */ void ForceSyncCommit(void) @@ -1315,7 +1317,7 @@ RecordTransactionCommit(void) XactLogCommitRecord(xactStopTimestamp, nchildren, children, nrels, rels, nmsgs, invalMessages, - RelcacheInitFileInval, forceSyncCommit, + RelcacheInitFileInval, MyXactFlags, InvalidTransactionId, NULL /* plain commit */ ); @@ -5468,7 +5470,7 @@ XactLogCommitRecord(TimestampTz commit_time, int nsubxacts, TransactionId *subxacts, int nrels, RelFileNode *rels, int nmsgs, SharedInvalidationMessage *msgs, - bool relcacheInval, bool forceSync, + bool relcacheInval, int xactflags, TransactionId twophase_xid, const char *twophase_gid) { diff --git a/src/include/access/xact.h b/src/include/access/xact.h index 88025b1..db19187 100644 --- a/src/include/access/xact.h +++ b/src/include/access/xact.h @@ -434,7 +434,7 @@ extern XLogRecPtr XactLogCommitRecord(TimestampTz commit_time, int nsubxacts, TransactionId *subxacts, int nrels, RelFileNode *rels, int nmsgs, SharedInvalidationMessage *msgs, - bool relcacheInval, bool forceSync, + bool relcacheInval, int xactflags, TransactionId twophase_xid, const char *twophase_gid);