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);

Reply via email to