diff options
Diffstat (limited to 'exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashPartition.java')
-rw-r--r-- | exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashPartition.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashPartition.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashPartition.java index eaccd3355..fbdc4f3b8 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashPartition.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashPartition.java @@ -17,6 +17,7 @@ */ package org.apache.drill.exec.physical.impl.common; +import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import org.apache.drill.common.exceptions.RetryAfterSpillException; import org.apache.drill.common.exceptions.UserException; @@ -122,6 +123,7 @@ public class HashPartition implements HashJoinMemoryCalculator.PartitionStat { private List<HashJoinMemoryCalculator.BatchStat> inMemoryBatchStats = Lists.newArrayList(); private long partitionInMemorySize; private long numInMemoryRecords; + private boolean updatedRecordsPerBatch = false; public HashPartition(FragmentContext context, BufferAllocator allocator, ChainedHashTable baseHashTable, RecordBatch buildBatch, RecordBatch probeBatch, @@ -156,6 +158,18 @@ public class HashPartition implements HashJoinMemoryCalculator.PartitionStat { } /** + * Configure a different temporary batch size when spilling probe batches. + * @param newRecordsPerBatch The new temporary batch size to use. + */ + public void updateProbeRecordsPerBatch(int newRecordsPerBatch) { + Preconditions.checkArgument(newRecordsPerBatch > 0); + Preconditions.checkState(!updatedRecordsPerBatch); // Only allow updating once + Preconditions.checkState(processingOuter); // We can only update the records per batch when probing. + + recordsPerBatch = newRecordsPerBatch; + } + + /** * Allocate a new vector container for either right or left record batch * Add an additional special vector for the hash values * Note: this call may OOM !! |