You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tsfile.apache.org by ha...@apache.org on 2024/07/08 07:04:22 UTC
(tsfile) 02/03: Fix encoder and decoder construction of RLBE (#162)
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 <jt...@163.com>
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) -->