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 <[email protected]>
Commit: Noah Misch <[email protected]>
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);