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:14:23 UTC

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

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/9860c2ba
Tree: http://git-wip-us.apache.org/repos/asf/orc/tree/9860c2ba
Diff: http://git-wip-us.apache.org/repos/asf/orc/diff/9860c2ba

Branch: refs/heads/branch-1.2
Commit: 9860c2ba7566a8cdae7f5e0517312afe6c38fc66
Parents: d43c862
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:12:02 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/9860c2ba/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/9860c2ba/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));
+  }
 }