Github user jackylk commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/2055#discussion_r174694130
  
    --- Diff: 
core/src/main/java/org/apache/carbondata/core/util/CarbonUtil.java ---
    @@ -2068,6 +2079,202 @@ private static void updateDecimalType(TableInfo 
tableInfo) {
         return tableInfo;
       }
     
    +  public static ColumnSchema thriftColumnSchmeaToWrapperColumnSchema(
    +      org.apache.carbondata.format.ColumnSchema externalColumnSchema) {
    +    ColumnSchema wrapperColumnSchema = new ColumnSchema();
    +    
wrapperColumnSchema.setColumnUniqueId(externalColumnSchema.getColumn_id());
    +    
wrapperColumnSchema.setColumnName(externalColumnSchema.getColumn_name());
    +    wrapperColumnSchema.setColumnar(externalColumnSchema.isColumnar());
    +    DataType dataType = 
thriftDataTyopeToWrapperDataType(externalColumnSchema.data_type);
    +    if (DataTypes.isDecimal(dataType)) {
    +      DecimalType decimalType = (DecimalType) dataType;
    +      decimalType.setPrecision(externalColumnSchema.getPrecision());
    +      decimalType.setScale(externalColumnSchema.getScale());
    +    }
    +    wrapperColumnSchema.setDataType(dataType);
    +    
wrapperColumnSchema.setDimensionColumn(externalColumnSchema.isDimension());
    +    List<Encoding> encoders = new ArrayList<Encoding>();
    +    for (org.apache.carbondata.format.Encoding encoder : 
externalColumnSchema.getEncoders()) {
    +      encoders.add(fromExternalToWrapperEncoding(encoder));
    +    }
    +    wrapperColumnSchema.setEncodingList(encoders);
    +    
wrapperColumnSchema.setNumberOfChild(externalColumnSchema.getNum_child());
    +    wrapperColumnSchema.setPrecision(externalColumnSchema.getPrecision());
    +    
wrapperColumnSchema.setColumnGroup(externalColumnSchema.getColumn_group_id());
    +    wrapperColumnSchema.setScale(externalColumnSchema.getScale());
    +    
wrapperColumnSchema.setDefaultValue(externalColumnSchema.getDefault_value());
    +    
wrapperColumnSchema.setSchemaOrdinal(externalColumnSchema.getSchemaOrdinal());
    +    Map<String, String> properties = 
externalColumnSchema.getColumnProperties();
    +    if (properties != null) {
    +      if (properties.get(CarbonCommonConstants.SORT_COLUMNS) != null) {
    +        wrapperColumnSchema.setSortColumn(true);
    +      }
    +    }
    +    
wrapperColumnSchema.setFunction(externalColumnSchema.getAggregate_function());
    +    List<org.apache.carbondata.format.ParentColumnTableRelation> 
parentColumnTableRelation =
    +        externalColumnSchema.getParentColumnTableRelations();
    +    if (null != parentColumnTableRelation) {
    +      wrapperColumnSchema.setParentColumnTableRelations(
    +          
fromThriftToWrapperParentTableColumnRelations(parentColumnTableRelation));
    +    }
    +    return wrapperColumnSchema;
    +  }
    +
    +  static List<ParentColumnTableRelation> 
fromThriftToWrapperParentTableColumnRelations(
    +      List<org.apache.carbondata.format.ParentColumnTableRelation> 
thirftParentColumnRelation) {
    +    List<ParentColumnTableRelation> parentColumnTableRelationList = new 
ArrayList<>();
    +    for (org.apache.carbondata.format.ParentColumnTableRelation 
carbonTableRelation :
    +        thirftParentColumnRelation) {
    +      RelationIdentifier relationIdentifier =
    +          new 
RelationIdentifier(carbonTableRelation.getRelationIdentifier().getDatabaseName(),
    +              carbonTableRelation.getRelationIdentifier().getTableName(),
    +              carbonTableRelation.getRelationIdentifier().getTableId());
    +      ParentColumnTableRelation parentColumnTableRelation =
    +          new ParentColumnTableRelation(relationIdentifier, 
carbonTableRelation.getColumnId(),
    +              carbonTableRelation.getColumnName());
    +      parentColumnTableRelationList.add(parentColumnTableRelation);
    +    }
    +    return parentColumnTableRelationList;
    +  }
    +
    +  static Encoding fromExternalToWrapperEncoding(
    +      org.apache.carbondata.format.Encoding encoderThrift) {
    +    switch (encoderThrift) {
    +      case DICTIONARY:
    +        return Encoding.DICTIONARY;
    +      case DELTA:
    +        return Encoding.DELTA;
    +      case RLE:
    +        return Encoding.RLE;
    +      case INVERTED_INDEX:
    +        return Encoding.INVERTED_INDEX;
    +      case BIT_PACKED:
    +        return Encoding.BIT_PACKED;
    +      case DIRECT_DICTIONARY:
    +        return Encoding.DIRECT_DICTIONARY;
    +      default:
    +        throw new IllegalArgumentException(encoderThrift.toString() + " is 
not supported");
    +    }
    +  }
    +
    +  static DataType thriftDataTyopeToWrapperDataType(
    +      org.apache.carbondata.format.DataType dataTypeThrift) {
    +    switch (dataTypeThrift) {
    +      case BOOLEAN:
    +        return DataTypes.BOOLEAN;
    +      case STRING:
    +        return DataTypes.STRING;
    +      case SHORT:
    +        return DataTypes.SHORT;
    +      case INT:
    +        return DataTypes.INT;
    +      case LONG:
    +        return DataTypes.LONG;
    +      case DOUBLE:
    +        return DataTypes.DOUBLE;
    +      case DECIMAL:
    +        return DataTypes.createDefaultDecimalType();
    +      case DATE:
    +        return DataTypes.DATE;
    +      case TIMESTAMP:
    +        return DataTypes.TIMESTAMP;
    +      case ARRAY:
    +        return DataTypes.createDefaultArrayType();
    +      case STRUCT:
    +        return DataTypes.createDefaultStructType();
    +      default:
    +        return DataTypes.STRING;
    +    }
    +  }
    +
    +  public static List<String> getFilePathExternalFilePath(String path) {
    +
    +    // return the list of carbondata files in the given path.
    +    CarbonFile segment = FileFactory.getCarbonFile(path, 
FileFactory.getFileType(path));
    +    CarbonFile[] dataFiles = segment.listFiles(new CarbonFileFilter() {
    +      @Override public boolean accept(CarbonFile file) {
    +
    +        if (file.getName().endsWith(CarbonCommonConstants.FACT_FILE_EXT)) {
    +          return true;
    +        }
    +        return false;
    +      }
    +    });
    +    List<String> filePaths = new ArrayList<>(dataFiles.length);
    +    for (CarbonFile dfiles : dataFiles) {
    +      filePaths.add(dfiles.getAbsolutePath());
    +    }
    +    return filePaths;
    +  }
    +
    +  /**
    +   * This method will read the schema file from a given path
    +   *
    +   * @param schemaFilePath
    +   * @return
    +   */
    +  public static org.apache.carbondata.format.TableInfo 
inferSchemaFileExternalTable(
    --- End diff --
    
    rename to `inferSchema`


---

Reply via email to