HIVE-12202 NPE thrown when reading legacy ACID delta files(Elliot West via 
Eugene Koifman)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/89703e7d
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/89703e7d
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/89703e7d

Branch: refs/heads/master
Commit: 89703e7d0f385a5e93208f55703d4cbf85329fef
Parents: 595fa99
Author: Eugene Koifman <ekoif...@hortonworks.com>
Authored: Tue Nov 3 09:06:19 2015 -0800
Committer: Eugene Koifman <ekoif...@hortonworks.com>
Committed: Tue Nov 3 09:06:19 2015 -0800

----------------------------------------------------------------------
 .../org/apache/hadoop/hive/ql/io/AcidInputFormat.java | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/89703e7d/ql/src/java/org/apache/hadoop/hive/ql/io/AcidInputFormat.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/AcidInputFormat.java 
b/ql/src/java/org/apache/hadoop/hive/ql/io/AcidInputFormat.java
index 24506b7..7c7074d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/AcidInputFormat.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/AcidInputFormat.java
@@ -33,7 +33,6 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 /**
@@ -115,11 +114,14 @@ public interface AcidInputFormat<KEY extends 
WritableComparable, VALUE>
     private List<Integer> stmtIds;
     
     public DeltaMetaData() {
-      this(0,0,null);
+      this(0,0,new ArrayList<Integer>());
     }
     DeltaMetaData(long minTxnId, long maxTxnId, List<Integer> stmtIds) {
       this.minTxnId = minTxnId;
       this.maxTxnId = maxTxnId;
+      if (stmtIds == null) {
+        throw new IllegalArgumentException("stmtIds == null");
+      }
       this.stmtIds = stmtIds;
     }
     long getMinTxnId() {
@@ -136,9 +138,6 @@ public interface AcidInputFormat<KEY extends 
WritableComparable, VALUE>
       out.writeLong(minTxnId);
       out.writeLong(maxTxnId);
       out.writeInt(stmtIds.size());
-      if(stmtIds == null) {
-        return;
-      }
       for(Integer id : stmtIds) {
         out.writeInt(id);
       }
@@ -147,11 +146,8 @@ public interface AcidInputFormat<KEY extends 
WritableComparable, VALUE>
     public void readFields(DataInput in) throws IOException {
       minTxnId = in.readLong();
       maxTxnId = in.readLong();
+      stmtIds.clear();
       int numStatements = in.readInt();
-      if(numStatements <= 0) {
-        return;
-      }
-      stmtIds = new ArrayList<>();
       for(int i = 0; i < numStatements; i++) {
         stmtIds.add(in.readInt());
       }

Reply via email to