DRILL-6203: Repeated Map Vector does not give correct payload bytecount.

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

Branch: refs/heads/master
Commit: 0a8a3f1984b17c883dd8ee7cc1065932a4700224
Parents: fe05ba0
Author: Padma Penumarthy <ppenuma...@yahoo.com>
Authored: Tue Mar 6 15:57:34 2018 -0800
Committer: Ben-Zvi <bben-...@mapr.com>
Committed: Wed Mar 7 15:40:55 2018 -0800

----------------------------------------------------------------------
 .../exec/vector/complex/RepeatedListVector.java  |  8 ++++++--
 .../exec/vector/complex/RepeatedMapVector.java   | 19 +++++++++++++++++--
 2 files changed, 23 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/0a8a3f19/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedListVector.java
----------------------------------------------------------------------
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 4a7eda1..e8e6b06 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) {

http://git-wip-us.apache.org/repos/asf/drill/blob/0a8a3f19/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java
----------------------------------------------------------------------
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 270f973..b9902fa 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;
+  }
+
 }

Reply via email to