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 226862ff1..c3356fc55 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 int getInt() { 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 long getLong() { return value; } + @Override + public double getDouble() { + return (double) value; + } + @Override public void setLong(long val) { this.value = val; @@ -407,6 +427,11 @@ public float getFloat() { 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 9cffa9d00..50d54df6e 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 Chunk rewrite(TSDataType newType, Chunk timeChunk) throws IOException { 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 valueChunks = new ArrayList<>(); @@ -302,7 +303,7 @@ public Chunk rewrite(TSDataType newType, Chunk timeChunk) throws IOException { newChunkData.capacity(), newType, chunkHeader.getCompressionType(), - chunkHeader.getEncodingType()); + encoding); chunkData.flip(); timeChunk.chunkData.flip(); return new Chunk( @@ -317,12 +318,11 @@ public Chunk rewrite(TSDataType newType) throws IOException { 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 pages = chunkReader.loadPageReaderList(); @@ -374,7 +374,7 @@ public Chunk rewrite(TSDataType newType) throws IOException { newChunkData.capacity(), newType, chunkHeader.getCompressionType(), - chunkHeader.getEncodingType()); + encoding); chunkData.flip(); return new Chunk( newChunkHeader,