DRILL-1661: Fix for setValueLengthSafe method in variable length vectors that 
was causing a failure in the parquet reader.


Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/a8fd9758
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/a8fd9758
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/a8fd9758

Branch: refs/heads/master
Commit: a8fd9758b1f77632a038e43c5ac2cc00e1fa459b
Parents: f7570d9
Author: Jason Altekruse <altekruseja...@gmail.com>
Authored: Mon Nov 3 18:14:09 2014 -0800
Committer: Jinfeng Ni <j...@maprtech.com>
Committed: Fri Nov 7 11:36:08 2014 -0800

----------------------------------------------------------------------
 .../src/main/codegen/templates/VariableLengthVectors.java       | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/a8fd9758/exec/java-exec/src/main/codegen/templates/VariableLengthVectors.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/codegen/templates/VariableLengthVectors.java 
b/exec/java-exec/src/main/codegen/templates/VariableLengthVectors.java
index e1a754e..5338a71 100644
--- a/exec/java-exec/src/main/codegen/templates/VariableLengthVectors.java
+++ b/exec/java-exec/src/main/codegen/templates/VariableLengthVectors.java
@@ -451,6 +451,11 @@ public final class ${minor.class}Vector extends 
BaseDataValueVector implements V
     }
 
     public boolean setValueLengthSafe(int index, int length) {
+      int offset = offsetVector.getAccessor().get(index);
+      if(data.capacity() < offset + length ) {
+        decrementAllocationMonitor();
+        return false;
+      }
       return offsetVector.getMutator().setSafe(index + 1, 
offsetVector.getAccessor().get(index) + length);
     }
 

Reply via email to