The Hive's TimestampColumnVector has a bad design with millis from 1970 and nanos within the second. This is consistent with java.sql.Timestamp, but it causes the millis to overlap with the nanos.
ORC-306 changed the behavior from:
millis: xxxx000, nanos: 123456789
millis: xxxx123, nanos: 123456789
that means that addition of the millis & nanos doubles the contribution of the millis.
SPARK-27594 spark.sql.orc.enableVectorizedReader causes milliseconds in Timestamp to be read incorrectly
- is caused by
ORC-306 Fix incorrect workaround for bug in java.sql.Timestamp
- links to