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,

Reply via email to