Skip to content

Conversation

@rdtr
Copy link

@rdtr rdtr commented Jan 17, 2026

  • Update Joda-Time from 2.13.1 to 2.14.0 (includes tzdata 2025b)
  • Add America/Coyhaique timezone (new zone for Chile's Aysén Region)
  • Update zone-index.properties checksum in test
  • Update JDK version to 17.0.16 in CI config based on https://bugs.openjdk.org/browse/JDK-8352716

This is a replacement for #26856. The CI was having persistent issues running tests on the original PR even after several rebases, so I am opening a fresh PR.

Description

This PR updates the timezone data to 2025b by upgrading Joda-Time from 2.13.1 to 2.14.0. The update adds the new America/Coyhaique timezone (zone key 2234), which was introduced for Chile's Aysén Region. The zone-index.properties checksum in TestTimeZoneKey has been updated to reflect the new zone entry.

Motivation and Context

Timezone databases are periodically updated to reflect changes in timezone rules around the world. The tzdata 2025b release includes the new America/Coyhaique zone for Chile's Aysén Region. Keeping Presto's timezone data current ensures accurate timestamp handling for users in affected regions.

Impact

  • No breaking changes to public APIs
  • Users can now use America/Coyhaique as a valid timezone identifier
  • Existing timezone functionality remains unchanged

Test Plan

  • Existing TestTimeZoneKey tests verify the zone-index.properties integrity via checksum validation
  • The checksum has been updated to account for the new timezone entry

Contributor checklist

  • Please make sure your submission complies with our contributing guide, in particular code style and commit standards.
  • PR description addresses the issue accurately and concisely. If the change is non-trivial, a GitHub Issue is referenced.
  • Documented new properties (with its default value), SQL syntax, functions, or other functionality.
  • If release notes are required, they follow the release notes guidelines.
  • Adequate tests were added if applicable.
  • CI passed.
  • If adding new dependencies, verified they have an OpenSSF Scorecard score of 5.0 or higher (or obtained explicit TSC approval for lower scores).

Release Notes

Please follow release notes guidelines and fill in the release notes below.

== RELEASE NOTES ==

  General Changes
  * Update timezone data to 2025b by upgrading to Joda-Time 2.14.0.
  * Add support for America/Coyhaique timezone (Chile's Aysén Region).

@rdtr rdtr requested review from a team, czentgr, elharo and unidevel as code owners January 17, 2026 10:06
@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Jan 17, 2026

Reviewer's Guide

Updates Presto’s timezone data to tzdata 2025b by bumping Joda-Time and adding the America/Coyhaique zone, adjusts the checksum-based regression test for zone-index, and refreshes all GitHub Actions workflows to use Temurin JDK 17.0.16 due to an upstream JDK issue.

Sequence diagram for timezone resolution with updated tzdata_2025b

sequenceDiagram
  actor User
  participant PrestoClient
  participant PrestoCoordinator
  participant TimeZoneKey
  participant JodaTimeTimeZoneData

  User->>PrestoClient: Submit query (timestamp, America/Coyhaique)
  PrestoClient->>PrestoCoordinator: Send query
  PrestoCoordinator->>TimeZoneKey: lookupTimeZoneKey(America/Coyhaique)
  TimeZoneKey->>JodaTimeTimeZoneData: resolveZoneId(America/Coyhaique)
  JodaTimeTimeZoneData-->>TimeZoneKey: zoneId(2234, tzdata 2025b rules)
  TimeZoneKey-->>PrestoCoordinator: TimeZoneKey(2234)
  PrestoCoordinator->>PrestoCoordinator: Evaluate expressions with timezone
  PrestoCoordinator-->>PrestoClient: Query results
  PrestoClient-->>User: Display timestamps in America/Coyhaique
Loading

File-Level Changes

Change Details Files
Upgrade Joda-Time to 2.14.0 to pick up tzdata 2025b and keep timezone rules in sync with deployed JVMs.
  • Update the dep.joda.version Maven property from 2.13.1 to 2.14.0.
  • Maintain the comment warning that Joda version must match JVM tzdata to signal coupling to reviewers.
pom.xml
Add the new America/Coyhaique timezone key and keep the zone-index regression test aligned via checksum.
  • Append zone key 2234 mapped to America/Coyhaique at the end of zone-index.properties.
  • Recompute and update the expected hash in TestTimeZoneKey to match the new zone-index contents while keeping the integrity check logic unchanged.
presto-common/src/main/resources/com/facebook/presto/common/type/zone-index.properties
presto-common/src/test/java/com/facebook/presto/common/type/TestTimeZoneKey.java
Update CI workflows to run on Temurin JDK 17.0.16 in response to upstream JDK issues.
  • Bump java-version from 17.0.15 to 17.0.16 across all GitHub Actions workflows that set up Java.
  • Keep all other workflow configuration (matrices, steps, caching) unchanged to minimize CI behavior drift.
.github/workflows/prestocpp-linux-build-and-unit-test.yml
.github/workflows/arrow-flight-tests.yml
.github/workflows/hive-tests.yml
.github/workflows/product-tests-specific-environment.yml
.github/workflows/docs.yml
.github/workflows/jdbc-connector-tests.yml
.github/workflows/kudu.yml
.github/workflows/maven-checks.yml
.github/workflows/product-tests-basic-environment.yml
.github/workflows/singlestore-tests.yml
.github/workflows/spark-integration.yml
.github/workflows/test-other-modules.yml
.github/workflows/tests.yml

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 1 issue, and left some high level feedback:

  • Given how many workflows hardcode the Java patch version, consider centralizing the Java version (e.g., via a shared reusable workflow, workflow-level env, or matrix variable) so future patch bumps only need to be changed in one place.
  • The zone-index.properties and associated checksum assertion are guarded by a strong "should not (normally) be changed" comment; it might be helpful to update that comment (or add a short note nearby) to explicitly call out the Joda/tzdata upgrade procedure, including updating zone-index.properties and the expected hash.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- Given how many workflows hardcode the Java patch version, consider centralizing the Java version (e.g., via a shared reusable workflow, workflow-level env, or matrix variable) so future patch bumps only need to be changed in one place.
- The `zone-index.properties` and associated checksum assertion are guarded by a strong "should not (normally) be changed" comment; it might be helpful to update that comment (or add a short note nearby) to explicitly call out the Joda/tzdata upgrade procedure, including updating `zone-index.properties` and the expected hash.

## Individual Comments

### Comment 1
<location> `presto-common/src/test/java/com/facebook/presto/common/type/TestTimeZoneKey.java:218-219` </location>
<code_context>
             hasher.putString(timeZoneKey.getId(), StandardCharsets.UTF_8);
         }
         // Zone file should not (normally) be changed, so let's make this more difficult
-        assertEquals(hasher.hash().asLong(), 4825838578917475630L, "zone-index.properties file contents changed!");
+        assertEquals(hasher.hash().asLong(), 3765670086753811806L, "zone-index.properties file contents changed!");
</code_context>

<issue_to_address>
**suggestion (testing):** Consider making the checksum assertion failure more actionable for future tzdata updates

Since tzdata updates like this are expected periodically, this assertion may fail without clearly telling the updater what to do. Consider either:

- Expanding the assertion message to note that the expected checksum should be updated after tzdata/Joda-Time changes, or
- Adding a brief comment on how to recompute the checksum (algorithm or helper method), so future maintainers don’t have to rediscover the process.

```suggestion
        // Zone file should not (normally) be changed, so let's make this more difficult.
        // If this assertion fails after an intentional tzdata/Joda-Time update that changes
        // zone-index.properties, recompute the expected checksum by running this test and
        // updating the constant below with the new value from hasher.hash().asLong().
        assertEquals(
                hasher.hash().asLong(),
                3765670086753811806L,
                "zone-index.properties file contents changed. If this is due to an intentional tzdata/Joda-Time or zone-index.properties update, update the expected checksum to match hasher.hash().asLong().");
```
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment on lines 218 to +219
// Zone file should not (normally) be changed, so let's make this more difficult
assertEquals(hasher.hash().asLong(), 4825838578917475630L, "zone-index.properties file contents changed!");
assertEquals(hasher.hash().asLong(), 3765670086753811806L, "zone-index.properties file contents changed!");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (testing): Consider making the checksum assertion failure more actionable for future tzdata updates

Since tzdata updates like this are expected periodically, this assertion may fail without clearly telling the updater what to do. Consider either:

  • Expanding the assertion message to note that the expected checksum should be updated after tzdata/Joda-Time changes, or
  • Adding a brief comment on how to recompute the checksum (algorithm or helper method), so future maintainers don’t have to rediscover the process.
Suggested change
// Zone file should not (normally) be changed, so let's make this more difficult
assertEquals(hasher.hash().asLong(), 4825838578917475630L, "zone-index.properties file contents changed!");
assertEquals(hasher.hash().asLong(), 3765670086753811806L, "zone-index.properties file contents changed!");
// Zone file should not (normally) be changed, so let's make this more difficult.
// If this assertion fails after an intentional tzdata/Joda-Time update that changes
// zone-index.properties, recompute the expected checksum by running this test and
// updating the constant below with the new value from hasher.hash().asLong().
assertEquals(
hasher.hash().asLong(),
3765670086753811806L,
"zone-index.properties file contents changed. If this is due to an intentional tzdata/Joda-Time or zone-index.properties update, update the expected checksum to match hasher.hash().asLong().");

@rdtr rdtr force-pushed the update-tzdata-2025b-v2 branch from 7a0e228 to 19d5d9f Compare January 18, 2026 01:51
@unidevel
Copy link
Contributor

@rdtr Seems some CI not running, can you rebase to try gain?

@rdtr rdtr force-pushed the update-tzdata-2025b-v2 branch from 19d5d9f to 3816cb8 Compare January 20, 2026 08:20
@rdtr
Copy link
Author

rdtr commented Jan 20, 2026

@unidevel Hmm I opened this because I encountered the similar issue in #26856
Is this a known issue or is it possible that actually my change affects a unit test?

Anyway, I have pushed again.

@unidevel
Copy link
Contributor

@rdtr I guess this is a bug of github, since you upgraded JDK to 17.0.16, you probably can continue working on the original PR, and ignore the pending tests related to 17.0.15. Once reviewed and approved, you may ask admin like @tdcmeehan to merge this without full CI passed.

@tdcmeehan
Copy link
Contributor

I'm actually a little worried this isn't transient, since it's happened for two PRs in a row. @rdtr can you try to quickly revert to 15 to see if the CI passes? If so, it would seem to be specific to the version upgrade.

@linux-foundation-easycla
Copy link

linux-foundation-easycla bot commented Jan 22, 2026

CLA Signed

The committers listed above are authorized under a signed CLA.

@rdtr rdtr force-pushed the update-tzdata-2025b-v2 branch 2 times, most recently from eff8774 to 54f7367 Compare January 22, 2026 06:23
@rdtr
Copy link
Author

rdtr commented Jan 22, 2026

@tdcmeehan
I pushed again while reverting JDK version upgrade part, still some failures are there which doesn't look like relevant to my change. Please let me know how we can proceed.

@tdcmeehan
Copy link
Contributor

@rdtr could you try to restore the JDK changes, but try a different distribution, to see if it's localized to the distribution?

@rdtr rdtr force-pushed the update-tzdata-2025b-v2 branch 2 times, most recently from 7a44386 to 593c0d7 Compare January 27, 2026 03:57
rdtr and others added 2 commits January 28, 2026 19:39
- Update Joda-Time from 2.13.1 to 2.14.0 (includes tzdata 2025b)
- Add America/Coyhaique timezone (new zone for Chile's Aysén Region)
- Update zone-index.properties checksum in test
@rdtr rdtr force-pushed the update-tzdata-2025b-v2 branch 3 times, most recently from 8b0751b to 1e0810d Compare January 29, 2026 10:14
@rdtr rdtr force-pushed the update-tzdata-2025b-v2 branch from 1e0810d to 399cddf Compare January 29, 2026 10:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants