Github user ppadma commented on a diff in the pull request: https://github.com/apache/drill/pull/1228#discussion_r184236170 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/record/RecordBatchSizer.java --- @@ -277,18 +286,29 @@ public boolean isRepeatedList() { /** * This is the average per entry width, used for vector allocation. */ - public int getEntryWidth() { + private int getEntryWidthForAlloc() { int width = 0; if (isVariableWidth) { - width = getNetSizePerEntry() - OFFSET_VECTOR_WIDTH; + width = getAllocSizePerEntry() - OFFSET_VECTOR_WIDTH; // Subtract out the bits (is-set) vector width - if (metadata.getDataMode() == DataMode.OPTIONAL) { + if (isOptional) { width -= BIT_VECTOR_WIDTH; } + + if (isRepeated && getValueCount() == 0) { + return (safeDivide(width, STD_REPETITION_FACTOR)); --- End diff -- You are right. row count can be non-zero and valueCount can still be zero. Since this is intended for empty batch case, changed this to check for row count instead.
---