Skip to content

ORC-2222: [C++] Support Java fixed-offset timezone IDs - #2716

Open
ffacs wants to merge 1 commit into
apache:mainfrom
ffacs:fix-java-fixed-offset-timezone
Open

ffacs wants to merge 1 commit into
apache:mainfrom
ffacs:fix-java-fixed-offset-timezone

Conversation

@ffacs

@ffacs ffacs commented Sep 29, 2026

Copy link
Copy Markdown
Contributor

What changes were proposed in this pull request?

Add support for Java fixed-offset timezone IDs (GMT±HH:MM and GMT±HH:MM:SS) in the C++ timezone resolver, using cached fixed-offset timezones without requiring TZDB files.

Why are the changes needed?

The Java writer can record IDs such as GMT-00:00 or GMT+05:30 in the stripe’s writerTimezone. The C++ reader treats these IDs as timezone database filenames and fails when reading
timestamp columns because the corresponding files do not exist.

This change allows the C++ reader to resolve these offsets and read the timestamps correctly.

Fixes ORC-2222 and #2715.

How was this patch tested?

Added tests covering:

• Positive and negative offsets, signed zero, minute and second precision, and invalid formats.
• Epoch calculation, time conversion, caching, and operation without TZDB files.
• Reading Java-written ORC files with four fixed-offset timezones, including pre-1970 timestamps and nanosecond precision.

Rebuilt C++ and ran make -C build test-out: all 763 core tests and 87 tool tests passed. Also verified that the original file attached to #2715 reads successfully.

Was this patch authored or co-authored using generative AI tooling?

Generated-by: OpenAI Codex (GPT-6)

Parse normalized GMT offsets, including seconds, without requiring TZDB files. Add boundary checks and regression coverage using Java-written ORC files.

Fixes apache#2715

This branch has not been deployed

No deployments
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.

1 participant