Github user paul-rogers commented on a diff in the pull request: https://github.com/apache/drill/pull/1101#discussion_r164624503 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/aggregate/HashAggTemplate.java --- @@ -215,6 +206,7 @@ public BatchHolder() { MaterializedField outputField = materializedValueFields[i]; // Create a type-specific ValueVector for this value vector = TypeHelper.getNewVector(outputField, allocator); + int columnSize = new RecordBatchSizer.ColumnSize(vector).estSize; --- End diff -- Agree that the "sizer" should return the size of a fixed-width column even if there are 0 rows. Thanks for catching and fixing this. Though, I will point out that if you get a 0-length batch, just throw it away and read another; no useful purpose is served by doing anything with an empty batch (except to pass it along for schema purposes if this is the first batch: the so-called "fast schema" that is supposed to work, but seems to not be fully implemented...) I've found that Drill behaves poorly and erratically when trying to allocate zero-sized vectors. Best not to do that. If your batch size is 0, don't allocate vectors would be my general advice to avoid lots of grief.
---