summaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/datetime.c
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:01 -0400
commit9cfe353c51a8c077802c9d3ef5b4e2eb493bf46c (patch)
treed67a7b1fe4cef1ab77ae075660ee62d0f05bf81a /src/backend/utils/adt/datetime.c
parent5508d0c0b21d4ecb27dcf54ccfe6e35b697f1e8c (diff)
downloadpostgresql-9cfe353c51a8c077802c9d3ef5b4e2eb493bf46c.tar.gz
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/backend/utils/adt/datetime.c')
-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 395e340196..2559cd9a44 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 */