Github user ravipesala commented on a diff in the pull request: https://github.com/apache/carbondata/pull/2396#discussion_r197488819 --- Diff: core/src/main/java/org/apache/carbondata/core/scan/collector/impl/DictionaryBasedResultCollector.java --- @@ -136,28 +189,81 @@ void fillDimensionData(BlockletScannedResult scannedResult, int[] surrogateResul } } else if (complexDataTypeArray[i]) { // Complex Type With No Dictionary Encoding. - row[order[i]] = comlexDimensionInfoMap.get(queryDimensions[i].getDimension().getOrdinal()) - .getDataBasedOnDataType(ByteBuffer.wrap(complexTypeKeyArray[complexTypeColumnIndex++])); + if (queryDimensions[i].getDimension().getParentOrdinal() != -1) { + if (mergedComplexDimensionColumns + .get(queryDimensions[i].getDimension().getParentOrdinal()).size() > 1) { + fillRowForComplexColumn(complexDimensionInfoMap, row, i); + } else { + row[order[i]] = + complexDimensionInfoMap.get(queryDimensions[i].getDimension().getParentOrdinal()) + .getDataBasedOnColumn( + ByteBuffer.wrap(complexTypeKeyArray[complexTypeColumnIndex++]), + queryDimensions[i].getDimension().getComplexParentDimension(), + queryDimensions[i].getDimension()); + } + } else { + row[order[i]] = + complexDimensionInfoMap.get(queryDimensions[i].getDimension().getOrdinal()) + .getDataBasedOnDataType( + ByteBuffer.wrap(complexTypeKeyArray[complexTypeColumnIndex++])); + } } else { - row[order[i]] = DataTypeUtil.getDataBasedOnDataTypeForNoDictionaryColumn( - noDictionaryKeys[noDictionaryColumnIndex++], - queryDimensions[i].getDimension().getDataType()); + if (queryDimensions[i].getDimension().getParentOrdinal() != -1) { --- End diff -- Move this to new method and add a comment
---