aboutsummaryrefslogtreecommitdiff
path: root/src/backend/bootstrap/bootstrap.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2003-12-25 03:52:51 +0000
committerBruce Momjian <bruce@momjian.us>2003-12-25 03:52:51 +0000
commitaeddc2a60d7fcfdb06b20162478212fa87732db9 (patch)
tree07cc9c8f9d9adad5516900a7a9e5a18fd32846b1 /src/backend/bootstrap/bootstrap.c
parent3e32e9476f827f9ac76fa3cdb1b3767d8a69619d (diff)
downloadpostgresql-aeddc2a60d7fcfdb06b20162478212fa87732db9.tar.gz
postgresql-aeddc2a60d7fcfdb06b20162478212fa87732db9.zip
Continued rearrangement to permit pgstat + BootstrapMain processes to be
fork/exec'd, in the same mode as the previous patch for backends. Claudio Natoli
Diffstat (limited to 'src/backend/bootstrap/bootstrap.c')
-rw-r--r--src/backend/bootstrap/bootstrap.c42
1 files changed, 18 insertions, 24 deletions
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index 4820582eb3f..f42c071195f 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/bootstrap/bootstrap.c,v 1.171 2003/12/20 17:31:21 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/bootstrap/bootstrap.c,v 1.172 2003/12/25 03:52:50 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -48,6 +48,11 @@
#define ALLOC(t, c) ((t *) calloc((unsigned)(c), sizeof(t)))
+#ifdef EXEC_BACKEND
+typedef struct Port Port;
+extern void SSDataBaseInit(int);
+extern void read_backend_variables(pid_t, Port*);
+#endif
extern int Int_yyparse(void);
static hashnode *AddStr(char *str, int strlength, int mderef);
@@ -238,7 +243,7 @@ BootstrapMain(int argc, char *argv[])
*
* If we are running under the postmaster, this is done already.
*/
- if (!IsUnderPostmaster /* when exec || ExecBackend */ )
+ if (!IsUnderPostmaster || ExecBackend)
MemoryContextInit();
/*
@@ -247,7 +252,7 @@ BootstrapMain(int argc, char *argv[])
/* Set defaults, to be overriden by explicit options below */
dbname = NULL;
- if (!IsUnderPostmaster /* when exec || ExecBackend */ )
+ if (!IsUnderPostmaster)
{
InitializeGUCOptions();
potential_DataDir = getenv("PGDATA"); /* Null if no PGDATA
@@ -285,24 +290,11 @@ BootstrapMain(int argc, char *argv[])
xlogop = atoi(optarg);
break;
case 'p':
- {
- /* indicates fork from postmaster */
#ifdef EXEC_BACKEND
- char *p;
-
- sscanf(optarg, "%lu,%p,",
- &UsedShmemSegID,
- &UsedShmemSegAddr);
- p = strchr(optarg, ',');
- if (p)
- p = strchr(p + 1, ',');
- if (p)
- dbname = strdup(p + 1);
-#else
- dbname = strdup(optarg);
+ IsUnderPostmaster = true;
#endif
+ dbname = strdup(optarg);
break;
- }
case 'B':
SetConfigOption("shared_buffers", optarg, PGC_POSTMASTER, PGC_S_ARGV);
break;
@@ -347,12 +339,7 @@ BootstrapMain(int argc, char *argv[])
if (!dbname || argc != optind)
usage();
-#ifdef EXEC_BACKEND
- if (IsUnderPostmaster && MyProc /* ordinary backend */ )
- AttachSharedMemoryAndSemaphores();
-#endif
-
- if (!IsUnderPostmaster /* when exec || ExecBackend */ )
+ if (!IsUnderPostmaster || ExecBackend)
{
if (!potential_DataDir)
{
@@ -376,6 +363,9 @@ BootstrapMain(int argc, char *argv[])
{
#ifdef EXEC_BACKEND
read_nondefault_variables();
+ read_backend_variables(getpid(),NULL);
+
+ SSDataBaseInit(xlogop);
#endif
}
else
@@ -427,6 +417,10 @@ BootstrapMain(int argc, char *argv[])
SetProcessingMode(BootstrapProcessing);
IgnoreSystemIndexes(true);
+#ifdef EXEC_BACKEND
+ if (IsUnderPostmaster)
+ AttachSharedMemoryAndSemaphores();
+#endif
XLOGPathInit();
BaseInit();