aboutsummaryrefslogtreecommitdiff
path: root/exec/java-exec/src
diff options
context:
space:
mode:
authorJinfeng Ni <jni@maprtech.com>2014-08-28 15:27:11 -0700
committerJacques Nadeau <jacques@apache.org>2014-08-29 00:14:31 -0700
commit4dcac1909eb687d226136c5794b2cf0c07e5733a (patch)
tree85d7c71bafe6d07401068ed14c1c21f71a6cead9 /exec/java-exec/src
parentf7d575b4d2dc9cd4375adca5d26b97b6084df3ec (diff)
DRILL-1265: Drill may incorrectly return null when evaluates an expression of repeated list. The fix is to correctly set offsets vectors for repeated list vector.
Diffstat (limited to 'exec/java-exec/src')
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java3
-rw-r--r--exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestComplexTypeReader.java6
2 files changed, 8 insertions, 1 deletions
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java
index 00716cf0b..f903b0ca4 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java
@@ -324,8 +324,9 @@ public class RepeatedListVector extends AbstractContainerVector implements Repea
for(int i = holder.start; i < holder.end; i++, newIndex++){
if(!vectorTransfer.copyValueSafe(i, newIndex)) return false;
}
- if(!this.to.offsets.getMutator().setSafe(to, newIndex)) return false;
+ if(!this.to.offsets.getMutator().setSafe(to + 1, newIndex)) return false;
+ this.to.lastSet++;
return true;
}
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestComplexTypeReader.java b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestComplexTypeReader.java
index be018a73b..2e6289762 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestComplexTypeReader.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestComplexTypeReader.java
@@ -123,6 +123,12 @@ public class TestComplexTypeReader extends BaseTestQuery{
}
@Test
+ //repeated list. The repeated list is asked for twice, hence requires copying (evaluation in ProjectRecordBatch)
+ public void testZ4() throws Exception{
+ test("select rl, rl from cp.`jsoninput/input2.json`;");
+ }
+
+ @Test
//repeated map --> Json. It will go beyond the buffer of size 256 allocated in setup.
public void testA0() throws Exception{
test(" select convert_to(types, 'JSON') from cp.`jsoninput/vvtypes.json`;");