aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas G. Lockhart <lockhart@fourpalms.org>1997-11-10 15:24:56 +0000
committerThomas G. Lockhart <lockhart@fourpalms.org>1997-11-10 15:24:56 +0000
commitb42e37bcde1ecd4bee3bd0c05f5f5706f8febfd6 (patch)
tree0b999dd90f5e75c8226f86622f50abaf8034d06c
parent25e950fca4afc56325206847134c3c0c99f0be36 (diff)
downloadpostgresql-b42e37bcde1ecd4bee3bd0c05f5f5706f8febfd6.tar.gz
postgresql-b42e37bcde1ecd4bee3bd0c05f5f5706f8febfd6.zip
Change quickdie elog notice to a single message.
Clean up FloatExceptionHandler elog message source code.
-rw-r--r--src/backend/tcop/postgres.c26
-rw-r--r--src/backend/tcop/variable.c55
2 files changed, 54 insertions, 27 deletions
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 0d3daabe8d3..7659d90275c 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.53 1997/11/09 04:47:09 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.54 1997/11/10 15:24:55 thomas Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
@@ -728,8 +728,9 @@ pg_eval_dest(char *query_string,/* string to execute */
* handle_warn() is used to catch kill(getpid(),1) which
* occurs when elog(WARN) is called.
*
- * quickdie() occurs when signalled by the postmaster, some backend
- * has bought the farm we need to stop what we're doing and exit.
+ * quickdie() occurs when signalled by the postmaster.
+ * Some backend has bought the farm,
+ * so we need to stop what we're doing and exit.
*
* die() preforms an orderly cleanup via ExitPostgres()
* --------------------------------
@@ -744,12 +745,12 @@ handle_warn(SIGNAL_ARGS)
static void
quickdie(SIGNAL_ARGS)
{
- elog(NOTICE, "Message from PostgreSQL backend: The Postmaster has ");
- elog(NOTICE, "informed me that some other backend died abnormally and ");
- elog(NOTICE, "possibly corrupted shared memory. I have rolled back ");
- elog(NOTICE, "the current transaction and am going to terminate your ");
- elog(NOTICE, "database system connection and exit. Please reconnect to");
- elog(NOTICE, "the database system and repeat your query.");
+ elog(NOTICE, "Message from PostgreSQL backend:"
+ "\n\tThe Postmaster has informed me that some other backend"
+ " died abnormally and possibly corrupted shared memory."
+ "\n\tI have rolled back the current transaction and am"
+ " going to terminate your database system connection and exit."
+ "\n\tPlease reconnect to the database system and repeat your query.");
/*
@@ -771,8 +772,9 @@ die(SIGNAL_ARGS)
static void
FloatExceptionHandler(SIGNAL_ARGS)
{
- elog(WARN, "floating point exception! the last floating point operation eit\
-her exceeded legal ranges or was a divide by zero");
+ elog(WARN, "floating point exception!"
+ " The last floating point operation either exceeded legal ranges"
+ " or was a divide by zero");
}
@@ -1339,7 +1341,7 @@ PostgresMain(int argc, char *argv[])
if (IsUnderPostmaster == false)
{
puts("\nPOSTGRES backend interactive interface");
- puts("$Revision: 1.53 $ $Date: 1997/11/09 04:47:09 $");
+ puts("$Revision: 1.54 $ $Date: 1997/11/10 15:24:55 $");
}
/* ----------------
diff --git a/src/backend/tcop/variable.c b/src/backend/tcop/variable.c
index 26d4096828d..aaf504b2ac7 100644
--- a/src/backend/tcop/variable.c
+++ b/src/backend/tcop/variable.c
@@ -2,7 +2,7 @@
* Routines for handling of 'SET var TO',
* 'SHOW var' and 'RESET var' statements.
*
- * $Id: variable.c,v 1.19 1997/11/07 06:43:16 thomas Exp $
+ * $Id: variable.c,v 1.20 1997/11/10 15:24:56 thomas Exp $
*
*/
@@ -431,8 +431,13 @@ reset_date()
return TRUE;
}
+/* Timezone support
+ * Working storage for strings is allocated with an arbitrary size of 64 bytes.
+ */
+
static char *defaultTZ = NULL;
-static char TZvalue[10];
+static char TZvalue[64];
+static char tzbuf[64];
bool
parse_timezone(const char *value)
@@ -447,20 +452,30 @@ parse_timezone(const char *value)
while ((value = get_token(&tok, NULL, value)) != 0)
{
- if ((defaultTZ == NULL) && (getenv("TZ") != NULL))
+ /* Not yet tried to save original value from environment? */
+ if (defaultTZ == NULL)
{
- defaultTZ = getenv("TZ");
- if (defaultTZ == NULL)
+ /* found something? then save it for later */
+ if (getenv("TZ") != NULL)
{
- defaultTZ = (char *) -1;
+ defaultTZ = getenv("TZ");
+ if (defaultTZ == NULL)
+ defaultTZ = (char *) -1;
+ else
+ strcpy(TZvalue, defaultTZ);
}
+ /* found nothing so mark with an invalid pointer */
else
{
- strcpy(TZvalue, defaultTZ);
+ defaultTZ = (char *) -1;
}
}
- setenv("TZ", tok, TRUE);
+ strcpy(tzbuf, "TZ=");
+ strcat(tzbuf, tok);
+ if (putenv(tzbuf) != 0)
+ elog(WARN, "Unable to set TZ environment variable to %s", tok);
+
tzset();
PFREE(tok);
}
@@ -471,29 +486,39 @@ parse_timezone(const char *value)
bool
show_timezone()
{
- char buf[64];
char *tz;
tz = getenv("TZ");
- strcpy(buf, "Time zone is ");
- strcat(buf, ((tz != NULL)? tz: "unknown"));
-
- elog(NOTICE, buf, NULL);
+ elog(NOTICE, "Time zone is %s", ((tz != NULL)? tz: "unknown"));
return TRUE;
} /* show_timezone() */
+/* reset_timezone()
+ * Set TZ environment variable to original value.
+ * Note that if TZ was originally not set, TZ should be cleared.
+ * unsetenv() works fine, but is BSD, not POSIX, and is not available
+ * under Solaris, among others. Apparently putenv() called as below
+ * clears the process-specific environment variables.
+ * Other reasonable arguments to putenv() (e.g. "TZ=", "TZ", "") result
+ * in a core dump (under Linux anyway).
+ */
bool
reset_timezone()
{
if ((defaultTZ != NULL) && (defaultTZ != (char *) -1))
{
- setenv("TZ", TZvalue, TRUE);
+ strcpy(tzbuf, "TZ=");
+ strcat(tzbuf, TZvalue);
+ if (putenv(tzbuf) != 0)
+ elog(WARN, "Unable to set TZ environment variable to %s", TZvalue);
}
else
{
- unsetenv("TZ");
+ strcpy(tzbuf, "=");
+ if (putenv(tzbuf) != 0)
+ elog(WARN, "Unable to clear TZ environment variable", NULL);
}
tzset();