From c82e833e836ab5e9d9934d4a28382c41f857ba8d Mon Sep 17 00:00:00 2001 From: n0r0shi <253434427+n0r0shi@users.noreply.github.com> Date: Thu, 12 Feb 2026 09:27:40 +0000 Subject: [PATCH] feat: Add America/Coyhaique timezone support Add America/Coyhaique (timezone ID 2234) to the timezone database and timezone names, following the Presto zone-index convention. Also fix the namespace in gen_timezone_database.py (util -> tz) to match the current codebase. America/Coyhaique was added to the IANA timezone database in tzdata 2025b. The upstream Presto PR (prestodb/presto#26981) has been merged. Fixes #16216 --- velox/type/tz/TimeZoneDatabase.cpp | 1 + velox/type/tz/TimeZoneNames.cpp | 5 +++++ velox/type/tz/gen_timezone_database.py | 4 ++-- velox/type/tz/tests/TimeZoneMapTest.cpp | 3 +++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/velox/type/tz/TimeZoneDatabase.cpp b/velox/type/tz/TimeZoneDatabase.cpp index 8a6b47cb1e2..fe93290dedb 100644 --- a/velox/type/tz/TimeZoneDatabase.cpp +++ b/velox/type/tz/TimeZoneDatabase.cpp @@ -2265,6 +2265,7 @@ const std::vector>& getTimeZoneEntries() { {2231, "Pacific/Kanton"}, {2232, "Europe/Kyiv"}, {2233, "America/Ciudad_Juarez"}, + {2234, "America/Coyhaique"}, }; }()); return *tzDB; diff --git a/velox/type/tz/TimeZoneNames.cpp b/velox/type/tz/TimeZoneNames.cpp index af382772661..4a7dc711ec1 100644 --- a/velox/type/tz/TimeZoneNames.cpp +++ b/velox/type/tz/TimeZoneNames.cpp @@ -1155,6 +1155,11 @@ const std::unordered_map& getTimeZoneNames() { {"Greenwich Mean Time", "GMT", "Greenwich Mean Time", "GMT"}}, {"America/Costa_Rica", {"Central Standard Time", "CST", "Central Daylight Time", "CDT"}}, + {"America/Coyhaique", + {"Coyhaique Standard Time", + "GMT-03:00", + "Coyhaique Daylight Time", + "GMT-03:00"}}, {"America/Grand_Turk", {"Eastern Standard Time", "EST", "Eastern Daylight Time", "EDT"}}, {"America/Guadeloupe", diff --git a/velox/type/tz/gen_timezone_database.py b/velox/type/tz/gen_timezone_database.py index 68d53ef1ad9..8b45954b9c5 100755 --- a/velox/type/tz/gen_timezone_database.py +++ b/velox/type/tz/gen_timezone_database.py @@ -50,7 +50,7 @@ #include #include -namespace facebook::velox::util { +namespace facebook::velox::tz { const std::vector>& getTimeZoneEntries() { static auto* tzDB = new std::vector>([] { @@ -64,7 +64,7 @@ return *tzDB; } -} // namespace facebook::velox::util\ +} // namespace facebook::velox::tz\ """ ) diff --git a/velox/type/tz/tests/TimeZoneMapTest.cpp b/velox/type/tz/tests/TimeZoneMapTest.cpp index 52bdbf44f27..441bd366aad 100644 --- a/velox/type/tz/tests/TimeZoneMapTest.cpp +++ b/velox/type/tz/tests/TimeZoneMapTest.cpp @@ -44,6 +44,7 @@ TEST(TimeZoneMapTest, locateZoneID) { EXPECT_EQ(2141, locateZoneID("Pacific/Marquesas")); EXPECT_EQ(2215, locateZoneID("Asia/Chita")); EXPECT_EQ(2233, locateZoneID("America/Ciudad_Juarez")); + EXPECT_EQ(2234, locateZoneID("America/Coyhaique")); } TEST(TimeZoneMapTest, locateZoneUTCAlias) { @@ -165,6 +166,7 @@ TEST(TimeZoneMapTest, getTimeZoneName) { EXPECT_EQ("Pacific/Kanton", getTimeZoneName(2231)); EXPECT_EQ("Europe/Kyiv", getTimeZoneName(2232)); EXPECT_EQ("America/Ciudad_Juarez", getTimeZoneName(2233)); + EXPECT_EQ("America/Coyhaique", getTimeZoneName(2234)); EXPECT_EQ("-00:01", getTimeZoneName(840)); EXPECT_EQ("UTC", getTimeZoneName(0)); } @@ -175,6 +177,7 @@ TEST(TimeZoneMapTest, getTimeZoneID) { EXPECT_EQ(2231, getTimeZoneID("Pacific/Kanton")); EXPECT_EQ(2232, getTimeZoneID("Europe/Kyiv")); EXPECT_EQ(2233, getTimeZoneID("America/Ciudad_Juarez")); + EXPECT_EQ(2234, getTimeZoneID("America/Coyhaique")); EXPECT_EQ(0, getTimeZoneID("UTC")); EXPECT_EQ(0, getTimeZoneID("GMT")); EXPECT_EQ(0, getTimeZoneID("Z"));