diff options
author | Bruce Momjian <bruce@momjian.us> | 2004-05-06 19:23:25 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2004-05-06 19:23:25 +0000 |
commit | 38b85b15c14e850eea4b28213b19e371740f398b (patch) | |
tree | 10ad69298f8b6ea4b337ba120a3cd6af23823e38 /src | |
parent | 22a2c4b576fe1423382e68b418d954208555ba34 (diff) | |
download | postgresql-38b85b15c14e850eea4b28213b19e371740f398b.tar.gz postgresql-38b85b15c14e850eea4b28213b19e371740f398b.zip |
sysv_shmem.c patch is to correct a bug that prevents the postmaster
recovering from an unexpected backend termination.
The remaining patches are to allow whitespace in db/install directory
names.
Claudio Natoli
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/port/sysv_shmem.c | 4 | ||||
-rw-r--r-- | src/backend/postmaster/pgstat.c | 11 | ||||
-rw-r--r-- | src/backend/postmaster/postmaster.c | 11 |
3 files changed, 13 insertions, 13 deletions
diff --git a/src/backend/port/sysv_shmem.c b/src/backend/port/sysv_shmem.c index 1c03fe4866b..1aca81f68b8 100644 --- a/src/backend/port/sysv_shmem.c +++ b/src/backend/port/sysv_shmem.c @@ -10,7 +10,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/port/sysv_shmem.c,v 1.33 2004/04/19 17:42:58 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/port/sysv_shmem.c,v 1.34 2004/05/06 19:23:25 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -250,7 +250,7 @@ PGSharedMemoryCreate(uint32 size, bool makePrivate, int port) #ifdef EXEC_BACKEND /* If Exec case, just attach and return the pointer */ - if (UsedShmemSegAddr != NULL && !makePrivate) + if (UsedShmemSegAddr != NULL && !makePrivate && IsUnderPostmaster) { void* origUsedShmemSegAddr = UsedShmemSegAddr; diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index 1267acbbcbe..65a37fd6a38 100644 --- a/src/backend/postmaster/pgstat.c +++ b/src/backend/postmaster/pgstat.c @@ -13,7 +13,7 @@ * * Copyright (c) 2001-2003, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.67 2004/04/19 17:42:58 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.68 2004/05/06 19:23:25 momjian Exp $ * ---------- */ #include "postgres.h" @@ -485,11 +485,10 @@ pgstat_forkexec(STATS_PROCESS_TYPE procType) snprintf(pgstatBuf[bufc++],MAXPGPATH,"%d",MaxBackends); /* + the pstat file names, and postgres pathname */ - /* FIXME: [fork/exec] whitespaces in directories? */ - snprintf(pgstatBuf[bufc++],MAXPGPATH,"%s",pgStat_tmpfname); - snprintf(pgstatBuf[bufc++],MAXPGPATH,"%s",pgStat_fname); - snprintf(pgstatBuf[bufc++],MAXPGPATH,"%s",pg_pathname); - snprintf(pgstatBuf[bufc++],MAXPGPATH,"%s",DataDir); + snprintf(pgstatBuf[bufc++],MAXPGPATH,"\"%s\"",pgStat_tmpfname); + snprintf(pgstatBuf[bufc++],MAXPGPATH,"\"%s\"",pgStat_fname); + snprintf(pgstatBuf[bufc++],MAXPGPATH,"\"%s\"",pg_pathname); + snprintf(pgstatBuf[bufc++],MAXPGPATH,"\"%s\"",DataDir); /* Add to the arg list */ Assert(bufc <= lengthof(pgstatBuf)); diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 3cbd40f3db6..1d781d0bb5a 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.381 2004/04/19 17:42:58 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.382 2004/05/06 19:23:25 momjian Exp $ * * NOTES * @@ -2741,8 +2741,7 @@ Backend_forkexec(Port *port) /* Format up context to pass to exec'd process */ snprintf(buf[bufc++],MAXPGPATH,"%lu",tmpBackendFileNum); - /* FIXME: [fork/exec] whitespaces in directories? */ - snprintf(buf[bufc++],MAXPGPATH,"%s",DataDir); + snprintf(buf[bufc++],MAXPGPATH,"\"%s\"",DataDir); /* Add to the arg list */ Assert(bufc <= lengthof(buf)); @@ -3039,6 +3038,7 @@ SSDataBase(int xlop) #endif #else char idbuf[32]; + char ddirbuf[MAXPGPATH]; #endif fflush(stdout); @@ -3097,8 +3097,9 @@ SSDataBase(int xlop) #ifdef EXEC_BACKEND /* pass data dir before end of secure switches (-p) */ + snprintf(ddirbuf, MAXPGPATH, "\"%s\"", DataDir); av[ac++] = "-D"; - av[ac++] = DataDir; + av[ac++] = ddirbuf; /* and the backend identifier + dbname */ snprintf(idbuf, sizeof(idbuf), "-p%lu,template1", tmpBackendFileNum); @@ -3490,7 +3491,7 @@ pid_t win32_forkexec(const char* path, char *argv[]) HANDLE waiterThread; /* Format the cmd line */ - snprintf(cmdLine,sizeof(cmdLine),"%s",path); + snprintf(cmdLine,sizeof(cmdLine),"\"%s\"",path); i = 0; while (argv[++i] != NULL) { |