aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas G. Lockhart <lockhart@fourpalms.org>1997-10-30 16:52:11 +0000
committerThomas G. Lockhart <lockhart@fourpalms.org>1997-10-30 16:52:11 +0000
commitbe74113f7626faf233c72a3458121d59d0e2a9d4 (patch)
treeb715c7f6b7a2173cfeb491edf18d45f2a42d0491 /src
parent0dd738148cd43d41f6dd8456eabc073ffaffbd3b (diff)
downloadpostgresql-be74113f7626faf233c72a3458121d59d0e2a9d4.tar.gz
postgresql-be74113f7626faf233c72a3458121d59d0e2a9d4.zip
Add initial backend support for SET/SHOW/RESET TIME ZONE.
Uses TZ environment variable. Needs additional schemes for brain-dead SQL92 time offsets.
Diffstat (limited to 'src')
-rw-r--r--src/backend/tcop/variable.c50
1 files changed, 46 insertions, 4 deletions
diff --git a/src/backend/tcop/variable.c b/src/backend/tcop/variable.c
index 260fdd6eb5a..dc6300a8118 100644
--- a/src/backend/tcop/variable.c
+++ b/src/backend/tcop/variable.c
@@ -1,8 +1,8 @@
/*
- * Routines for handling of 'SET var TO', 'SHOW var' and 'RESET var'
- * statements.
+ * Routines for handling of 'SET var TO',
+ * 'SHOW var' and 'RESET var' statements.
*
- * $Id: variable.c,v 1.17 1997/10/25 01:10:22 momjian Exp $
+ * $Id: variable.c,v 1.18 1997/10/30 16:52:11 thomas Exp $
*
*/
@@ -136,6 +136,7 @@ get_token(char **tok, char **val, const char *str)
}
/*-----------------------------------------------------------------------*/
+#if FALSE
static bool
parse_null(const char *value)
{
@@ -153,6 +154,7 @@ reset_null(const char *value)
{
return TRUE;
}
+#endif
static bool
parse_geqo(const char *value)
@@ -398,6 +400,46 @@ reset_date()
return TRUE;
}
+static bool
+parse_timezone(const char *value)
+{
+ char *tok;
+
+ while ((value = get_token(&tok, NULL, value)) != 0)
+ {
+ setenv("TZ", tok, TRUE);
+ tzset();
+ PFREE(tok);
+ }
+
+ return TRUE;
+} /* parse_timezone() */
+
+static 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);
+
+ return TRUE;
+} /* show_timezone() */
+
+static bool
+reset_timezone()
+{
+ unsetenv("TZ");
+ tzset();
+
+ return TRUE;
+} /* reset_timezone() */
+
/*-----------------------------------------------------------------------*/
struct VariableParsers
{
@@ -412,7 +454,7 @@ struct VariableParsers
"datestyle", parse_date, show_date, reset_date
},
{
- "timezone", parse_null, show_null, reset_null
+ "timezone", parse_timezone, show_timezone, reset_timezone
},
{
"cost_heap", parse_cost_heap,