thisisnic commented on issue #21471: URL: https://github.com/apache/arrow/issues/21471#issuecomment-5869752617
I did a deep dive on this with Claude Code to work out what's still outstanding here. Two things are going on and only one of them is still a bug in Arrow. The abort (`terminate called after throwing an instance of 'orc::TimezoneError'`) was fixed in Arrow 19.0.0 by #45051 (GH-40633). Since then reading such a file raises `ArrowException: Time zone file /usr/share/zoneinfo/GMT-00:00 does not exist` instead of crashing the process. I confirmed this with a reprex (an ORC file written with pyorc with writer timezone `GMT-00:00`) against pyarrow 15.0.2 and 18.1.0 (both abort) and 19.0.1 and 25.0.1 (both raise). The underlying cause is that Hive wrote the JVM's default timezone ID, and Java produces custom fixed-offset IDs like `GMT-00:00` or `GMT+00:00` when the JVM's zone is a fixed offset. The Java ORC reader resolves these through `java.util.TimeZone`, but ORC C++ resolves a writer timezone by opening `$TZDIR/<name>` as a file, so these names can never be found. Nothing in apache/orc up to v2.2.1 handles them; ORC-2011 only added aliases for legacy `US/*` names. Parsing `GMT±hh:mm` as a fixed offset belongs in `getTimezoneByName` in ORC C++, so I'd suggest we track the remaining part in an apache/orc issue. Until then the workaround from the original report (a symlink in `$TZDIR`, or pointing `TZDIR` at a copy of the zoneinfo tree with the extra names) still works. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
