]> granicus.if.org Git - postgresql/commitdiff
Suppress "Factory" zone in pg_timezone_names view for tzdata >= 2016g.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 19 Oct 2016 22:11:49 +0000 (18:11 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 19 Oct 2016 22:11:49 +0000 (18:11 -0400)
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.

src/backend/utils/adt/datetime.c

index 45ba7cd906396e8ff485d2c255ca6163c8f0f815..6d7fdc3c5e4f5f1744c73c79e6a3b12b57c88683 100644 (file)
@@ -4957,8 +4957,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 */