This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git
The following commit(s) were added to refs/heads/develop by this push:
new fcf3f8b6 fix rlbe (#143)
fcf3f8b6 is described below
commit fcf3f8b68c10a7125cb5bbb4bdda68b4999179e1
Author: gzh0806 <[email protected]>
AuthorDate: Tue Jul 2 11:27:05 2024 +0800
fix rlbe (#143)
---
.../main/java/org/apache/tsfile/encoding/decoder/Decoder.java | 3 +--
.../java/org/apache/tsfile/encoding/decoder/FloatDecoder.java | 11 +++++++++++
.../java/org/apache/tsfile/encoding/encoder/FloatEncoder.java | 9 +++++++++
.../org/apache/tsfile/encoding/encoder/TSEncodingBuilder.java | 6 ++++--
4 files changed, 25 insertions(+), 4 deletions(-)
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/Decoder.java
b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/Decoder.java
index 36c3d826..be83a285 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/Decoder.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/Decoder.java
@@ -171,9 +171,8 @@ public abstract class Decoder {
case TIMESTAMP:
return new LongRLBEDecoder();
case FLOAT:
- return new FloatRLBEDecoder();
case DOUBLE:
- return new DoubleRLBEDecoder();
+ return new FloatDecoder(TSEncoding.valueOf(encoding.toString()),
dataType);
default:
throw new TsFileDecodingException(String.format(ERROR_MSG,
encoding, dataType));
}
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/FloatDecoder.java
b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/FloatDecoder.java
index 505b8e69..5682e5ec 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/FloatDecoder.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/encoding/decoder/FloatDecoder.java
@@ -71,6 +71,17 @@ public class FloatDecoder extends Decoder {
throw new TsFileDecodingException(
String.format("data type %s is not supported by FloatDecoder",
dataType));
}
+ } else if (encodingType == TSEncoding.RLBE) {
+ if (dataType == TSDataType.FLOAT) {
+ decoder = new IntRLBEDecoder();
+ logger.debug("tsfile-encoding FloatDecoder: init decoder using
int-rlbe and float");
+ } else if (dataType == TSDataType.DOUBLE) {
+ decoder = new LongRLBEDecoder();
+ logger.debug("tsfile-encoding FloatDecoder: init decoder using
long-rlbe and double");
+ } else {
+ throw new TsFileDecodingException(
+ String.format("data type %s is not supported by FloatDecoder",
dataType));
+ }
} else {
throw new TsFileDecodingException(
String.format("%s encoding is not supported by FloatDecoder",
encodingType));
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/FloatEncoder.java
b/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/FloatEncoder.java
index 4655d3d6..4a79e3e6 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/FloatEncoder.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/FloatEncoder.java
@@ -72,6 +72,15 @@ public class FloatEncoder extends Encoder {
throw new TsFileEncodingException(
String.format("data type %s is not supported by FloatEncoder",
dataType));
}
+ } else if (encodingType == TSEncoding.RLBE) {
+ if (dataType == TSDataType.FLOAT) {
+ encoder = new IntRLBE();
+ } else if (dataType == TSDataType.DOUBLE) {
+ encoder = new LongRLBE();
+ } else {
+ throw new TsFileEncodingException(
+ String.format("data type %s is not supported by FloatEncoder",
dataType));
+ }
} else {
throw new TsFileEncodingException(
String.format("%s encoding is not supported by FloatEncoder",
encodingType));
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/TSEncodingBuilder.java
b/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/TSEncodingBuilder.java
index 232ddd3c..18889438 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/TSEncodingBuilder.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/encoding/encoder/TSEncodingBuilder.java
@@ -341,6 +341,9 @@ public abstract class TSEncodingBuilder {
}
public static class RLBE extends TSEncodingBuilder {
+
+ private int maxPointNumber = 0;
+
@Override
public Encoder getEncoder(TSDataType type) {
switch (type) {
@@ -351,9 +354,8 @@ public abstract class TSEncodingBuilder {
case TIMESTAMP:
return new LongRLBE();
case FLOAT:
- return new FloatRLBE();
case DOUBLE:
- return new DoubleRLBE();
+ return new FloatEncoder(TSEncoding.RLBE, type, maxPointNumber);
default:
throw new UnSupportedDataTypeException("RLBE doesn't support data
type: " + type);
}