Commit b42e37bc authored by Thomas G. Lockhart's avatar Thomas G. Lockhart

Change quickdie elog notice to a single message.

Clean up FloatExceptionHandler elog message source code.
parent 25e950fc
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* *
* *
* IDENTIFICATION * 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 * NOTES
* this is the "main" module of the postgres backend and * this is the "main" module of the postgres backend and
...@@ -728,8 +728,9 @@ pg_eval_dest(char *query_string,/* string to execute */ ...@@ -728,8 +728,9 @@ pg_eval_dest(char *query_string,/* string to execute */
* handle_warn() is used to catch kill(getpid(),1) which * handle_warn() is used to catch kill(getpid(),1) which
* occurs when elog(WARN) is called. * occurs when elog(WARN) is called.
* *
* quickdie() occurs when signalled by the postmaster, some backend * quickdie() occurs when signalled by the postmaster.
* has bought the farm we need to stop what we're doing and exit. * Some backend has bought the farm,
* so we need to stop what we're doing and exit.
* *
* die() preforms an orderly cleanup via ExitPostgres() * die() preforms an orderly cleanup via ExitPostgres()
* -------------------------------- * --------------------------------
...@@ -744,12 +745,12 @@ handle_warn(SIGNAL_ARGS) ...@@ -744,12 +745,12 @@ handle_warn(SIGNAL_ARGS)
static void static void
quickdie(SIGNAL_ARGS) quickdie(SIGNAL_ARGS)
{ {
elog(NOTICE, "Message from PostgreSQL backend: The Postmaster has "); elog(NOTICE, "Message from PostgreSQL backend:"
elog(NOTICE, "informed me that some other backend died abnormally and "); "\n\tThe Postmaster has informed me that some other backend"
elog(NOTICE, "possibly corrupted shared memory. I have rolled back "); " died abnormally and possibly corrupted shared memory."
elog(NOTICE, "the current transaction and am going to terminate your "); "\n\tI have rolled back the current transaction and am"
elog(NOTICE, "database system connection and exit. Please reconnect to"); " going to terminate your database system connection and exit."
elog(NOTICE, "the database system and repeat your query."); "\n\tPlease reconnect to the database system and repeat your query.");
/* /*
...@@ -771,8 +772,9 @@ die(SIGNAL_ARGS) ...@@ -771,8 +772,9 @@ die(SIGNAL_ARGS)
static void static void
FloatExceptionHandler(SIGNAL_ARGS) FloatExceptionHandler(SIGNAL_ARGS)
{ {
elog(WARN, "floating point exception! the last floating point operation eit\ elog(WARN, "floating point exception!"
her exceeded legal ranges or was a divide by zero"); " The last floating point operation either exceeded legal ranges"
" or was a divide by zero");
} }
...@@ -1339,7 +1341,7 @@ PostgresMain(int argc, char *argv[]) ...@@ -1339,7 +1341,7 @@ PostgresMain(int argc, char *argv[])
if (IsUnderPostmaster == false) if (IsUnderPostmaster == false)
{ {
puts("\nPOSTGRES backend interactive interface"); 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 $");
} }
/* ---------------- /* ----------------
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Routines for handling of 'SET var TO', * Routines for handling of 'SET var TO',
* 'SHOW var' and 'RESET var' statements. * '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() ...@@ -431,8 +431,13 @@ reset_date()
return TRUE; return TRUE;
} }
/* Timezone support
* Working storage for strings is allocated with an arbitrary size of 64 bytes.
*/
static char *defaultTZ = NULL; static char *defaultTZ = NULL;
static char TZvalue[10]; static char TZvalue[64];
static char tzbuf[64];
bool bool
parse_timezone(const char *value) parse_timezone(const char *value)
...@@ -447,20 +452,30 @@ parse_timezone(const char *value) ...@@ -447,20 +452,30 @@ parse_timezone(const char *value)
while ((value = get_token(&tok, NULL, value)) != 0) 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)
{
/* found something? then save it for later */
if (getenv("TZ") != NULL)
{ {
defaultTZ = getenv("TZ"); defaultTZ = getenv("TZ");
if (defaultTZ == NULL) if (defaultTZ == NULL)
{
defaultTZ = (char *) -1; defaultTZ = (char *) -1;
else
strcpy(TZvalue, defaultTZ);
} }
/* found nothing so mark with an invalid pointer */
else 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(); tzset();
PFREE(tok); PFREE(tok);
} }
...@@ -471,29 +486,39 @@ parse_timezone(const char *value) ...@@ -471,29 +486,39 @@ parse_timezone(const char *value)
bool bool
show_timezone() show_timezone()
{ {
char buf[64];
char *tz; char *tz;
tz = getenv("TZ"); tz = getenv("TZ");
strcpy(buf, "Time zone is "); elog(NOTICE, "Time zone is %s", ((tz != NULL)? tz: "unknown"));
strcat(buf, ((tz != NULL)? tz: "unknown"));
elog(NOTICE, buf, NULL);
return TRUE; return TRUE;
} /* show_timezone() */ } /* 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 bool
reset_timezone() reset_timezone()
{ {
if ((defaultTZ != NULL) && (defaultTZ != (char *) -1)) 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 else
{ {
unsetenv("TZ"); strcpy(tzbuf, "=");
if (putenv(tzbuf) != 0)
elog(WARN, "Unable to clear TZ environment variable", NULL);
} }
tzset(); tzset();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment