aboutsummaryrefslogtreecommitdiff
path: root/src
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 /src
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.
Diffstat (limited to 'src')
-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 */