You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Gopal V (JIRA)" <ji...@apache.org> on 2013/06/07 02:08:20 UTC

[jira] [Created] (HIVE-4681) Fix ORC TimestampTreeReader.nextVector() to handle milli-nano math corectly

Gopal V created HIVE-4681:
-----------------------------

             Summary: Fix ORC TimestampTreeReader.nextVector() to handle milli-nano math corectly
                 Key: HIVE-4681
                 URL: https://issues.apache.org/jira/browse/HIVE-4681
             Project: Hive
          Issue Type: Sub-task
            Reporter: Gopal V
            Assignee: Gopal V
         Attachments: HIVE-4160-001.patch

The current TimestampTreeReader implementation is broken when fed only milliseconds.

If TS = 222ms.

{code}
   result.vector[i] = ... // == 0;
   nanoVector.vector[i] = ... // == 222000000
   if (result.vector[i] >= 0) {
     result.vector[i] += nanoVector.vector[i] / 1000000; // 222
   }
...
   result.vector[i] = (result.vector[i] * 1000000)
                + nanoVector.vector[i];
   // result.vector[i] == 444000000
{code}

which is broken.

This is not a problem in the Timestamp case, because 

{code}
ts.setTime(222);        // {time=0; nanos=222000000}
ts.setNanos(222000000); // {time=0; nanos=222000000}
{code}

Since that is not additive, the error does not occur in the regular ORC reader.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira