Github user sounakr commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2261#discussion_r186055858
--- Diff:
store/sdk/src/main/java/org/apache/carbondata/sdk/file/CarbonWriterBuilder.java
---
@@ -416,16 +411,58 @@ private CarbonTable buildCarbonTable() {
}
TableSchema schema = tableSchemaBuilder.build();
schema.setTableName(tableName);
- CarbonTable table = CarbonTable.builder()
- .tableName(schema.getTableName())
- .databaseName(dbName)
- .tablePath(path)
- .tableSchema(schema)
- .isTransactionalTable(isTransactionalTable)
- .build();
+ CarbonTable table =
+
CarbonTable.builder().tableName(schema.getTableName()).databaseName(dbName).tablePath(path)
+
.tableSchema(schema).isTransactionalTable(isTransactionalTable).build();
return table;
}
+ private void buildTableSchema(Field[] fields, TableSchemaBuilder
tableSchemaBuilder,
+ List<String> sortColumnsList, ColumnSchema[] sortColumnsSchemaList) {
+ for (Field field : fields) {
+ if (null != field) {
+ int isSortColumn = sortColumnsList.indexOf(field.getFieldName());
+ if (isSortColumn > -1) {
+ // unsupported types for ("array", "struct", "double", "float",
"decimal")
+ if (field.getDataType() == DataTypes.DOUBLE ||
field.getDataType() == DataTypes.FLOAT
+ || DataTypes.isDecimal(field.getDataType()) || DataTypes
+ .isArrayType(field.getDataType()) ||
DataTypes.isStructType(field.getDataType())) {
+ throw new RuntimeException(
+ " sort columns not supported for " + "array, struct,
double, float, decimal ");
+ }
+ }
+
+ if (field.getChildren() != null && field.getChildren().size() > 0)
{
+ if (field.getDataType().getName().equalsIgnoreCase("ARRAY")) {
+ // Loop through the inner columns and for a StructData
+ DataType complexType =
+
DataTypes.createArrayType(field.getChildren().get(0).getDataType());
+ tableSchemaBuilder.addColumn(new
StructField(field.getFieldName(), complexType), false);
+ } else if
(field.getDataType().getName().equalsIgnoreCase("STRUCT")) {
+ // Loop through the inner columns and for a StructData
+ List<StructField> structFieldsArray =
+ new ArrayList<StructField>(field.getChildren().size());
+ for (StructField childFld : field.getChildren()) {
+ structFieldsArray
+ .add(new StructField(childFld.getFieldName(),
childFld.getDataType()));
+ }
+ DataType complexType =
DataTypes.createStructType(structFieldsArray);
+ tableSchemaBuilder.addColumn(new
StructField(field.getFieldName(), complexType), false);
+ }
+ } else {
+
--- End diff --
Done
---