diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index d7db3cd375c078dd6165bb1015eec348cc2598dd..f848de0014485d10b4ea21846b2a081b5ffa688f 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.151 2003/05/03 03:52:07 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.152 2003/05/03 05:13:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -236,7 +236,7 @@ BootstrapMain(int argc, char *argv[])
 	 *
 	 * If we are running under the postmaster, this is done already.
 	 */
-	if (!IsUnderPostmaster)
+	if (!IsUnderPostmaster || ExecBackend)
 		MemoryContextInit();
 
 	/*
@@ -245,9 +245,12 @@ BootstrapMain(int argc, char *argv[])
 
 	/* Set defaults, to be overriden by explicit options below */
 	dbName = NULL;
-	if (!IsUnderPostmaster)
+	if (!IsUnderPostmaster || ExecBackend)
 	{
 		InitializeGUCOptions();
+#ifdef EXEC_BACKEND
+		read_nondefault_variables();
+#endif
 		potential_DataDir = getenv("PGDATA");	/* Null if no PGDATA
 												 * variable */
 	}
@@ -306,7 +309,7 @@ BootstrapMain(int argc, char *argv[])
 		AttachSharedMemoryAndSemaphores();
 	}
 	
-	if (!IsUnderPostmaster)
+	if (!IsUnderPostmaster || ExecBackend)
 	{
 		if (!potential_DataDir)
 		{
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 767af51e9172b8d14292f18792ac75eaf571c7fb..ea98753bc5cec06631a2ae6ca48901095ae2c3e6 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.320 2003/05/03 03:52:07 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.321 2003/05/03 05:13:18 momjian Exp $
  *
  * NOTES
  *
@@ -2243,10 +2243,6 @@ BackendFinalize(Port *port)
 	/* Reset MyProcPid to new backend's pid */
 	MyProcPid = getpid();
 
-#ifdef EXEC_BACKEND
-	read_nondefault_variables();
-#endif
-
 	/*
 	 * Initialize libpq and enable reporting of elog errors to the client.
 	 * Must do this now because authentication uses libpq to send
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 76d958b4999b304572ddd070ccedbacb6336bad0..b60898270a6e3de6aa88b40ed6a979c0efc928db 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.330 2003/05/03 03:52:07 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.331 2003/05/03 05:13:20 momjian Exp $
  *
  * NOTES
  *	  this is the "main" module of the postgres backend and
@@ -1139,9 +1139,12 @@ PostgresMain(int argc, char *argv[], const char *username)
 	Noversion = false;
 	EchoQuery = false;
 
-	if (!IsUnderPostmaster)
+	if (!IsUnderPostmaster || ExecBackend)
 	{
 		InitializeGUCOptions();
+#ifdef EXEC_BACKEND
+		read_nondefault_variables();
+#endif
 		potential_DataDir = getenv("PGDATA");
 	}
 
@@ -1676,7 +1679,7 @@ PostgresMain(int argc, char *argv[], const char *username)
 	if (!IsUnderPostmaster)
 	{
 		puts("\nPOSTGRES backend interactive interface ");
-		puts("$Revision: 1.330 $ $Date: 2003/05/03 03:52:07 $\n");
+		puts("$Revision: 1.331 $ $Date: 2003/05/03 05:13:20 $\n");
 	}
 
 	/*