Hi,
>From the code encoding TIMESTAMP:
final long secs = vec.time[i + offset] / MILLIS_PER_SECOND;
> final int newNanos = vec.nanos[i + offset];
So for 1969-12-31 23:59:59.500, it will be:
secs = 0 (-500 / 1000)
newNanos = 500_000_000 (500ms)
Thus when the time is reading back, it will be 1970-01-01 00:00:00.500
right?
For timestamp earlier than 1969-12-31 23:59:59, since secs will be
negative, decoder will subtracted the result by 1 second. However, for
timestamp within 1969-12-31 23:59:59 and 1970-01-01 00:00:00, it looks like
the data will be read back as a timestamp 1 second later?
Thank you !
(The encoding is https://github.com/apache/orc/blob/
5b5c0d5bb14469ddf8e399b4ed879cc1cca9bec6/java/core/src/java/
org/apache/orc/impl/writer/TimestampTreeWriter.java#L127-L128 )
Best,
Wenlei
--
Best Regards,