Repository: hive Updated Branches: refs/heads/master ba0217ff1 -> 6d890faf2
HIVE-18488 : LLAP ORC readers are missing some null checks (Sergey Shelukhin, reviewed by Prasanth Jayachandran) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/6d890faf Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/6d890faf Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/6d890faf Branch: refs/heads/master Commit: 6d890faf22fd1ede3658a5eed097476eab3c67e9 Parents: ba0217f Author: sergey <ser...@apache.org> Authored: Fri Jan 19 13:56:01 2018 -0800 Committer: sergey <ser...@apache.org> Committed: Fri Jan 19 13:56:01 2018 -0800 ---------------------------------------------------------------------- .../hadoop/hive/llap/io/decode/OrcEncodedDataConsumer.java | 2 ++ .../hadoop/hive/ql/io/orc/encoded/EncodedTreeReaderFactory.java | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/6d890faf/llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcEncodedDataConsumer.java ---------------------------------------------------------------------- diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcEncodedDataConsumer.java b/llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcEncodedDataConsumer.java index 16f3fdb..9d33656 100644 --- a/llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcEncodedDataConsumer.java +++ b/llap-server/src/java/org/apache/hadoop/hive/llap/io/decode/OrcEncodedDataConsumer.java @@ -233,6 +233,7 @@ public class OrcEncodedDataConsumer PositionProvider[] pps = createPositionProviders(columnReaders, batchKey, stripeMetadata); if (pps == null) return; for (int i = 0; i < columnReaders.length; i++) { + if (columnReaders[i] == null) continue; // TODO: we could/should trace seek destinations; pps needs a "peek" method columnReaders[i].seek(pps); } @@ -246,6 +247,7 @@ public class OrcEncodedDataConsumer if (pps == null) return; for (int i = 0; i < columnReaders.length; i++) { TreeReader reader = columnReaders[i]; + if (reader == null) continue; // Note: we assume this never happens for SerDe reader - the batch would never have vectors. // That is always true now; but it wasn't some day, the below would throw in getColumnData. ((SettableTreeReader) reader).setBuffers(batch, sameStripe); http://git-wip-us.apache.org/repos/asf/hive/blob/6d890faf/ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/EncodedTreeReaderFactory.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/EncodedTreeReaderFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/EncodedTreeReaderFactory.java index a3a8f1a..1e7708e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/EncodedTreeReaderFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/EncodedTreeReaderFactory.java @@ -2740,7 +2740,9 @@ public class EncodedTreeReaderFactory extends TreeReaderFactory { } if (fields != null) { for (TreeReader child : fields) { - ((SettableTreeReader) child).setBuffers(batch, sameStripe); + if (child != null) { + ((SettableTreeReader) child).setBuffers(batch, sameStripe); + } } } }