aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/postmaster/postmaster.c22
-rw-r--r--src/backend/storage/ipc/ipci.c10
2 files changed, 21 insertions, 11 deletions
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index f27c69633ad..22bc5b1f3f1 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -37,7 +37,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.568 2009/01/01 17:23:46 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.569 2009/01/03 17:08:38 tgl Exp $
*
* NOTES
*
@@ -3668,6 +3668,14 @@ SubPostmasterMain(int argc, char *argv[])
/* Read in remaining GUC variables */
read_nondefault_variables();
+ /*
+ * Reload any libraries that were preloaded by the postmaster. Since
+ * we exec'd this process, those libraries didn't come along with us;
+ * but we should load them into all child processes to be consistent
+ * with the non-EXEC_BACKEND behavior.
+ */
+ process_shared_preload_libraries();
+
/* Run backend or appropriate child */
if (strcmp(argv[1], "--forkbackend") == 0)
{
@@ -3680,6 +3688,9 @@ SubPostmasterMain(int argc, char *argv[])
* Need to reinitialize the SSL library in the backend, since the
* context structures contain function pointers and cannot be passed
* through the parameter file.
+ *
+ * XXX should we do this in all child processes? For the moment it's
+ * enough to do it in backend children.
*/
#ifdef USE_SSL
if (EnableSSL)
@@ -3687,15 +3698,6 @@ SubPostmasterMain(int argc, char *argv[])
#endif
/*
- * process any libraries that should be preloaded at postmaster start
- *
- * NOTE: we have to re-load the shared_preload_libraries here because
- * this backend is not fork()ed so we can't inherit any shared
- * libraries / DLL's from our parent (the postmaster).
- */
- process_shared_preload_libraries();
-
- /*
* Perform additional initialization and client authentication.
*
* We want to do this before InitProcess() for a couple of reasons: 1.
diff --git a/src/backend/storage/ipc/ipci.c b/src/backend/storage/ipc/ipci.c
index 720f4cd2848..f85f0a66df2 100644
--- a/src/backend/storage/ipc/ipci.c
+++ b/src/backend/storage/ipc/ipci.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/storage/ipc/ipci.c,v 1.98 2009/01/01 17:23:47 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/storage/ipc/ipci.c,v 1.99 2009/01/03 17:08:39 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -34,6 +34,8 @@
#include "storage/spin.h"
+shmem_startup_hook_type shmem_startup_hook = NULL;
+
static Size total_addin_request = 0;
static bool addin_request_allowed = true;
@@ -222,4 +224,10 @@ CreateSharedMemoryAndSemaphores(bool makePrivate, int port)
if (!IsUnderPostmaster)
ShmemBackendArrayAllocation();
#endif
+
+ /*
+ * Now give loadable modules a chance to set up their shmem allocations
+ */
+ if (shmem_startup_hook)
+ shmem_startup_hook();
}