Github user ravipesala commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2417#discussion_r198874999
--- 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 --
remove it , no body uses it
---