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 be83a2851..36c3d8261 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,8 +171,9 @@ public static Decoder getDecoderByType(TSEncoding encoding, TSDataType dataType) case TIMESTAMP: return new LongRLBEDecoder(); case FLOAT: + return new FloatRLBEDecoder(); case DOUBLE: - return new FloatDecoder(TSEncoding.valueOf(encoding.toString()), dataType); + return new DoubleRLBEDecoder(); default: throw new TsFileDecodingException(String.format(ERROR_MSG, encoding, dataType)); } 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 188894386..01b1daa80 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 @@ -342,8 +342,6 @@ public void initFromProps(Map props) { public static class RLBE extends TSEncodingBuilder { - private int maxPointNumber = 0; - @Override public Encoder getEncoder(TSDataType type) { switch (type) { @@ -354,8 +352,9 @@ public Encoder getEncoder(TSDataType type) { case TIMESTAMP: return new LongRLBE(); case FLOAT: + return new FloatRLBE(); case DOUBLE: - return new FloatEncoder(TSEncoding.RLBE, type, maxPointNumber); + return new DoubleRLBE(); default: throw new UnSupportedDataTypeException("RLBE doesn't support data type: " + type); } diff --git a/java/tsfile/src/test/java/org/apache/tsfile/encoding/decoder/RLBEDecoderTest.java b/java/tsfile/src/test/java/org/apache/tsfile/encoding/decoder/RLBEDecoderTest.java index cc5e1fee6..c212f2a26 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/encoding/decoder/RLBEDecoderTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/encoding/decoder/RLBEDecoderTest.java @@ -18,10 +18,12 @@ */ package org.apache.tsfile.encoding.decoder; -import org.apache.tsfile.encoding.encoder.DoublePrecisionEncoderV1; import org.apache.tsfile.encoding.encoder.DoubleRLBE; import org.apache.tsfile.encoding.encoder.Encoder; import org.apache.tsfile.encoding.encoder.FloatRLBE; +import org.apache.tsfile.encoding.encoder.TSEncodingBuilder; +import org.apache.tsfile.enums.TSDataType; +import org.apache.tsfile.file.metadata.enums.TSEncoding; import org.junit.After; import org.junit.Before; @@ -179,7 +181,8 @@ public void testFloat() throws IOException { @Test public void testDouble() throws IOException { - Encoder encoder = new DoublePrecisionEncoderV1(); + Encoder encoder = + TSEncodingBuilder.RLBE.getEncodingBuilder(TSEncoding.RLBE).getEncoder(TSDataType.DOUBLE); ByteArrayOutputStream baos = new ByteArrayOutputStream(); double value = 7.101f; int num = 1000; @@ -188,7 +191,7 @@ public void testDouble() throws IOException { } encoder.flush(baos); ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray()); - Decoder decoder = new DoublePrecisionDecoderV1(); + Decoder decoder = Decoder.getDecoderByType(TSEncoding.RLBE, TSDataType.DOUBLE); for (int i = 0; i < num; i++) { if (decoder.hasNext(buffer)) { assertEquals(value + 2 * i, decoder.readDouble(buffer), delta); @@ -228,7 +231,8 @@ private void testFloatLength(List valueList, boolean isDebug, int repeatC private void testDoubleLength(List valueList, boolean isDebug, int repeatCount) throws Exception { - Encoder encoder = new DoublePrecisionEncoderV1(); + Encoder encoder = + TSEncodingBuilder.RLBE.getEncodingBuilder(TSEncoding.RLBE).getEncoder(TSDataType.DOUBLE); ByteArrayOutputStream baos = new ByteArrayOutputStream(); for (int i = 0; i < repeatCount; i++) { for (double value : valueList) { @@ -240,7 +244,7 @@ private void testDoubleLength(List valueList, boolean isDebug, int repea ByteBuffer buffer = ByteBuffer.wrap(baos.toByteArray()); for (int i = 0; i < repeatCount; i++) { - Decoder decoder = new DoublePrecisionDecoderV1(); + Decoder decoder = Decoder.getDecoderByType(TSEncoding.RLBE, TSDataType.DOUBLE); for (double value : valueList) { if (decoder.hasNext(buffer)) { double value_ = decoder.readDouble(buffer); diff --git a/pom.xml b/pom.xml index f93d9f905..de857b159 100644 --- a/pom.xml +++ b/pom.xml @@ -668,7 +668,7 @@ Unix Makefiles venv/bin/ python3 - + @@ -687,7 +687,7 @@ Unix Makefiles venv/bin/ python3 - + @@ -706,7 +706,7 @@ Unix Makefiles venv/bin/ python3 - + @@ -724,7 +724,7 @@ Unix Makefiles venv/bin/ python3 - + @@ -742,7 +742,7 @@ Unix Makefiles venv/bin/ python3 - +