aboutsummaryrefslogtreecommitdiff
path: root/exec/vector
diff options
context:
space:
mode:
authorPadma Penumarthy <ppenumar97@yahoo.com>2018-03-06 15:57:34 -0800
committerBen-Zvi <bben-zvi@mapr.com>2018-03-07 15:40:55 -0800
commit0a8a3f1984b17c883dd8ee7cc1065932a4700224 (patch)
tree8cf2cff06314fcf812e5bef76e826c040dd14aca /exec/vector
parentfe05ba001986f9c8fc3cc34387353383e93b433a (diff)
DRILL-6203: Repeated Map Vector does not give correct payload bytecount.
Diffstat (limited to 'exec/vector')
-rw-r--r--exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java8
-rw-r--r--exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java19
2 files changed, 23 insertions, 4 deletions
diff --git a/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java b/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java
index 4a7eda1d1..e8e6b0654 100644
--- a/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java
+++ b/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java
@@ -47,7 +47,7 @@ import org.apache.drill.exec.vector.complex.impl.RepeatedListReaderImpl;
import org.apache.drill.exec.vector.complex.reader.FieldReader;
public class RepeatedListVector extends AbstractContainerVector
- implements RepeatedValueVector, RepeatedFixedWidthVectorLike {
+ implements RepeatedValueVector {
public final static MajorType TYPE = Types.repeated(MinorType.LIST);
private final RepeatedListReaderImpl reader = new RepeatedListReaderImpl(null, this);
@@ -411,7 +411,6 @@ public class RepeatedListVector extends AbstractContainerVector
return typeify(delegate.getDataVector(), clazz);
}
- @Override
public void allocateNew(int valueCount, int innerValueCount) {
clear();
getOffsetVector().allocateNew(valueCount + 1);
@@ -419,6 +418,11 @@ public class RepeatedListVector extends AbstractContainerVector
getMutator().reset();
}
+ public void allocateOffsetsNew(int groupCount) {
+ getOffsetVector().allocateNew(groupCount + 1);
+ getOffsetVector().zeroVector();
+ }
+
@Override
public VectorWithOrdinal getChildVectorWithOrdinal(String name) {
if (name != null) {
diff --git a/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java b/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java
index 270f973e4..b9902fad2 100644
--- a/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java
+++ b/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java
@@ -53,7 +53,7 @@ import org.apache.drill.exec.vector.complex.reader.FieldReader;
import com.google.common.collect.Maps;
public class RepeatedMapVector extends AbstractMapVector
- implements RepeatedValueVector, RepeatedFixedWidthVectorLike {
+ implements RepeatedValueVector {
public final static MajorType TYPE = MajorType.newBuilder().setMinorType(MinorType.MAP).setMode(DataMode.REPEATED).build();
@@ -97,7 +97,6 @@ public class RepeatedMapVector extends AbstractMapVector
@Override
public RepeatedMapReaderImpl getReader() { return reader; }
- @Override
public void allocateNew(int groupCount, int innerValueCount) {
clear();
try {
@@ -609,4 +608,20 @@ public class RepeatedMapVector extends AbstractMapVector
public void toNullable(ValueVector nullableVector) {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public int getPayloadByteCount(int valueCount) {
+ if (valueCount == 0) {
+ return 0;
+ }
+
+ int entryCount = offsets.getAccessor().get(valueCount);
+ int count = offsets.getPayloadByteCount(valueCount);
+
+ for (final ValueVector v : getChildren()) {
+ count += v.getPayloadByteCount(entryCount);
+ }
+ return count;
+ }
+
}