summaryrefslogtreecommitdiff
path: root/src/backend/bootstrap
diff options
context:
space:
mode:
authorBruce Momjian2003-05-06 23:34:56 +0000
committerBruce Momjian2003-05-06 23:34:56 +0000
commitd9fd7d12f6c08f1502e8d57d222797e86198b1a6 (patch)
tree82dfc7235bfeaa5f790af91e4ec302c2f07ddee6 /src/backend/bootstrap
parente8f4f2f92d0b6ea94d9ab13eaf5b2483f7e1f6b3 (diff)
Pass shared memory id and socket descriptor number on command line for
fork/exec.
Diffstat (limited to 'src/backend/bootstrap')
-rw-r--r--src/backend/bootstrap/bootstrap.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index 4a995889c8e..215e165cf72 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
- * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.154 2003/05/06 05:15:45 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.155 2003/05/06 23:34:55 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -36,6 +36,7 @@
#include "miscadmin.h"
#include "storage/freespace.h"
#include "storage/ipc.h"
+#include "storage/pg_shmem.h"
#include "storage/proc.h"
#include "tcop/tcopprot.h"
#include "utils/builtins.h"
@@ -252,7 +253,7 @@ BootstrapMain(int argc, char *argv[])
* variable */
}
- while ((flag = getopt(argc, argv, "B:d:D:Fo:px:")) != -1)
+ while ((flag = getopt(argc, argv, "B:d:D:Fo:p:x:")) != -1)
{
switch (flag)
{
@@ -283,8 +284,19 @@ BootstrapMain(int argc, char *argv[])
xlogop = atoi(optarg);
break;
case 'p':
+ {
/* indicates fork from postmaster */
+ char *p;
+#ifdef EXEC_BACKEND
+ sscanf(optarg, "%d,", &UsedShmemSegID);
+ p = strchr(optarg, ',');
+ if (p)
+ dbname = strdup(p+1);
+#else
+ dbname = strdup(optarg);
+#endif
break;
+ }
case 'B':
SetConfigOption("shared_buffers", optarg, PGC_POSTMASTER, PGC_S_ARGV);
break;
@@ -292,14 +304,16 @@ BootstrapMain(int argc, char *argv[])
usage();
break;
}
- } /* while */
+ }
- if (argc - optind != 1)
+ if (!dbname && argc - optind == 1)
+ {
+ dbname = argv[optind];
+ optind++;
+ }
+ if (!dbname || argc != optind)
usage();
- dbname = argv[optind];
-
- Assert(dbname);
if (IsUnderPostmaster && ExecBackend && MyProc /* ordinary backend */)
{