Github user ravipesala commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2559#discussion_r205975748
--- Diff:
core/src/main/java/org/apache/carbondata/core/scan/collector/impl/DictionaryBasedResultCollector.java
---
@@ -141,22 +141,50 @@ public
DictionaryBasedResultCollector(BlockExecutionInfo blockExecutionInfos) {
}
fillMeasureData(scannedResult, row);
if
(scannedResult.complexParentIndexToQueryMap.toString().contains("StructQueryType"))
{
- // If a : <b,c> and d : <e,f> are two struct and if a.b,a.c,d.e is
given in the
- // projection list,then object array will contain a,null,d as
result, because for a.b,
- // a will be filled and for a.c null will be placed.
- // Instead place null in the end of object array and send a,d,null
as result.
- int count = 0;
- for (int j = 0; j < row.length; j++) {
- if (row[j] != null) row[count++] = row[j];
+ boolean[] isComplexChildColumn = new
boolean[queryDimensions.length + queryMeasures.length];
--- End diff --
Does it really need to create this array for each row? I feel it is one
time array fill is enough
---