Ben-Zvi commented on a change in pull request #1324: DRILL-6310: limit batch
size for hash aggregate
URL: https://github.com/apache/drill/pull/1324#discussion_r198702179
##########
File path:
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableTemplate.java
##########
@@ -646,14 +647,18 @@ public PutStatus put(int incomingRowIdx, IndexPointer
htIdxHolder, int hashCode)
currentIdx = freeIndex++;
boolean addedBatch = false;
try { // ADD A BATCH
- addedBatch = addBatchIfNeeded(currentIdx);
+ addedBatch = addBatchIfNeeded(currentIdx, targetBatchRowCount);
+ if (addedBatch) {
+ // If we just added the batch, update the current index to point to
beginning of new batch.
+ currentIdx = (batchHolders.size() - 1) * BATCH_SIZE;
+ freeIndex = currentIdx + 1;
+ }
} catch (OutOfMemoryException OOME) {
- retryAfterOOM( currentIdx < batchHolders.size() * BATCH_SIZE );
+ retryAfterOOM( currentIdx < totalBatchHoldersSize);
Review comment:
*Just a comment:* The idea of using this "max, but not actual" size of batch
(the constant BATCH_SIZE) is on one hand smart (much less code needs to be
changed), but also a little awkward, as things don't mean exactly what they are
(e.g. totalBatchHolderSize).
Maybe in the future this code should be cleaned; e.g., keep a count of
the batches and compare to the count, instead of the not-real total.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services