You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2021/09/28 01:20:03 UTC
[iotdb] branch master updated: [ISSUE-4047]: Generic type in
Statistics extend Serializable (#4048)
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 8e5519d [ISSUE-4047]: Generic type in Statistics extend Serializable (#4048)
8e5519d is described below
commit 8e5519d783001b866337fd1ab7fb4d666cd73e6b
Author: Wenjun Ruan <we...@apache.org>
AuthorDate: Tue Sep 28 09:19:38 2021 +0800
[ISSUE-4047]: Generic type in Statistics extend Serializable (#4048)
---
.../db/engine/storagegroup/TsFileResource.java | 5 ++--
.../iotdb/tsfile/file/header/PageHeader.java | 15 ++++++-----
.../iotdb/tsfile/file/metadata/ChunkMetadata.java | 13 +++++++---
.../iotdb/tsfile/file/metadata/IChunkMetadata.java | 3 ++-
.../tsfile/file/metadata/TimeseriesMetadata.java | 9 ++++---
.../file/metadata/statistics/BinaryStatistics.java | 2 +-
.../metadata/statistics/BooleanStatistics.java | 2 +-
.../file/metadata/statistics/DoubleStatistics.java | 2 +-
.../file/metadata/statistics/FloatStatistics.java | 2 +-
.../metadata/statistics/IntegerStatistics.java | 2 +-
.../file/metadata/statistics/LongStatistics.java | 2 +-
.../file/metadata/statistics/Statistics.java | 29 ++++++++++++----------
.../file/metadata/statistics/TimeStatistics.java | 4 +--
.../iotdb/tsfile/read/TsFileSequenceReader.java | 4 ++-
.../iotdb/tsfile/v2/file/header/PageHeaderV2.java | 5 ++--
.../tsfile/v2/file/metadata/ChunkMetadataV2.java | 3 ++-
.../v2/file/metadata/statistics/StatisticsV2.java | 14 +++++------
.../iotdb/tsfile/write/chunk/ChunkWriterImpl.java | 7 +++---
.../iotdb/tsfile/write/chunk/ValueChunkWriter.java | 3 ++-
.../apache/iotdb/tsfile/write/page/PageWriter.java | 5 ++--
.../iotdb/tsfile/write/page/ValuePageWriter.java | 5 ++--
.../iotdb/tsfile/write/writer/TsFileIOWriter.java | 3 ++-
.../tsfile/file/metadata/utils/TestHelper.java | 8 ++++--
23 files changed, 87 insertions(+), 60 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
index b6f07d9..46be2b9 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
@@ -51,6 +51,7 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.Serializable;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Paths;
@@ -237,7 +238,7 @@ public class TsFileResource {
}
if (timeTimeSeriesMetadata.getTSDataType() != null) {
if (timeTimeSeriesMetadata.getTSDataType() == TSDataType.VECTOR) {
- Statistics<?> timeStatistics =
+ Statistics<? extends Serializable> timeStatistics =
Statistics.getStatsByType(timeTimeSeriesMetadata.getTSDataType());
List<TimeseriesMetadata> valueTimeSeriesMetadataList = new ArrayList<>();
@@ -303,7 +304,7 @@ public class TsFileResource {
timeSeriesMetadata =
new VectorTimeSeriesMetadata(timeTimeSeriesMetadata, valueTimeSeriesMetadataList);
} else {
- Statistics<?> seriesStatistics =
+ Statistics<? extends Serializable> seriesStatistics =
Statistics.getStatsByType(timeTimeSeriesMetadata.getTSDataType());
// flush chunkMetadataList one by one
for (IChunkMetadata chunkMetadata : chunkMetadataList) {
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/PageHeader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/PageHeader.java
index 178a0a5..51c566f 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/PageHeader.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/PageHeader.java
@@ -26,16 +26,18 @@ import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.Serializable;
import java.nio.ByteBuffer;
public class PageHeader {
private int uncompressedSize;
private int compressedSize;
- private Statistics statistics;
+ private Statistics<? extends Serializable> statistics;
private boolean modified;
- public PageHeader(int uncompressedSize, int compressedSize, Statistics statistics) {
+ public PageHeader(
+ int uncompressedSize, int compressedSize, Statistics<? extends Serializable> statistics) {
this.uncompressedSize = uncompressedSize;
this.compressedSize = compressedSize;
this.statistics = statistics;
@@ -53,7 +55,7 @@ public class PageHeader {
InputStream inputStream, TSDataType dataType, boolean hasStatistic) throws IOException {
int uncompressedSize = ReadWriteForEncodingUtils.readUnsignedVarInt(inputStream);
int compressedSize = ReadWriteForEncodingUtils.readUnsignedVarInt(inputStream);
- Statistics statistics = null;
+ Statistics<? extends Serializable> statistics = null;
if (hasStatistic) {
statistics = Statistics.deserialize(inputStream, dataType);
}
@@ -63,11 +65,12 @@ public class PageHeader {
public static PageHeader deserializeFrom(ByteBuffer buffer, TSDataType dataType) {
int uncompressedSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
int compressedSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
- Statistics statistics = Statistics.deserialize(buffer, dataType);
+ Statistics<? extends Serializable> statistics = Statistics.deserialize(buffer, dataType);
return new PageHeader(uncompressedSize, compressedSize, statistics);
}
- public static PageHeader deserializeFrom(ByteBuffer buffer, Statistics chunkStatistic) {
+ public static PageHeader deserializeFrom(
+ ByteBuffer buffer, Statistics<? extends Serializable> chunkStatistic) {
int uncompressedSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
int compressedSize = ReadWriteForEncodingUtils.readUnsignedVarInt(buffer);
return new PageHeader(uncompressedSize, compressedSize, chunkStatistic);
@@ -93,7 +96,7 @@ public class PageHeader {
return statistics.getCount();
}
- public Statistics getStatistics() {
+ public Statistics<? extends Serializable> getStatistics() {
return statistics;
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadata.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadata.java
index 59d74fd..bbc4f6d 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadata.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadata.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.io.IOException;
import java.io.OutputStream;
+import java.io.Serializable;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -60,7 +61,7 @@ public class ChunkMetadata implements Accountable, IChunkMetadata {
/** ChunkLoader of metadata, used to create ChunkReaderWrap */
private IChunkLoader chunkLoader;
- private Statistics statistics;
+ private Statistics<? extends Serializable> statistics;
private boolean isFromOldTsFile = false;
@@ -85,7 +86,10 @@ public class ChunkMetadata implements Accountable, IChunkMetadata {
* @param statistics value statistics
*/
public ChunkMetadata(
- String measurementUid, TSDataType tsDataType, long fileOffset, Statistics statistics) {
+ String measurementUid,
+ TSDataType tsDataType,
+ long fileOffset,
+ Statistics<? extends Serializable> statistics) {
this.measurementUid = measurementUid;
this.tsDataType = tsDataType;
this.offsetOfChunkHeader = fileOffset;
@@ -118,7 +122,7 @@ public class ChunkMetadata implements Accountable, IChunkMetadata {
}
@Override
- public Statistics getStatistics() {
+ public Statistics<? extends Serializable> getStatistics() {
return statistics;
}
@@ -292,7 +296,8 @@ public class ChunkMetadata implements Accountable, IChunkMetadata {
}
public void mergeChunkMetadata(ChunkMetadata chunkMetadata) {
- this.statistics.mergeStatistics(chunkMetadata.getStatistics());
+ Statistics<? extends Serializable> statistics = chunkMetadata.getStatistics();
+ this.statistics.mergeStatistics(statistics);
this.ramSize = calculateRamSize();
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IChunkMetadata.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IChunkMetadata.java
index ace5afa..3893d15 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IChunkMetadata.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IChunkMetadata.java
@@ -26,11 +26,12 @@ import org.apache.iotdb.tsfile.read.controller.IChunkLoader;
import java.io.IOException;
import java.io.OutputStream;
+import java.io.Serializable;
import java.util.List;
public interface IChunkMetadata {
- Statistics getStatistics();
+ Statistics<? extends Serializable> getStatistics();
boolean isModified();
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadata.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadata.java
index aeca568..2881711 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadata.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TimeseriesMetadata.java
@@ -30,6 +30,7 @@ import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.io.IOException;
import java.io.OutputStream;
+import java.io.Serializable;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -56,7 +57,7 @@ public class TimeseriesMetadata implements Accountable, ITimeSeriesMetadata {
private String measurementId;
private TSDataType dataType;
- private Statistics<?> statistics;
+ private Statistics<? extends Serializable> statistics;
// modified is true when there are modifications of the series, or from unseq file
private boolean modified;
@@ -80,7 +81,7 @@ public class TimeseriesMetadata implements Accountable, ITimeSeriesMetadata {
int chunkMetaDataListDataSize,
String measurementId,
TSDataType dataType,
- Statistics statistics,
+ Statistics<? extends Serializable> statistics,
PublicBAOS chunkMetadataListBuffer) {
this.timeSeriesMetadataType = timeSeriesMetadataType;
this.chunkMetaDataListDataSize = chunkMetaDataListDataSize;
@@ -192,11 +193,11 @@ public class TimeseriesMetadata implements Accountable, ITimeSeriesMetadata {
}
@Override
- public Statistics getStatistics() {
+ public Statistics<? extends Serializable> getStatistics() {
return statistics;
}
- public void setStatistics(Statistics statistics) {
+ public void setStatistics(Statistics<? extends Serializable> statistics) {
this.statistics = statistics;
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BinaryStatistics.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BinaryStatistics.java
index 4641a01..593db6c 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BinaryStatistics.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BinaryStatistics.java
@@ -109,7 +109,7 @@ public class BinaryStatistics extends Statistics<Binary> {
}
@Override
- protected void mergeStatisticsValue(Statistics stats) {
+ protected void mergeStatisticsValue(Statistics<Binary> stats) {
BinaryStatistics stringStats = (BinaryStatistics) stats;
if (isEmpty) {
initializeStats(stringStats.getFirstValue(), stringStats.getLastValue());
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BooleanStatistics.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BooleanStatistics.java
index 484d846..83ed06f 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BooleanStatistics.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/BooleanStatistics.java
@@ -158,7 +158,7 @@ public class BooleanStatistics extends Statistics<Boolean> {
}
@Override
- protected void mergeStatisticsValue(Statistics stats) {
+ protected void mergeStatisticsValue(Statistics<Boolean> stats) {
BooleanStatistics boolStats = (BooleanStatistics) stats;
if (isEmpty) {
initializeStats(boolStats.getFirstValue(), boolStats.getLastValue(), boolStats.sumValue);
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/DoubleStatistics.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/DoubleStatistics.java
index 285946d..11d7dbd 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/DoubleStatistics.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/DoubleStatistics.java
@@ -161,7 +161,7 @@ public class DoubleStatistics extends Statistics<Double> {
}
@Override
- protected void mergeStatisticsValue(Statistics stats) {
+ protected void mergeStatisticsValue(Statistics<Double> stats) {
DoubleStatistics doubleStats = (DoubleStatistics) stats;
if (this.isEmpty) {
initializeStats(
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/FloatStatistics.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/FloatStatistics.java
index 45ba7ed..2870ed2 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/FloatStatistics.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/FloatStatistics.java
@@ -153,7 +153,7 @@ public class FloatStatistics extends Statistics<Float> {
}
@Override
- protected void mergeStatisticsValue(Statistics stats) {
+ protected void mergeStatisticsValue(Statistics<Float> stats) {
FloatStatistics floatStats = (FloatStatistics) stats;
if (isEmpty) {
initializeStats(
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/IntegerStatistics.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/IntegerStatistics.java
index f70d847..831a697 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/IntegerStatistics.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/IntegerStatistics.java
@@ -153,7 +153,7 @@ public class IntegerStatistics extends Statistics<Integer> {
}
@Override
- protected void mergeStatisticsValue(Statistics stats) {
+ protected void mergeStatisticsValue(Statistics<Integer> stats) {
IntegerStatistics intStats = (IntegerStatistics) stats;
if (isEmpty) {
initializeStats(
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/LongStatistics.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/LongStatistics.java
index e3dc70d..849bd41 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/LongStatistics.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/LongStatistics.java
@@ -162,7 +162,7 @@ public class LongStatistics extends Statistics<Long> {
}
@Override
- protected void mergeStatisticsValue(Statistics stats) {
+ protected void mergeStatisticsValue(Statistics<Long> stats) {
LongStatistics longStats = (LongStatistics) stats;
if (isEmpty) {
initializeStats(
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/Statistics.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/Statistics.java
index cd1abe1..abec0e7 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/Statistics.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/Statistics.java
@@ -31,6 +31,7 @@ import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.Serializable;
import java.nio.ByteBuffer;
import java.util.Objects;
@@ -43,7 +44,7 @@ import java.util.Objects;
* For the statistics in the Unseq file TimeSeriesMetadata, only firstValue, lastValue, startTime
* and endTime can be used.</br>
*/
-public abstract class Statistics<T> {
+public abstract class Statistics<T extends Serializable> {
private static final Logger LOG = LoggerFactory.getLogger(Statistics.class);
/**
@@ -63,7 +64,7 @@ public abstract class Statistics<T> {
* @param type - data type
* @return Statistics
*/
- public static Statistics getStatsByType(TSDataType type) {
+ public static Statistics<? extends Serializable> getStatsByType(TSDataType type) {
switch (type) {
case INT32:
return new IntegerStatistics();
@@ -171,7 +172,8 @@ public abstract class Statistics<T> {
*
* @throws StatisticsClassException cannot merge statistics
*/
- public void mergeStatistics(Statistics stats) {
+ @SuppressWarnings("unchecked")
+ public void mergeStatistics(Statistics<? extends Serializable> stats) {
if (this.getClass() == stats.getClass()) {
if (stats.startTime < this.startTime) {
this.startTime = stats.startTime;
@@ -181,14 +183,14 @@ public abstract class Statistics<T> {
}
// must be sure no overlap between two statistics
this.count += stats.count;
- mergeStatisticsValue(stats);
+ mergeStatisticsValue((Statistics<T>) stats);
isEmpty = false;
} else {
- String thisClass = this.getClass().toString();
- String statsClass = stats.getClass().toString();
+ Class<?> thisClass = this.getClass();
+ Class<?> statsClass = stats.getClass();
LOG.warn("Statistics classes mismatched,no merge: {} v.s. {}", thisClass, statsClass);
- throw new StatisticsClassException(this.getClass(), stats.getClass());
+ throw new StatisticsClassException(thisClass, statsClass);
}
}
@@ -272,7 +274,7 @@ public abstract class Statistics<T> {
count += batchSize;
}
- protected abstract void mergeStatisticsValue(Statistics stats);
+ protected abstract void mergeStatisticsValue(Statistics<T> stats);
public boolean isEmpty() {
return isEmpty;
@@ -341,9 +343,9 @@ public abstract class Statistics<T> {
throw new UnsupportedOperationException();
}
- public static Statistics deserialize(InputStream inputStream, TSDataType dataType)
- throws IOException {
- Statistics statistics = getStatsByType(dataType);
+ public static Statistics<? extends Serializable> deserialize(
+ InputStream inputStream, TSDataType dataType) throws IOException {
+ Statistics<? extends Serializable> statistics = getStatsByType(dataType);
statistics.setCount(ReadWriteForEncodingUtils.readUnsignedVarInt(inputStream));
statistics.setStartTime(ReadWriteIOUtils.readLong(inputStream));
statistics.setEndTime(ReadWriteIOUtils.readLong(inputStream));
@@ -352,8 +354,9 @@ public abstract class Statistics<T> {
return statistics;
}
- public static Statistics deserialize(ByteBuffer buffer, TSDataType dataType) {
- Statistics statistics = getStatsByType(dataType);
+ public static Statistics<? extends Serializable> deserialize(
+ ByteBuffer buffer, TSDataType dataType) {
+ Statistics<? extends Serializable> statistics = getStatsByType(dataType);
statistics.setCount(ReadWriteForEncodingUtils.readUnsignedVarInt(buffer));
statistics.setStartTime(ReadWriteIOUtils.readLong(buffer));
statistics.setEndTime(ReadWriteIOUtils.readLong(buffer));
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/TimeStatistics.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/TimeStatistics.java
index e812166..8ed2778 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/TimeStatistics.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/statistics/TimeStatistics.java
@@ -26,7 +26,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
-public class TimeStatistics extends Statistics {
+public class TimeStatistics extends Statistics<Long> {
static final int TIME_STATISTICS_FIXED_RAM_SIZE = 40;
@@ -96,7 +96,7 @@ public class TimeStatistics extends Statistics {
}
@Override
- protected void mergeStatisticsValue(Statistics stats) {}
+ protected void mergeStatisticsValue(Statistics<Long> stats) {}
@Override
public byte[] getMinValueBytes() {
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
index 16b1a2a..de7ead8 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
@@ -57,6 +57,7 @@ import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
+import java.io.Serializable;
import java.nio.BufferOverflowException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
@@ -1060,7 +1061,8 @@ public class TsFileSequenceReader implements AutoCloseable {
chunkHeader.getCompressionType());
measurementSchemaList.add(measurementSchema);
dataType = chunkHeader.getDataType();
- Statistics<?> chunkStatistics = Statistics.getStatsByType(dataType);
+ Statistics<? extends Serializable> chunkStatistics =
+ Statistics.getStatsByType(dataType);
int dataSize = chunkHeader.getDataSize();
if (((byte) (chunkHeader.getChunkType() & 0x3F)) == MetaMarker.CHUNK_HEADER) {
while (dataSize > 0) {
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/header/PageHeaderV2.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/header/PageHeaderV2.java
index 9302d64..6de0aba 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/header/PageHeaderV2.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/header/PageHeaderV2.java
@@ -26,6 +26,7 @@ import org.apache.iotdb.tsfile.v2.file.metadata.statistics.StatisticsV2;
import java.io.IOException;
import java.io.InputStream;
+import java.io.Serializable;
import java.nio.ByteBuffer;
public class PageHeaderV2 {
@@ -36,14 +37,14 @@ public class PageHeaderV2 {
throws IOException {
int uncompressedSize = ReadWriteIOUtils.readInt(inputStream);
int compressedSize = ReadWriteIOUtils.readInt(inputStream);
- Statistics<?> statistics = StatisticsV2.deserialize(inputStream, dataType);
+ Statistics<? extends Serializable> statistics = StatisticsV2.deserialize(inputStream, dataType);
return new PageHeader(uncompressedSize, compressedSize, statistics);
}
public static PageHeader deserializeFrom(ByteBuffer buffer, TSDataType dataType) {
int uncompressedSize = ReadWriteIOUtils.readInt(buffer);
int compressedSize = ReadWriteIOUtils.readInt(buffer);
- Statistics<?> statistics = StatisticsV2.deserialize(buffer, dataType);
+ Statistics<? extends Serializable> statistics = StatisticsV2.deserialize(buffer, dataType);
return new PageHeader(uncompressedSize, compressedSize, statistics);
}
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/metadata/ChunkMetadataV2.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/metadata/ChunkMetadataV2.java
index ae172c5..2b329d4 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/metadata/ChunkMetadataV2.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/metadata/ChunkMetadataV2.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import org.apache.iotdb.tsfile.v2.file.metadata.statistics.StatisticsV2;
+import java.io.Serializable;
import java.nio.ByteBuffer;
public class ChunkMetadataV2 {
@@ -42,7 +43,7 @@ public class ChunkMetadataV2 {
long offsetOfChunkHeader = ReadWriteIOUtils.readLong(buffer);
TSDataType tsDataType = TSDataType.deserialize((byte) ReadWriteIOUtils.readShort(buffer));
- Statistics<?> statistics = StatisticsV2.deserialize(buffer, tsDataType);
+ Statistics<? extends Serializable> statistics = StatisticsV2.deserialize(buffer, tsDataType);
ChunkMetadata chunkMetaData =
new ChunkMetadata(measurementUid, tsDataType, offsetOfChunkHeader, statistics);
chunkMetaData.setFromOldTsFile(true);
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/metadata/statistics/StatisticsV2.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/metadata/statistics/StatisticsV2.java
index 4bdd28c..24b06f7 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/metadata/statistics/StatisticsV2.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/v2/file/metadata/statistics/StatisticsV2.java
@@ -27,16 +27,16 @@ import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
import java.io.IOException;
import java.io.InputStream;
+import java.io.Serializable;
import java.nio.ByteBuffer;
public class StatisticsV2 {
private StatisticsV2() {}
- @SuppressWarnings("rawtypes")
- public static Statistics deserialize(InputStream inputStream, TSDataType dataType)
- throws IOException {
- Statistics<?> statistics = Statistics.getStatsByType(dataType);
+ public static Statistics<? extends Serializable> deserialize(
+ InputStream inputStream, TSDataType dataType) throws IOException {
+ Statistics<? extends Serializable> statistics = Statistics.getStatsByType(dataType);
statistics.setCount((int) ReadWriteIOUtils.readLong(inputStream));
statistics.setStartTime(ReadWriteIOUtils.readLong(inputStream));
statistics.setEndTime(ReadWriteIOUtils.readLong(inputStream));
@@ -68,9 +68,9 @@ public class StatisticsV2 {
return statistics;
}
- @SuppressWarnings("rawtypes")
- public static Statistics deserialize(ByteBuffer buffer, TSDataType dataType) {
- Statistics<?> statistics = Statistics.getStatsByType(dataType);
+ public static Statistics<? extends Serializable> deserialize(
+ ByteBuffer buffer, TSDataType dataType) {
+ Statistics<? extends Serializable> statistics = Statistics.getStatsByType(dataType);
statistics.setCount((int) ReadWriteIOUtils.readLong(buffer));
statistics.setStartTime(ReadWriteIOUtils.readLong(buffer));
statistics.setEndTime(ReadWriteIOUtils.readLong(buffer));
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java
index e66ed69..aed1bcb 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkWriterImpl.java
@@ -37,6 +37,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.io.Serializable;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.WritableByteChannel;
@@ -69,7 +70,7 @@ public class ChunkWriterImpl implements IChunkWriter {
private static final int MINIMUM_RECORD_COUNT_FOR_CHECK = 1500;
/** statistic of this chunk. */
- private Statistics<?> statistics;
+ private Statistics<? extends Serializable> statistics;
/** SDT parameters */
private boolean isSdtEncoding;
@@ -433,8 +434,8 @@ public class ChunkWriterImpl implements IChunkWriter {
* @param statistics the chunk statistics
* @throws IOException exception in IO
*/
- private void writeAllPagesOfChunkToTsFile(TsFileIOWriter writer, Statistics<?> statistics)
- throws IOException {
+ private void writeAllPagesOfChunkToTsFile(
+ TsFileIOWriter writer, Statistics<? extends Serializable> statistics) throws IOException {
if (statistics.getCount() == 0) {
return;
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ValueChunkWriter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ValueChunkWriter.java
index d117722..0860a2e 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ValueChunkWriter.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ValueChunkWriter.java
@@ -36,6 +36,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.io.Serializable;
public class ValueChunkWriter {
@@ -58,7 +59,7 @@ public class ValueChunkWriter {
private ValuePageWriter pageWriter;
/** statistic of this chunk. */
- private Statistics<?> statistics;
+ private Statistics<? extends Serializable> statistics;
/** first page info */
private int sizeWithoutStatistic;
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/PageWriter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/PageWriter.java
index 5fa9977..f003825 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/PageWriter.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/PageWriter.java
@@ -32,6 +32,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.io.Serializable;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.WritableByteChannel;
@@ -57,7 +58,7 @@ public class PageWriter {
* statistic of current page. It will be reset after calling {@code
* writePageHeaderAndDataIntoBuff()}
*/
- private Statistics<?> statistics;
+ private Statistics<? extends Serializable> statistics;
public PageWriter() {
this(null, null);
@@ -285,7 +286,7 @@ public class PageWriter {
return statistics.getCount();
}
- public Statistics<?> getStatistics() {
+ public Statistics<? extends Serializable> getStatistics() {
return statistics;
}
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/ValuePageWriter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/ValuePageWriter.java
index 0fbfdbd..3293cfd 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/ValuePageWriter.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/page/ValuePageWriter.java
@@ -31,6 +31,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.io.Serializable;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.WritableByteChannel;
@@ -52,7 +53,7 @@ public class ValuePageWriter {
* statistic of current page. It will be reset after calling {@code
* writePageHeaderAndDataIntoBuff()}
*/
- private Statistics<?> statistics;
+ private Statistics<? extends Serializable> statistics;
private byte bitmap;
@@ -297,7 +298,7 @@ public class ValuePageWriter {
return statistics.getCount();
}
- public Statistics<?> getStatistics() {
+ public Statistics<? extends Serializable> getStatistics() {
return statistics;
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
index 0a79c09..c402640 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
@@ -46,6 +46,7 @@ import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -191,7 +192,7 @@ public class TsFileIOWriter {
CompressionType compressionCodecName,
TSDataType tsDataType,
TSEncoding encodingType,
- Statistics<?> statistics,
+ Statistics<? extends Serializable> statistics,
int dataSize,
int numOfPages,
int mask)
diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/utils/TestHelper.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/utils/TestHelper.java
index 3e91a1b..657d73b 100644
--- a/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/utils/TestHelper.java
+++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/file/metadata/utils/TestHelper.java
@@ -31,6 +31,8 @@ import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
import org.apache.iotdb.tsfile.utils.PublicBAOS;
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+import java.io.Serializable;
+
public class TestHelper {
public static TsFileMetadata createSimpleFileMetaData() {
@@ -52,7 +54,8 @@ public class TestHelper {
}
public static TimeseriesMetadata createSimpleTimseriesMetaData(String measurementuid) {
- Statistics<?> statistics = Statistics.getStatsByType(PageHeaderTest.DATA_TYPE);
+ Statistics<? extends Serializable> statistics =
+ Statistics.getStatsByType(PageHeaderTest.DATA_TYPE);
statistics.setEmpty(false);
TimeseriesMetadata timeseriesMetaData = new TimeseriesMetadata();
timeseriesMetaData.setMeasurementId(measurementuid);
@@ -65,7 +68,8 @@ public class TestHelper {
}
public static PageHeader createTestPageHeader() {
- Statistics<?> statistics = Statistics.getStatsByType(PageHeaderTest.DATA_TYPE);
+ Statistics<? extends Serializable> statistics =
+ Statistics.getStatsByType(PageHeaderTest.DATA_TYPE);
statistics.setEmpty(false);
return new PageHeader(
PageHeaderTest.UNCOMPRESSED_SIZE, PageHeaderTest.COMPRESSED_SIZE, statistics);