Get rid of a global variable
authorPeter Eisentraut <[email protected]>
Tue, 23 Jul 2024 07:53:54 +0000 (09:53 +0200)
committerPeter Eisentraut <[email protected]>
Tue, 23 Jul 2024 08:00:41 +0000 (10:00 +0200)
bootstrap_data_checksum_version can just as easily be passed to where
it is used via function arguments.

Reviewed-by: Andres Freund <[email protected]>
Discussion: https://www.postgresql.org/message-id/flat/e0a62134-83da-4ba4-8cdb-ceb0111c95ce@eisentraut.org

src/backend/access/transam/xlog.c
src/backend/bootstrap/bootstrap.c
src/include/access/xlog.h

index d70ba67bac95995f9374b3f00b618a4b7a35d35e..473a9c5c2f8ec5882f88d1a5e53575f03ca9cf81 100644 (file)
 #include "utils/timestamp.h"
 #include "utils/varlena.h"
 
-extern uint32 bootstrap_data_checksum_version;
-
 /* timeline ID to be used when bootstrapping */
 #define BootstrapTimeLineID        1
 
@@ -683,7 +681,7 @@ static void ValidateXLOGDirectoryStructure(void);
 static void CleanupBackupHistory(void);
 static void UpdateMinRecoveryPoint(XLogRecPtr lsn, bool force);
 static bool PerformRecoveryXLogAction(void);
-static void InitControlFile(uint64 sysidentifier);
+static void InitControlFile(uint64 sysidentifier, uint32 data_checksum_version);
 static void WriteControlFile(void);
 static void ReadControlFile(void);
 static void UpdateControlFile(void);
@@ -4190,7 +4188,7 @@ CleanupBackupHistory(void)
  */
 
 static void
-InitControlFile(uint64 sysidentifier)
+InitControlFile(uint64 sysidentifier, uint32 data_checksum_version)
 {
    char        mock_auth_nonce[MOCK_AUTH_NONCE_LEN];
 
@@ -4221,7 +4219,7 @@ InitControlFile(uint64 sysidentifier)
    ControlFile->wal_level = wal_level;
    ControlFile->wal_log_hints = wal_log_hints;
    ControlFile->track_commit_timestamp = track_commit_timestamp;
-   ControlFile->data_checksum_version = bootstrap_data_checksum_version;
+   ControlFile->data_checksum_version = data_checksum_version;
 }
 
 static void
@@ -4997,7 +4995,7 @@ XLOGShmemInit(void)
  * and the initial XLOG segment.
  */
 void
-BootStrapXLOG(void)
+BootStrapXLOG(uint32 data_checksum_version)
 {
    CheckPoint  checkPoint;
    char       *buffer;
@@ -5139,7 +5137,7 @@ BootStrapXLOG(void)
    openLogFile = -1;
 
    /* Now create pg_control */
-   InitControlFile(sysidentifier);
+   InitControlFile(sysidentifier, data_checksum_version);
    ControlFile->time = checkPoint.time;
    ControlFile->checkPoint = checkPoint.redo;
    ControlFile->checkPointCopy = checkPoint;
index 986f6f1d9ca07313d772e2ba393e35c66dc9ecc7..7637581a1845ff3abed712daef2f814c4e1ff4ff 100644 (file)
@@ -41,8 +41,6 @@
 #include "utils/rel.h"
 #include "utils/relmapper.h"
 
-uint32     bootstrap_data_checksum_version = 0;    /* No checksum */
-
 
 static void CheckerModeMain(void);
 static void bootstrap_signals(void);
@@ -202,6 +200,7 @@ BootstrapModeMain(int argc, char *argv[], bool check_only)
    char       *progname = argv[0];
    int         flag;
    char       *userDoption = NULL;
+   uint32      bootstrap_data_checksum_version = 0;    /* No checksum */
 
    Assert(!IsUnderPostmaster);
 
@@ -332,7 +331,7 @@ BootstrapModeMain(int argc, char *argv[], bool check_only)
    BaseInit();
 
    bootstrap_signals();
-   BootStrapXLOG();
+   BootStrapXLOG(bootstrap_data_checksum_version);
 
    /*
     * To ensure that src/common/link-canary.c is linked into the backend, we
index 1a1f11a943f8f6e81d607f36a84f6b66185b9a2c..c40fd56b291fd4cabea1af1a8079e6cda6d1a651 100644 (file)
@@ -231,7 +231,7 @@ extern bool DataChecksumsEnabled(void);
 extern XLogRecPtr GetFakeLSNForUnloggedRel(void);
 extern Size XLOGShmemSize(void);
 extern void XLOGShmemInit(void);
-extern void BootStrapXLOG(void);
+extern void BootStrapXLOG(uint32 data_checksum_version);
 extern void InitializeWalConsistencyChecking(void);
 extern void LocalProcessControlFile(bool reset);
 extern WalLevel GetActiveWalLevelOnStandby(void);