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 2016/12/09 21:50:26 UTC

orc git commit: ORC-118 Fix RecordReaderImpl.findColumn from getting NPE when columns aren't mapped by schema evolution.

Repository: orc
Updated Branches:
  refs/heads/master ebae3044e -> 071f98ea7


ORC-118 Fix RecordReaderImpl.findColumn from getting NPE when columns aren't
mapped by schema evolution.

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

Branch: refs/heads/master
Commit: 071f98ea77ffcf8042a2e2d25b21cf88aec76d85
Parents: ebae304
Author: Owen O'Malley <om...@apache.org>
Authored: Fri Dec 9 13:47:37 2016 -0800
Committer: Owen O'Malley <om...@apache.org>
Committed: Fri Dec 9 13:47:37 2016 -0800

----------------------------------------------------------------------
 .../java/org/apache/orc/impl/RecordReaderImpl.java    |  3 ++-
 .../org/apache/orc/impl/TestRecordReaderImpl.java     | 14 ++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/orc/blob/071f98ea/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java
----------------------------------------------------------------------
diff --git a/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java b/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java
index 362dd3d..bb6dd2d 100644
--- a/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java
@@ -112,7 +112,8 @@ public class RecordReaderImpl implements RecordReader {
     List<TypeDescription> children = readerSchema.getChildren();
     for (int i = 0; i < fieldNames.size(); ++i) {
       if (columnName.equals(fieldNames.get(i))) {
-        return evolution.getFileType(children.get(i)).getId();
+        TypeDescription result = evolution.getFileType(children.get(i));
+        return result == null ? -1 : result.getId();
       }
     }
     return -1;

http://git-wip-us.apache.org/repos/asf/orc/blob/071f98ea/java/core/src/test/org/apache/orc/impl/TestRecordReaderImpl.java
----------------------------------------------------------------------
diff --git a/java/core/src/test/org/apache/orc/impl/TestRecordReaderImpl.java b/java/core/src/test/org/apache/orc/impl/TestRecordReaderImpl.java
index f159eef..6b4daa8 100644
--- a/java/core/src/test/org/apache/orc/impl/TestRecordReaderImpl.java
+++ b/java/core/src/test/org/apache/orc/impl/TestRecordReaderImpl.java
@@ -70,6 +70,20 @@ import org.mockito.MockSettings;
 import org.mockito.Mockito;
 
 public class TestRecordReaderImpl {
+
+  @Test
+  public void testFindColumn() throws Exception {
+    Configuration conf = new Configuration();
+    TypeDescription file = TypeDescription.fromString("struct<a:int,c:string,e:int>");
+    TypeDescription reader = TypeDescription.fromString("struct<a:int,b:double,c:string,d:double,e:bigint>");
+    SchemaEvolution evo = new SchemaEvolution(file, reader, new Reader.Options(conf));
+    assertEquals(1, RecordReaderImpl.findColumns(evo, "a"));
+    assertEquals(-1, RecordReaderImpl.findColumns(evo, "b"));
+    assertEquals(2, RecordReaderImpl.findColumns(evo, "c"));
+    assertEquals(-1, RecordReaderImpl.findColumns(evo, "d"));
+    assertEquals(3, RecordReaderImpl.findColumns(evo, "e"));
+  }
+
   /**
    * Create a predicate leaf. This is used by another test.
    */