Skip to content

Commit 8d39ce3

Browse files
gzh23JackieTien97
authored andcommitted
fix rlbe (#143)
1 parent 486b258 commit 8d39ce3

File tree

4 files changed

+25
-4
lines changed

4 files changed

+25
-4
lines changed

java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/Decoder.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,8 @@ public static Decoder getDecoderByType(TSEncoding encoding, TSDataType dataType)
171171
case TIMESTAMP:
172172
return new LongRLBEDecoder();
173173
case FLOAT:
174-
return new FloatRLBEDecoder();
175174
case DOUBLE:
176-
return new DoubleRLBEDecoder();
175+
return new FloatDecoder(TSEncoding.valueOf(encoding.toString()), dataType);
177176
default:
178177
throw new TsFileDecodingException(String.format(ERROR_MSG, encoding, dataType));
179178
}

java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/FloatDecoder.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,17 @@ public FloatDecoder(TSEncoding encodingType, TSDataType dataType) {
7171
throw new TsFileDecodingException(
7272
String.format("data type %s is not supported by FloatDecoder", dataType));
7373
}
74+
} else if (encodingType == TSEncoding.RLBE) {
75+
if (dataType == TSDataType.FLOAT) {
76+
decoder = new IntRLBEDecoder();
77+
logger.debug("tsfile-encoding FloatDecoder: init decoder using int-rlbe and float");
78+
} else if (dataType == TSDataType.DOUBLE) {
79+
decoder = new LongRLBEDecoder();
80+
logger.debug("tsfile-encoding FloatDecoder: init decoder using long-rlbe and double");
81+
} else {
82+
throw new TsFileDecodingException(
83+
String.format("data type %s is not supported by FloatDecoder", dataType));
84+
}
7485
} else {
7586
throw new TsFileDecodingException(
7687
String.format("%s encoding is not supported by FloatDecoder", encodingType));

java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/FloatEncoder.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,15 @@ public FloatEncoder(TSEncoding encodingType, TSDataType dataType, int maxPointNu
7272
throw new TsFileEncodingException(
7373
String.format("data type %s is not supported by FloatEncoder", dataType));
7474
}
75+
} else if (encodingType == TSEncoding.RLBE) {
76+
if (dataType == TSDataType.FLOAT) {
77+
encoder = new IntRLBE();
78+
} else if (dataType == TSDataType.DOUBLE) {
79+
encoder = new LongRLBE();
80+
} else {
81+
throw new TsFileEncodingException(
82+
String.format("data type %s is not supported by FloatEncoder", dataType));
83+
}
7584
} else {
7685
throw new TsFileEncodingException(
7786
String.format("%s encoding is not supported by FloatEncoder", encodingType));

java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/TSEncodingBuilder.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,9 @@ public void initFromProps(Map<String, String> props) {
341341
}
342342

343343
public static class RLBE extends TSEncodingBuilder {
344+
345+
private int maxPointNumber = 0;
346+
344347
@Override
345348
public Encoder getEncoder(TSDataType type) {
346349
switch (type) {
@@ -351,9 +354,8 @@ public Encoder getEncoder(TSDataType type) {
351354
case TIMESTAMP:
352355
return new LongRLBE();
353356
case FLOAT:
354-
return new FloatRLBE();
355357
case DOUBLE:
356-
return new DoubleRLBE();
358+
return new FloatEncoder(TSEncoding.RLBE, type, maxPointNumber);
357359
default:
358360
throw new UnSupportedDataTypeException("RLBE doesn't support data type: " + type);
359361
}

0 commit comments

Comments
 (0)