diff options
author | Padma Penumarthy <ppenumar97@yahoo.com> | 2018-03-06 15:57:34 -0800 |
---|---|---|
committer | Ben-Zvi <bben-zvi@mapr.com> | 2018-03-07 15:40:55 -0800 |
commit | 0a8a3f1984b17c883dd8ee7cc1065932a4700224 (patch) | |
tree | 8cf2cff06314fcf812e5bef76e826c040dd14aca /exec/vector | |
parent | fe05ba001986f9c8fc3cc34387353383e93b433a (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.java | 8 | ||||
-rw-r--r-- | exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java | 19 |
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; + } + } |