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

    https://github.com/apache/carbondata/pull/2417#discussion_r199081333
  
    --- Diff: 
core/src/main/java/org/apache/carbondata/core/datastore/page/encoding/DefaultEncodingFactory.java
 ---
    @@ -58,16 +67,36 @@ public static EncodingFactory getInstance() {
       @Override
       public ColumnPageEncoder createEncoder(TableSpec.ColumnSpec columnSpec, 
ColumnPage inputPage) {
         // TODO: add log
    +    ColumnPageEncoder pageEncoder = null;
         if (columnSpec instanceof TableSpec.MeasureSpec) {
           return createEncoderForMeasure(inputPage);
    -    } else {
    -      if (newWay) {
    -        return createEncoderForDimension((TableSpec.DimensionSpec) 
columnSpec, inputPage);
    -      } else {
    -        assert columnSpec instanceof TableSpec.DimensionSpec;
    +    } else if (columnSpec instanceof TableSpec.DimensionSpec) {
    +      pageEncoder = createCodecForDimension((TableSpec.DimensionSpec) 
columnSpec, inputPage);
    +      if (pageEncoder == null) {
             return createEncoderForDimensionLegacy((TableSpec.DimensionSpec) 
columnSpec);
           }
         }
    +    return pageEncoder;
    +  }
    +
    +  private ColumnPageEncoder 
createCodecForDimension(TableSpec.DimensionSpec columnSpec,
    +      ColumnPage inputPage) {
    +    switch (columnSpec.getColumnType()) {
    +      case PLAIN_VALUE:
    +        if ((inputPage.getDataType() == DataTypes.BYTE) || 
(inputPage.getDataType()
    +            == DataTypes.SHORT) || (inputPage.getDataType() == 
DataTypes.INT) || (
    +            inputPage.getDataType() == DataTypes.LONG)) {
    +          return 
selectCodecByAlgorithmForIntegral(inputPage.getStatistics()).createEncoder(null);
    +        } else if ((inputPage.getDataType() == DataTypes.FLOAT) || 
(inputPage.getDataType()
    +            == DataTypes.DOUBLE)) {
    +          return 
selectCodecByAlgorithmForFloating(inputPage.getStatistics()).createEncoder(null);
    +        } else if (inputPage.getDataType() == DataTypes.STRING) {
    +          // TODO. Currently let string go through legacy encoding. Later 
will change the encoding.
    +          return null;
    +        }
    +        break;
    +    }
    +    return null;
       }
     
       private ColumnPageEncoder 
createEncoderForDimension(TableSpec.DimensionSpec columnSpec,
    --- End diff --
    
    Done


---

Reply via email to