diff options
author | Padma Penumarthy <ppenumar97@yahoo.com> | 2018-02-09 13:54:38 -0800 |
---|---|---|
committer | Vitalii Diravka <vitalii.diravka@gmail.com> | 2018-02-16 20:31:15 +0000 |
commit | 20185c9bf0f4c94815fd2ab1eae1b98b3d4e4ff7 (patch) | |
tree | 632bc4a4ae47484ae68be243232e5ed6361ac600 /exec/vector | |
parent | 58e4cec9a913e381ef0e96b072c31e34085277b3 (diff) |
DRILL-6123: Limit batch size for Merge Join based on memory
closes #1107
Diffstat (limited to 'exec/vector')
4 files changed, 14 insertions, 0 deletions
diff --git a/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/AbstractMapVector.java b/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/AbstractMapVector.java index 5515b7ad2..36823970d 100644 --- a/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/AbstractMapVector.java +++ b/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/AbstractMapVector.java @@ -297,6 +297,10 @@ public abstract class AbstractMapVector extends AbstractContainerVector { @Override public int getPayloadByteCount(int valueCount) { + if (valueCount == 0) { + return 0; + } + int count = 0; for (final ValueVector v : vectors.values()) { diff --git a/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/BaseRepeatedValueVector.java b/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/BaseRepeatedValueVector.java index 4b0c1b57c..02243c8ee 100644 --- a/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/BaseRepeatedValueVector.java +++ b/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/BaseRepeatedValueVector.java @@ -220,6 +220,9 @@ public abstract class BaseRepeatedValueVector extends BaseValueVector implements @Override public int getPayloadByteCount(int valueCount) { + if (valueCount == 0) { + return 0; + } int entryCount = offsets.getAccessor().get(valueCount); return offsets.getPayloadByteCount(valueCount) + vector.getPayloadByteCount(entryCount); } diff --git a/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/ListVector.java b/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/ListVector.java index 7de5ce66c..45d91606a 100644 --- a/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/ListVector.java +++ b/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/ListVector.java @@ -333,6 +333,10 @@ public class ListVector extends BaseRepeatedValueVector { @Override public int getPayloadByteCount(int valueCount) { + if (valueCount == 0) { + return 0; + } + return offsets.getPayloadByteCount(valueCount) + bits.getPayloadByteCount(valueCount) + super.getPayloadByteCount(valueCount); } 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 644241758..4a7eda1d1 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 @@ -442,6 +442,9 @@ public class RepeatedListVector extends AbstractContainerVector @Override public int getPayloadByteCount(int valueCount) { + if (valueCount == 0) { + return 0; + } return delegate.getPayloadByteCount(valueCount); } |