You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@orc.apache.org by om...@apache.org on 2017/01/04 17:09:59 UTC

orc git commit: ORC-125. Fix deserialization of WriterVersion so that future versions don't cause runtime errors. (omalley)

Repository: orc
Updated Branches:
  refs/heads/master e1498f255 -> 42287c509


ORC-125. Fix deserialization of WriterVersion so that future versions don't cause
runtime errors. (omalley)

Fixes #75

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


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

Branch: refs/heads/master
Commit: 42287c5098846c037d4b08890a5edd7aa1a5ebbe
Parents: e1498f2
Author: Owen O'Malley <om...@apache.org>
Authored: Tue Jan 3 09:09:05 2017 -0800
Committer: Owen O'Malley <om...@apache.org>
Committed: Wed Jan 4 09:09:21 2017 -0800

----------------------------------------------------------------------
 java/core/src/java/org/apache/orc/OrcFile.java        | 14 +++++++++++++-
 .../src/test/org/apache/orc/TestVectorOrcFile.java    |  7 +++++++
 2 files changed, 20 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/orc/blob/42287c50/java/core/src/java/org/apache/orc/OrcFile.java
----------------------------------------------------------------------
diff --git a/java/core/src/java/org/apache/orc/OrcFile.java b/java/core/src/java/org/apache/orc/OrcFile.java
index 6b2d48e..7551c2e 100644
--- a/java/core/src/java/org/apache/orc/OrcFile.java
+++ b/java/core/src/java/org/apache/orc/OrcFile.java
@@ -141,8 +141,16 @@ public class OrcFile {
       }
     }
 
+    /**
+     * Convert the integer from OrcProto.PostScript.writerVersion
+     * to the enumeration with unknown versions being mapped to FUTURE.
+     * @param val the serialized writer version
+     * @return the corresponding enumeration value
+     */
     public static WriterVersion from(int val) {
-      if (val == FUTURE.id) return FUTURE; // Special handling for the magic value.
+      if (val >= values.length) {
+        return FUTURE;
+      }
       return values[val];
     }
 
@@ -150,6 +158,10 @@ public class OrcFile {
       return id >= other.id;
     }
   }
+
+  /**
+   * The WriterVersion for this version of the software.
+   */
   public static final WriterVersion CURRENT_WRITER = WriterVersion.ORC_101;
 
   public enum EncodingStrategy {

http://git-wip-us.apache.org/repos/asf/orc/blob/42287c50/java/core/src/test/org/apache/orc/TestVectorOrcFile.java
----------------------------------------------------------------------
diff --git a/java/core/src/test/org/apache/orc/TestVectorOrcFile.java b/java/core/src/test/org/apache/orc/TestVectorOrcFile.java
index 5ef0ced..af31b4d 100644
--- a/java/core/src/test/org/apache/orc/TestVectorOrcFile.java
+++ b/java/core/src/test/org/apache/orc/TestVectorOrcFile.java
@@ -2923,4 +2923,11 @@ public class TestVectorOrcFile {
     assertFalse(rows.nextBatch(batch));
     rows.close();
   }
+
+  @Test
+  public void testWriterVersion() throws Exception {
+    assertEquals(OrcFile.WriterVersion.FUTURE, OrcFile.WriterVersion.from(99));
+    assertEquals(OrcFile.WriterVersion.ORIGINAL, OrcFile.WriterVersion.from(0));
+    assertEquals(OrcFile.WriterVersion.HIVE_4243, OrcFile.WriterVersion.from(2));
+  }
 }