aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-10-19 18:11:49 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2016-10-19 18:12:05 -0400
commit63a4bc45ea515346a3b4e68b86e7eabf8c638cfe (patch)
tree009a88938952fd3a0da55543ea2c5728983f6285
parent9727dac58e81d198ec115af594735f1f01c55f00 (diff)
downloadpostgresql-63a4bc45ea515346a3b4e68b86e7eabf8c638cfe.tar.gz
postgresql-63a4bc45ea515346a3b4e68b86e7eabf8c638cfe.zip
Suppress "Factory" zone in pg_timezone_names view for tzdata >= 2016g.
IANA got rid of the really silly "abbreviation" and replaced it with one that's only moderately silly. But it's still pointless, so keep on not showing it.
-rw-r--r--src/backend/utils/adt/datetime.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 422e71143a9..1879ec64e3b 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -4823,8 +4823,17 @@ pg_timezone_names(PG_FUNCTION_ARGS)
&tzoff, &tm, &fsec, &tzn, tz) != 0)
continue; /* ignore if conversion fails */
- /* Ignore zic's rather silly "Factory" time zone */
- if (tzn && strcmp(tzn, "Local time zone must be set--see zic manual page") == 0)
+ /*
+ * Ignore zic's rather silly "Factory" time zone. The long string
+ * about "see zic manual page" is used in tzdata versions before
+ * 2016g; we can drop it someday when we're pretty sure no such data
+ * exists in the wild on platforms using --with-system-tzdata. In
+ * 2016g and later, the time zone abbreviation "-00" is used for
+ * "Factory" as well as some invalid cases, all of which we can
+ * reasonably omit from the pg_timezone_names view.
+ */
+ if (tzn && (strcmp(tzn, "-00") == 0 ||
+ strcmp(tzn, "Local time zone must be set--see zic manual page") == 0))
continue;
/* Found a displayable zone */