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 a6581623 primitive type compatible (#437)
a6581623 is described below

commit a65816238884687fc4a8e7ec262df3b114e2194a
Author: jintao zhu <[email protected]>
AuthorDate: Tue Mar 11 11:34:46 2025 +0800

    primitive type compatible (#437)
    
    * TsPrimitiveType Compatible get function
    
    * encoding follow data type
---
 .../org/apache/tsfile/utils/TsPrimitiveType.java   | 25 ++++++++++++++++++++++
 .../java/org/apache/tsfile/read/common/Chunk.java  | 22 +++++++++----------
 2 files changed, 36 insertions(+), 11 deletions(-)

diff --git 
a/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java 
b/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java
index 226862ff..c3356fc5 100644
--- a/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java
+++ b/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java
@@ -263,6 +263,21 @@ public abstract class TsPrimitiveType implements 
Serializable {
       return value;
     }
 
+    @Override
+    public double getDouble() {
+      return (double) value;
+    }
+
+    @Override
+    public long getLong() {
+      return (long) value;
+    }
+
+    @Override
+    public float getFloat() {
+      return (float) value;
+    }
+
     @Override
     public void setInt(int val) {
       this.value = val;
@@ -335,6 +350,11 @@ public abstract class TsPrimitiveType implements 
Serializable {
       return value;
     }
 
+    @Override
+    public double getDouble() {
+      return (double) value;
+    }
+
     @Override
     public void setLong(long val) {
       this.value = val;
@@ -407,6 +427,11 @@ public abstract class TsPrimitiveType implements 
Serializable {
       return value;
     }
 
+    @Override
+    public double getDouble() {
+      return (double) value;
+    }
+
     @Override
     public void setFloat(float val) {
       this.value = val;
diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/common/Chunk.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/Chunk.java
index 9cffa9d0..50d54df6 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/Chunk.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/Chunk.java
@@ -19,11 +19,13 @@
 
 package org.apache.tsfile.read.common;
 
+import org.apache.tsfile.common.conf.TSFileDescriptor;
 import org.apache.tsfile.encrypt.EncryptParameter;
 import org.apache.tsfile.encrypt.EncryptUtils;
 import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.file.MetaMarker;
 import org.apache.tsfile.file.header.ChunkHeader;
+import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.apache.tsfile.file.metadata.statistics.Statistics;
 import org.apache.tsfile.read.TimeValuePair;
 import org.apache.tsfile.read.reader.IPageReader;
@@ -217,19 +219,18 @@ public class Chunk {
     if (newType == null || newType == chunkHeader.getDataType()) {
       return this;
     }
+    TSEncoding encoding =
+        
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder(newType));
     IMeasurementSchema schema =
         new MeasurementSchema(
-            chunkHeader.getMeasurementID(),
-            newType,
-            chunkHeader.getEncodingType(),
-            chunkHeader.getCompressionType());
+            chunkHeader.getMeasurementID(), newType, encoding, 
chunkHeader.getCompressionType());
 
     ValueChunkWriter chunkWriter =
         new ValueChunkWriter(
             chunkHeader.getMeasurementID(),
             chunkHeader.getCompressionType(),
             newType,
-            chunkHeader.getEncodingType(),
+            encoding,
             schema.getValueEncoder(),
             encryptParam);
     List<Chunk> valueChunks = new ArrayList<>();
@@ -302,7 +303,7 @@ public class Chunk {
             newChunkData.capacity(),
             newType,
             chunkHeader.getCompressionType(),
-            chunkHeader.getEncodingType());
+            encoding);
     chunkData.flip();
     timeChunk.chunkData.flip();
     return new Chunk(
@@ -317,12 +318,11 @@ public class Chunk {
     if (newType == null || newType == chunkHeader.getDataType()) {
       return this;
     }
+    TSEncoding encoding =
+        
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder(newType));
     IMeasurementSchema schema =
         new MeasurementSchema(
-            chunkHeader.getMeasurementID(),
-            newType,
-            chunkHeader.getEncodingType(),
-            chunkHeader.getCompressionType());
+            chunkHeader.getMeasurementID(), newType, encoding, 
chunkHeader.getCompressionType());
     ChunkWriterImpl chunkWriter = new ChunkWriterImpl(schema, encryptParam);
     ChunkReader chunkReader = new ChunkReader(this);
     List<IPageReader> pages = chunkReader.loadPageReaderList();
@@ -374,7 +374,7 @@ public class Chunk {
             newChunkData.capacity(),
             newType,
             chunkHeader.getCompressionType(),
-            chunkHeader.getEncodingType());
+            encoding);
     chunkData.flip();
     return new Chunk(
         newChunkHeader,

Reply via email to