core/src/main/java/org/apache/carbondata/core/metadata/schema/table/CarbonTable.java
/**
   * During creation of TableInfo from hivemetastore the DataMapSchemas and the columns
   * DataTypes are not converted to the appropriate child classes.
   *
   * This method will cast the same to the appropriate classes
   *
   * @param tableInfo
   */
During creation of TableInfo from hivemetastore the DataMapSchemas and the columns
DataTypes are not converted to the appropriate child classes.

This method will cast the same to the appropriate classes

@param tableInfo
During creation of TableInfo from hivemetastore the DataMapSchemas and the columns DataTypes are not converted to the appropriate child classes . This method will cast the same to the appropriate classes @param tableInfo
public static void updateTableInfo(TableInfo tableInfo) {
    List<DataMapSchema> dataMapSchemas = new ArrayList<>();
    for (DataMapSchema dataMapSchema : tableInfo.getDataMapSchemaList()) {
      DataMapSchema newDataMapSchema = DataMapSchemaFactory.INSTANCE
          .getDataMapSchema(dataMapSchema.getDataMapName(), dataMapSchema.getClassName());
      newDataMapSchema.setChildSchema(dataMapSchema.getChildSchema());
      newDataMapSchema.setProperties(dataMapSchema.getProperties());
      newDataMapSchema.setRelationIdentifier(dataMapSchema.getRelationIdentifier());
      dataMapSchemas.add(newDataMapSchema);
    }
    tableInfo.setDataMapSchemaList(dataMapSchemas);
    for (ColumnSchema columnSchema : tableInfo.getFactTable().getListOfColumns()) {
      columnSchema.setDataType(DataTypeUtil.valueOf(columnSchema.getDataType(),
          columnSchema.getPrecision(), columnSchema.getScale()));
    }
    List<DataMapSchema> childSchema = tableInfo.getDataMapSchemaList();
    for (DataMapSchema dataMapSchema : childSchema) {
      if (dataMapSchema.childSchema != null
          && dataMapSchema.childSchema.getListOfColumns().size() > 0) {
        for (ColumnSchema columnSchema : dataMapSchema.childSchema.getListOfColumns()) {
          columnSchema.setDataType(DataTypeUtil
              .valueOf(columnSchema.getDataType(), columnSchema.getPrecision(),
                  columnSchema.getScale()));
        }
      }
    }
    if (tableInfo.getFactTable().getBucketingInfo() != null) {
      for (ColumnSchema columnSchema : tableInfo.getFactTable()
          .getBucketingInfo().getListOfColumns()) {
        columnSchema.setDataType(DataTypeUtil.valueOf(columnSchema.getDataType(),
            columnSchema.getPrecision(), columnSchema.getScale()));
      }
    }
    if (tableInfo.getFactTable().getPartitionInfo() != null) {
      for (ColumnSchema columnSchema : tableInfo.getFactTable().getPartitionInfo()
          .getColumnSchemaList()) {
        columnSchema.setDataType(DataTypeUtil
            .valueOf(columnSchema.getDataType(), columnSchema.getPrecision(),
                columnSchema.getScale()));
      }
    }
  }
public static void updateTableInfo ( TableInfo tableInfo ) { List < DataMapSchema > dataMapSchemas = new ArrayList < > ( ) ; for ( DataMapSchema dataMapSchema : tableInfo . getDataMapSchemaList ( ) ) { DataMapSchema newDataMapSchema = DataMapSchemaFactory . INSTANCE . getDataMapSchema ( dataMapSchema . getDataMapName ( ) , dataMapSchema . getClassName ( ) ) ; newDataMapSchema . setChildSchema ( dataMapSchema . getChildSchema ( ) ) ; newDataMapSchema . setProperties ( dataMapSchema . getProperties ( ) ) ; newDataMapSchema . setRelationIdentifier ( dataMapSchema . getRelationIdentifier ( ) ) ; dataMapSchemas . add ( newDataMapSchema ) ; } tableInfo . setDataMapSchemaList ( dataMapSchemas ) ; for ( ColumnSchema columnSchema : tableInfo . getFactTable ( ) . getListOfColumns ( ) ) { columnSchema . setDataType ( DataTypeUtil . valueOf ( columnSchema . getDataType ( ) , columnSchema . getPrecision ( ) , columnSchema . getScale ( ) ) ) ; } List < DataMapSchema > childSchema = tableInfo . getDataMapSchemaList ( ) ; for ( DataMapSchema dataMapSchema : childSchema ) { if ( dataMapSchema . childSchema != null && dataMapSchema . childSchema . getListOfColumns ( ) . size ( ) > 0 ) { for ( ColumnSchema columnSchema : dataMapSchema . childSchema . getListOfColumns ( ) ) { columnSchema . setDataType ( DataTypeUtil . valueOf ( columnSchema . getDataType ( ) , columnSchema . getPrecision ( ) , columnSchema . getScale ( ) ) ) ; } } } if ( tableInfo . getFactTable ( ) . getBucketingInfo ( ) != null ) { for ( ColumnSchema columnSchema : tableInfo . getFactTable ( ) . getBucketingInfo ( ) . getListOfColumns ( ) ) { columnSchema . setDataType ( DataTypeUtil . valueOf ( columnSchema . getDataType ( ) , columnSchema . getPrecision ( ) , columnSchema . getScale ( ) ) ) ; } } if ( tableInfo . getFactTable ( ) . getPartitionInfo ( ) != null ) { for ( ColumnSchema columnSchema : tableInfo . getFactTable ( ) . getPartitionInfo ( ) . getColumnSchemaList ( ) ) { columnSchema . setDataType ( DataTypeUtil . valueOf ( columnSchema . getDataType ( ) , columnSchema . getPrecision ( ) , columnSchema . getScale ( ) ) ) ; } } }
During creation of TableInfo from hivemetastore the DataMapSchemas and the columns
 DataTypes are not converted to the appropriate child classes.
During creation of TableInfo from hivemetastore the DataMapSchemas and the columns DataTypes are not converted to the appropriate child classes .