Github user kunal642 commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2261#discussion_r186053512
--- Diff:
core/src/main/java/org/apache/carbondata/core/metadata/schema/table/TableSchemaBuilder.java
---
@@ -135,25 +157,41 @@ public ColumnSchema addColumn(StructField field,
boolean isSortColumn) {
newColumn.setColumnReferenceId(newColumn.getColumnUniqueId());
newColumn.setEncodingList(createEncoding(field.getDataType(),
isSortColumn));
if (field.getDataType().isComplexType()) {
- newColumn.setNumberOfChild(((StructType)
field.getDataType()).getFields().size());
+ if (field.getDataType().getName().equalsIgnoreCase("ARRAY")) {
+ newColumn.setNumberOfChild(1);
+ } else {
+ newColumn.setNumberOfChild(((StructType)
field.getDataType()).getFields().size());
+ }
}
if (DataTypes.isDecimal(field.getDataType())) {
DecimalType decimalType = (DecimalType) field.getDataType();
newColumn.setPrecision(decimalType.getPrecision());
newColumn.setScale(decimalType.getScale());
}
if (!isSortColumn) {
- otherColumns.add(newColumn);
+ if (!newColumn.isDimensionColumn()) {
+ measures.add(newColumn);
+ } else if (DataTypes.isStructType(field.getDataType()) ||
+ DataTypes.isArrayType(field.getDataType()) || isComplexChild) {
--- End diff --
Instead of DataTypes.isStructType(field.getDataType()) ||
DataTypes.isArrayType(field.getDataType()) use
field.getDataType().isComplexType()
---