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.
*/