This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch iotdb in repository https://gitbox.apache.org/repos/asf/tsfile.git
commit 1f8da86332f45c901db4f2d6730d4a792bf789cd Author: Jiang Tian <[email protected]> AuthorDate: Mon Jul 8 12:24:30 2024 +0800 Fix encoder and decoder construction of RLBE (#162) --- .../java/org/apache/tsfile/encoding/decoder/Decoder.java | 3 ++- .../apache/tsfile/encoding/encoder/TSEncodingBuilder.java | 5 ++--- .../apache/tsfile/encoding/decoder/RLBEDecoderTest.java | 14 +++++++++----- pom.xml | 10 +++++----- 4 files changed, 18 insertions(+), 14 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 be83a285..36c3d826 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 abstract class Decoder { 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 18889438..01b1daa8 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 abstract class TSEncodingBuilder { public static class RLBE extends TSEncodingBuilder { - private int maxPointNumber = 0; - @Override public Encoder getEncoder(TSDataType type) { switch (type) { @@ -354,8 +352,9 @@ public abstract class TSEncodingBuilder { 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 cc5e1fee..c212f2a2 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 class RLBEDecoderTest { @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 class RLBEDecoderTest { } 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 @@ public class RLBEDecoderTest { private void testDoubleLength(List<Double> 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 @@ public class RLBEDecoderTest { 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 7cfd21ff..f50d00be 100644 --- a/pom.xml +++ b/pom.xml @@ -668,7 +668,7 @@ <cmake.generator>Unix Makefiles</cmake.generator> <python.venv.bin>venv/bin/</python.venv.bin> <python.exe.bin>python3</python.exe.bin> - <python.compiler.argument></python.compiler.argument> + <python.compiler.argument/> </properties> </profile> <!-- Profile for linux amd64 (mainly AMD Processors) (Self-Enabling) --> @@ -687,7 +687,7 @@ <cmake.generator>Unix Makefiles</cmake.generator> <python.venv.bin>venv/bin/</python.venv.bin> <python.exe.bin>python3</python.exe.bin> - <python.compiler.argument></python.compiler.argument> + <python.compiler.argument/> </properties> </profile> <!-- Profile for linux aarch64 (mainly newer Mac or Raspberry PI Processors) (Self-Enabling) --> @@ -706,7 +706,7 @@ <cmake.generator>Unix Makefiles</cmake.generator> <python.venv.bin>venv/bin/</python.venv.bin> <python.exe.bin>python3</python.exe.bin> - <python.compiler.argument></python.compiler.argument> + <python.compiler.argument/> </properties> </profile> <!-- Profile for mac x86_64 (mainly Intel Processors) (Self-Enabling) --> @@ -724,7 +724,7 @@ <cmake.generator>Unix Makefiles</cmake.generator> <python.venv.bin>venv/bin/</python.venv.bin> <python.exe.bin>python3</python.exe.bin> - <python.compiler.argument></python.compiler.argument> + <python.compiler.argument/> </properties> </profile> <!-- Profile for mac aarch64 (mainly AMD Processors) (Self-Enabling) --> @@ -742,7 +742,7 @@ <cmake.generator>Unix Makefiles</cmake.generator> <python.venv.bin>venv/bin/</python.venv.bin> <python.exe.bin>python3</python.exe.bin> - <python.compiler.argument></python.compiler.argument> + <python.compiler.argument/> </properties> </profile> <!-- profile for windows x86_64 (mainly Intel Processors) (Self-Enabling) -->
