summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian1998-10-16 06:05:18 +0000
committerBruce Momjian1998-10-16 06:05:18 +0000
commit8fa2742ddf205d8adc11ca5abdcf67af7984de97 (patch)
tree2c2990ab6e4d5ea7249e90aeecf1fa4f030a3414
parent9f69aa083159481e54632b3a9aa786a256a773db (diff)
The problem is that read_pg_options needs DataDir to read its file but
DataDir is set after read_pg_options if postgres is called interactively. If postgres is forked by postgres DataDir is read from the PGDATA enviromnent variable set by the postmaster and this explains while the bug disappears. I have written this patch but I don't like it. Any better idea? Massimo Dal Zotto
-rw-r--r--src/backend/tcop/postgres.c9
-rw-r--r--src/backend/utils/init/globals.c4
-rw-r--r--src/backend/utils/misc/trace.c5
3 files changed, 14 insertions, 4 deletions
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 61e7d431ade..17ad10af997 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.93 1998/10/13 20:05:44 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.94 1998/10/16 06:05:13 momjian Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
@@ -1053,6 +1053,11 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
break;
case 'D': /* PGDATA directory */
+ if (!DataDir) {
+ DataDir = optarg;
+ /* must be done after DataDir is defined */
+ read_pg_options(0);
+ }
DataDir = optarg;
break;
@@ -1514,7 +1519,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
if (!IsUnderPostmaster)
{
puts("\nPOSTGRES backend interactive interface ");
- puts("$Revision: 1.93 $ $Date: 1998/10/13 20:05:44 $\n");
+ puts("$Revision: 1.94 $ $Date: 1998/10/16 06:05:13 $\n");
}
/* ----------------
diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c
index 60dabd605de..2c7e3999dcb 100644
--- a/src/backend/utils/init/globals.c
+++ b/src/backend/utils/init/globals.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/init/globals.c,v 1.25 1998/08/25 21:24:10 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/init/globals.c,v 1.26 1998/10/16 06:05:16 momjian Exp $
*
* NOTES
* Globals used all over the place should be declared here and not
@@ -46,7 +46,7 @@ int MyProcPid;
struct Port *MyProcPort;
long MyCancelKey;
-char *DataDir;
+char *DataDir = NULL;
/*
* The PGDATA directory user says to use, or defaults to via environment
diff --git a/src/backend/utils/misc/trace.c b/src/backend/utils/misc/trace.c
index 8adbb075be1..0f58a122dda 100644
--- a/src/backend/utils/misc/trace.c
+++ b/src/backend/utils/misc/trace.c
@@ -339,6 +339,11 @@ read_pg_options(SIGNAL_ARGS)
char *s,
*p;
+ if (!DataDir) {
+ fprintf(stderr, "read_pg_options: DataDir not defined\n");
+ return;
+ }
+
sprintf(buffer, "%s/%s", DataDir, "pg_options");
if ((fd = open(buffer, O_RDONLY)) < 0)
return;