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
---