mustafaiman commented on a change in pull request #1481:
URL: https://github.com/apache/hive/pull/1481#discussion_r486463497
##########
File path:
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
##########
@@ -427,8 +428,12 @@ public void initialize(Configuration hconf) throws
HiveException {
computeMemoryLimits();
LOG.debug("using hash aggregation processing mode");
+ reusableBufferSize = (int) (maxHtEntries * percentEntriesToFlush);
+
+ reusableAggregationBufferRows = new ArrayDeque<>(reusableBufferSize);
+
if (keyWrappersBatch.getVectorHashKeyWrappers()[0] instanceof
VectorHashKeyWrapperGeneral) {
Review comment:
@rbalamohan
The array that is returned from
`keyWrappersBatch.getVectorHashKeyWrappers()` consists of only one type of
wrappers, isn't it? So the first element is representative of all the elements
in that array.
We resort to this optimization only when the batch consists of
VectorHashKeyWrapperGeneral. The other wrapper types have only one two
primitive types. If needed, only thing we need to do is just override their
copyKey(KeyWrapper) method and generalize this `instanceOf` check to cover them
too. Right now, I dont think that is very important.
So when the first element is not VectorHashKeyWrapperGeneral, the rest of
the array are not either. In that case, we just skip reusing.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]