[ 
https://issues.apache.org/jira/browse/ORC-306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16378902#comment-16378902
 ] 

ASF GitHub Bot commented on ORC-306:
------------------------------------

Github user omalley commented on the issue:

    https://github.com/apache/orc/pull/220
  
    So the fix detects whether the Timestamp class has the bug or not and then 
either compensates or doesn't. It also ensures that the 
TimestampColumnVector.time values are set correctly with the milliseconds on 
the bottom.
    
    The test does more now. First of all, instead of going from 56.1000 to 
56.1999 seconds incrementing by 0.0001, which doesn't reveal the bug, it goes 
from 56.0000 to 56.1999 seconds incrementing by 0.0002. It also checks the 
values from the TimestampColumnVector rather than comparing using Timestamp.


> Fix incorrect workaround for bug in java.sql.Timestamp
> ------------------------------------------------------
>
>                 Key: ORC-306
>                 URL: https://issues.apache.org/jira/browse/ORC-306
>             Project: ORC
>          Issue Type: Test
>            Reporter: Owen O'Malley
>            Assignee: Owen O'Malley
>            Priority: Major
>
> There is a bug in java.sql.Timestamp where if the timestamp is of the form 
> "YYYY-MM-DD HH:MM:SS.000XXX" and year is before 1970, the resulting time is 
> off by one second. Unfortunately, the ORC reader was unintentionally 
> triggering this case for all timestamps before 1970 and thus included 
> compensating code to correct the problem.
> Unfortunately, the workaround means that the user get incorrect results if 
> they don't use Timestamp to interpret the results.*1900-05-05 12:34:56.1* is 
> stored in TimestampColumnVector as -2198201103900 millis and 100000000 nanos. 
> The ORC reader incorrectly restores that as -2198201103000 and 100000000 
> (notice the missing 900 millis), then adjusts the millis to -2198201102000. 
> Since the last three digits of the millis are 0 that triggers the Timestamp 
> bug and becomes the matching *1900-05-05 12:34:56.1*. 
> So basically, ORC added a bug to compensate for Java's bug.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to