Repository: orc
Updated Branches:
  refs/heads/master 896dffc3e -> 831b2eca7


ORC-346. Add one second when writing negative Timestamp's with non zero nanos 
to match the reader code.

Fixes #253

Signed-off-by: Owen O'Malley <omal...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/orc/repo
Commit: http://git-wip-us.apache.org/repos/asf/orc/commit/831b2eca
Tree: http://git-wip-us.apache.org/repos/asf/orc/tree/831b2eca
Diff: http://git-wip-us.apache.org/repos/asf/orc/diff/831b2eca

Branch: refs/heads/master
Commit: 831b2eca724f53be334dfccfeb1ebca4949c5621
Parents: 896dffc
Author: rip-nsk <rip....@gmail.com>
Authored: Thu Apr 19 12:22:09 2018 -0700
Committer: Owen O'Malley <omal...@apache.org>
Committed: Fri Apr 27 15:12:16 2018 -0700

----------------------------------------------------------------------
 c++/src/ColumnWriter.cc | 4 ++++
 c++/test/TestWriter.cc  | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/orc/blob/831b2eca/c++/src/ColumnWriter.cc
----------------------------------------------------------------------
diff --git a/c++/src/ColumnWriter.cc b/c++/src/ColumnWriter.cc
index 91e6713..8b82783 100644
--- a/c++/src/ColumnWriter.cc
+++ b/c++/src/ColumnWriter.cc
@@ -1199,6 +1199,10 @@ namespace orc {
         tsStats->increase(1);
         tsStats->update(millsUTC);
 
+        if (secs[i] < 0 && nanos[i] != 0) {
+          secs[i] += 1;
+        }
+
         secs[i] -= timezone.getEpoch();
         nanos[i] = formatNano(nanos[i]);
       } else if (!hasNull) {

http://git-wip-us.apache.org/repos/asf/orc/blob/831b2eca/c++/test/TestWriter.cc
----------------------------------------------------------------------
diff --git a/c++/test/TestWriter.cc b/c++/test/TestWriter.cc
index 636ad6b..627c9c4 100644
--- a/c++/test/TestWriter.cc
+++ b/c++/test/TestWriter.cc
@@ -570,8 +570,8 @@ namespace orc {
 
     std::vector<std::time_t> times(rowCount);
     for (uint64_t i = 0; i < rowCount; ++i) {
-      time_t currTime = std::time(nullptr);
-      times[i] = static_cast<int64_t>(currTime) - static_cast<int64_t >(i * 
60);
+      time_t currTime = -14210715; // 1969-07-20 12:34:45
+      times[i] = static_cast<int64_t>(currTime) + static_cast<int64_t >(i * 
3660);
       tsBatch->data[i] = times[i];
       tsBatch->nanoseconds[i] = static_cast<int64_t>(i * 1000);
     }

Reply via email to