From 4f04c1550d3490d4c284f266af7f27a84622e1be Mon Sep 17 00:00:00 2001 From: Owen O'Malley Date: Tue, 16 May 2017 11:04:44 -0700 Subject: [PATCH] HIVE-16683. Backport of ORC-125 to fix incorrect handling of future WriterVersions in ORC. --- orc/src/java/org/apache/orc/OrcFile.java | 10 +++++++++- orc/src/test/org/apache/orc/TestVectorOrcFile.java | 7 +++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git orc/src/java/org/apache/orc/OrcFile.java orc/src/java/org/apache/orc/OrcFile.java index ddfa9f7a7d..06fb6668ea 100644 --- orc/src/java/org/apache/orc/OrcFile.java +++ orc/src/java/org/apache/orc/OrcFile.java @@ -140,8 +140,16 @@ public int getId() { } } + /** + * 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]; } } diff --git orc/src/test/org/apache/orc/TestVectorOrcFile.java orc/src/test/org/apache/orc/TestVectorOrcFile.java index 112edb91b7..73abf9e66d 100644 --- orc/src/test/org/apache/orc/TestVectorOrcFile.java +++ orc/src/test/org/apache/orc/TestVectorOrcFile.java @@ -2779,4 +2779,11 @@ public void testMaps() throws Exception { rows.nextBatch(batch); assertEquals(0, batch.size); } + + @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)); + } } -- 2.12.2