Github user majetideepak commented on the issue:
https://github.com/apache/orc/pull/233
@wgtmac and @stiga-huang you are right that the C++ and Java writers must
write the same value to a file for a given input timestamp value. Looks like
the Java side writes the timestamp values provided as is in local time (no
conversion) and writes the writer timezone in the footer (however, stats are in
UTC). We must do the same for the C++ writer as well if not already.
ORC-10 adds GMT offset when reading the values back. Therefore, the C++
reader always returns values in UTC. The current behavior of ORC reader for
timestamp values is the same as SQL `TimestampTz`.
To get the same values back ( aka SQL `Timestamp`), you need to convert the
values read back to local time.
If you read a timestamp column from an ORC file and plan to write it
immediately, you must first convert the values to the local time before writing.
---