diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/bootstrap/bootstrap.c | 29 | ||||
-rw-r--r-- | src/backend/main/main.c | 8 | ||||
-rw-r--r-- | src/backend/postmaster/auxprocess.c | 5 | ||||
-rw-r--r-- | src/bin/initdb/initdb.c | 6 | ||||
-rw-r--r-- | src/include/bootstrap/bootstrap.h | 2 | ||||
-rw-r--r-- | src/include/miscadmin.h | 5 |
6 files changed, 21 insertions, 34 deletions
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c index 80dc3b585f6..2e2f76a4716 100644 --- a/src/backend/bootstrap/bootstrap.c +++ b/src/backend/bootstrap/bootstrap.c @@ -193,9 +193,14 @@ CheckerModeMain(void) * The bootstrap mode is used to initialize the template database. * The bootstrap backend doesn't speak SQL, but instead expects * commands in a special bootstrap language. + * + * When check_only is true, startup is done only far enough to verify that + * the current configuration, particularly the passed in options pertaining + * to shared memory sizing, options work (or at least do not cause an error + * up to shared memory creation). */ void -BootstrapModeMain(int argc, char *argv[]) +BootstrapModeMain(int argc, char *argv[], bool check_only) { int i; char *progname = argv[0]; @@ -209,16 +214,14 @@ BootstrapModeMain(int argc, char *argv[]) /* Set defaults, to be overridden by explicit options below */ InitializeGUCOptions(); - /* an initial --boot should be present */ + /* an initial --boot or --check should be present */ Assert(argc == 1 - || strcmp(argv[1], "--boot") != 0); + || strcmp(argv[1], "--boot") != 0 + || strcmp(argv[1], "--check") != 0); argv++; argc--; - /* If no -x argument, we are a CheckerProcess */ - MyAuxProcType = CheckerProcess; - - while ((flag = getopt(argc, argv, "B:c:d:D:Fkr:x:X:-:")) != -1) + while ((flag = getopt(argc, argv, "B:c:d:D:Fkr:X:-:")) != -1) { switch (flag) { @@ -250,16 +253,6 @@ BootstrapModeMain(int argc, char *argv[]) case 'r': strlcpy(OutputFileName, optarg, MAXPGPATH); break; - case 'x': - MyAuxProcType = atoi(optarg); - if (MyAuxProcType != CheckerProcess && - MyAuxProcType != BootstrapProcess) - { - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("-x %s is invalid", optarg))); - } - break; case 'X': { int WalSegSz = strtoul(optarg, NULL, 0); @@ -338,7 +331,7 @@ BootstrapModeMain(int argc, char *argv[]) * point. Right now it seems like it'd cause more code duplication than * it's worth. */ - if (MyAuxProcType == CheckerProcess) + if (check_only) { SetProcessingMode(NormalProcessing); CheckerModeMain(); diff --git a/src/backend/main/main.c b/src/backend/main/main.c index 78ec85861e9..9be39739567 100644 --- a/src/backend/main/main.c +++ b/src/backend/main/main.c @@ -197,8 +197,10 @@ main(int argc, char *argv[]) pgwin32_signal_initialize(); #endif - if (argc > 1 && strcmp(argv[1], "--boot") == 0) - BootstrapModeMain(argc, argv); /* does not return */ + if (argc > 1 && strcmp(argv[1], "--check") == 0) + BootstrapModeMain(argc, argv, true); + else if (argc > 1 && strcmp(argv[1], "--boot") == 0) + BootstrapModeMain(argc, argv, false); else if (argc > 1 && strcmp(argv[1], "--describe-config") == 0) GucInfoMain(); /* does not return */ else if (argc > 1 && strcmp(argv[1], "--single") == 0) @@ -350,9 +352,9 @@ help(const char *progname) printf(_("\nOptions for bootstrapping mode:\n")); printf(_(" --boot selects bootstrapping mode (must be first argument)\n")); + printf(_(" --check selects check mode (must be first argument)\n")); printf(_(" DBNAME database name (mandatory argument in bootstrapping mode)\n")); printf(_(" -r FILENAME send stdout and stderr to given file\n")); - printf(_(" -x NUM internal use\n")); printf(_("\nPlease read the documentation for the complete list of run-time\n" "configuration settings and how to set them on the command line or in\n" diff --git a/src/backend/postmaster/auxprocess.c b/src/backend/postmaster/auxprocess.c index c391c963db0..196ee647cfe 100644 --- a/src/backend/postmaster/auxprocess.c +++ b/src/backend/postmaster/auxprocess.c @@ -142,11 +142,6 @@ AuxiliaryProcessMain(AuxProcType auxtype) switch (MyAuxProcType) { - case CheckerProcess: - case BootstrapProcess: - pg_unreachable(); - break; - case StartupProcess: StartupProcessMain(); proc_exit(1); diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index 994bf07f3ba..5e84c7bb20e 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -965,7 +965,7 @@ test_config_settings(void) test_buffs = MIN_BUFS_FOR_CONNS(test_conns); snprintf(cmd, sizeof(cmd), - "\"%s\" --boot -x0 %s %s " + "\"%s\" --check %s %s " "-c max_connections=%d " "-c shared_buffers=%d " "-c dynamic_shared_memory_type=%s " @@ -1001,7 +1001,7 @@ test_config_settings(void) } snprintf(cmd, sizeof(cmd), - "\"%s\" --boot -x0 %s %s " + "\"%s\" --check %s %s " "-c max_connections=%d " "-c shared_buffers=%d " "-c dynamic_shared_memory_type=%s " @@ -1406,7 +1406,7 @@ bootstrap_template1(void) unsetenv("PGCLIENTENCODING"); snprintf(cmd, sizeof(cmd), - "\"%s\" --boot -x1 -X %u %s %s %s %s", + "\"%s\" --boot -X %u %s %s %s %s", backend_exec, wal_segment_size_mb * (1024 * 1024), data_checksums ? "-k" : "", diff --git a/src/include/bootstrap/bootstrap.h b/src/include/bootstrap/bootstrap.h index a9829124104..7d3b78e3746 100644 --- a/src/include/bootstrap/bootstrap.h +++ b/src/include/bootstrap/bootstrap.h @@ -32,7 +32,7 @@ extern Form_pg_attribute attrtypes[MAXATTR]; extern int numattr; -extern void BootstrapModeMain(int argc, char *argv[]) pg_attribute_noreturn(); +extern void BootstrapModeMain(int argc, char *argv[], bool check_only) pg_attribute_noreturn(); extern void closerel(char *name); extern void boot_openrel(char *name); diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index 1b7422d6366..2e2e9a364a7 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -427,9 +427,7 @@ extern ProcessingMode Mode; typedef enum { NotAnAuxProcess = -1, - CheckerProcess = 0, - BootstrapProcess, - StartupProcess, + StartupProcess = 0, BgWriterProcess, ArchiverProcess, CheckpointerProcess, @@ -441,7 +439,6 @@ typedef enum extern AuxProcType MyAuxProcType; -#define AmBootstrapProcess() (MyAuxProcType == BootstrapProcess) #define AmStartupProcess() (MyAuxProcType == StartupProcess) #define AmBackgroundWriterProcess() (MyAuxProcType == BgWriterProcess) #define AmArchiverProcess() (MyAuxProcType == ArchiverProcess) |