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]

Reply via email to