aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/libpq/hba.c8
-rw-r--r--src/backend/utils/init/postinit.c13
2 files changed, 18 insertions, 3 deletions
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index 7a935f34b58..23c8b5de6b4 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -386,7 +386,7 @@ tokenize_file(const char *filename, FILE *file,
MemoryContext linecxt;
MemoryContext oldcxt;
- linecxt = AllocSetContextCreate(TopMemoryContext,
+ linecxt = AllocSetContextCreate(CurrentMemoryContext,
"tokenize file cxt",
ALLOCSET_DEFAULT_MINSIZE,
ALLOCSET_DEFAULT_INITSIZE,
@@ -1770,7 +1770,8 @@ load_hba(void)
FreeFile(file);
/* Now parse all the lines */
- hbacxt = AllocSetContextCreate(TopMemoryContext,
+ Assert(PostmasterContext);
+ hbacxt = AllocSetContextCreate(PostmasterContext,
"hba parser context",
ALLOCSET_DEFAULT_MINSIZE,
ALLOCSET_DEFAULT_MINSIZE,
@@ -2147,7 +2148,8 @@ load_ident(void)
FreeFile(file);
/* Now parse all the lines */
- ident_context = AllocSetContextCreate(TopMemoryContext,
+ Assert(PostmasterContext);
+ ident_context = AllocSetContextCreate(PostmasterContext,
"ident parser context",
ALLOCSET_DEFAULT_MINSIZE,
ALLOCSET_DEFAULT_MINSIZE,
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index 063b0653b49..0f04f281166 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -52,6 +52,7 @@
#include "utils/acl.h"
#include "utils/fmgroids.h"
#include "utils/guc.h"
+#include "utils/memutils.h"
#include "utils/pg_locale.h"
#include "utils/portal.h"
#include "utils/ps_status.h"
@@ -190,6 +191,18 @@ PerformAuthentication(Port *port)
* FIXME: [fork/exec] Ugh. Is there a way around this overhead?
*/
#ifdef EXEC_BACKEND
+ /*
+ * load_hba() and load_ident() want to work within the PostmasterContext,
+ * so create that if it doesn't exist (which it won't). We'll delete it
+ * again later, in PostgresMain.
+ */
+ if (PostmasterContext == NULL)
+ PostmasterContext = AllocSetContextCreate(TopMemoryContext,
+ "Postmaster",
+ ALLOCSET_DEFAULT_MINSIZE,
+ ALLOCSET_DEFAULT_INITSIZE,
+ ALLOCSET_DEFAULT_MAXSIZE);
+
if (!load_hba())
{
/*