Repository: hive Updated Branches: refs/heads/master da0be3db7 -> 0bc96772e
HIVE-5623: ORC accessing array column that's empty will fail with java out of bound exception (Prasanth Jayachandran reviewed by Ashutosh Chauhan) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/0bc96772 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/0bc96772 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/0bc96772 Branch: refs/heads/master Commit: 0bc96772e440653815792d3e37db3e9063e6c2e1 Parents: da0be3d Author: Prasanth Jayachandran <j.prasant...@gmail.com> Authored: Mon Sep 14 16:06:18 2015 -0500 Committer: Prasanth Jayachandran <j.prasant...@gmail.com> Committed: Mon Sep 14 16:06:18 2015 -0500 ---------------------------------------------------------------------- ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java | 2 +- ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcStruct.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/0bc96772/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java index b1a32bc..7a17b92 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java @@ -435,7 +435,7 @@ final public class OrcStruct implements Writable { @Override public Object getListElement(Object list, int i) { - if (list == null) { + if (list == null || i < 0 || i >= getListLength(list)) { return null; } return ((List) list).get(i); http://git-wip-us.apache.org/repos/asf/hive/blob/0bc96772/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcStruct.java ---------------------------------------------------------------------- diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcStruct.java b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcStruct.java index 8fc0693..2e431c8 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcStruct.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcStruct.java @@ -94,6 +94,8 @@ public class TestOrcStruct { inspector.getAllStructFieldRefs().get(12).getFieldObjectInspector(); assertEquals(ObjectInspector.Category.LIST, listOI.getCategory()); assertEquals(10, listOI.getListElement(list, 10)); + assertEquals(null, listOI.getListElement(list, -1)); + assertEquals(null, listOI.getListElement(list, 13)); assertEquals(13, listOI.getListLength(list)); Map<Integer, Integer> map = new HashMap<Integer,Integer>();