I think someone planned to have XactLogCommitRecord() use its forceSync parameter instead of reading the forceSyncCommit global variable, but that didn't happen. I'd like to remove the parameter, as attached. This has no functional consequences, as detailed in the commit message.
Author: Noah Misch <n...@leadboat.com> Commit: Noah Misch <n...@leadboat.com>
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);