This is an automated email from the ASF dual-hosted git repository. qiaojialin pushed a commit to branch construct_timeseriesmetadata in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit febe16fb882cddb3ae0b3e14d544b0f853943db6 Author: qiaojialin <[email protected]> AuthorDate: Sat Jun 20 16:57:08 2020 +0800 change construct --- .../tsfile/file/metadata/TimeseriesMetadata.java | 21 +++++++++++++++------ .../iotdb/tsfile/write/writer/TsFileIOWriter.java | 14 ++++++-------- 2 files changed, 21 insertions(+), 14 deletions(-) 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 4893563..754d48b 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 @@ -35,7 +35,7 @@ public class TimeseriesMetadata implements Accountable { private int chunkMetaDataListDataSize; private String measurementId; - private TSDataType tsDataType; + private TSDataType dataType; private Statistics<?> statistics; @@ -49,11 +49,20 @@ public class TimeseriesMetadata implements Accountable { public TimeseriesMetadata() { } + public TimeseriesMetadata(long startOffsetOfChunkMetaDataList, int chunkMetaDataListDataSize, + String measurementId, TSDataType dataType, Statistics statistics) { + this.startOffsetOfChunkMetaDataList = startOffsetOfChunkMetaDataList; + this.chunkMetaDataListDataSize = chunkMetaDataListDataSize; + this.measurementId = measurementId; + this.dataType = dataType; + this.statistics = statistics; + } + public TimeseriesMetadata(TimeseriesMetadata timeseriesMetadata) { this.startOffsetOfChunkMetaDataList = timeseriesMetadata.startOffsetOfChunkMetaDataList; this.chunkMetaDataListDataSize = timeseriesMetadata.chunkMetaDataListDataSize; this.measurementId = timeseriesMetadata.measurementId; - this.tsDataType = timeseriesMetadata.tsDataType; + this.dataType = timeseriesMetadata.dataType; this.statistics = timeseriesMetadata.statistics; this.modified = timeseriesMetadata.modified; } @@ -64,7 +73,7 @@ public class TimeseriesMetadata implements Accountable { timeseriesMetaData.setTSDataType(ReadWriteIOUtils.readDataType(buffer)); timeseriesMetaData.setOffsetOfChunkMetaDataList(ReadWriteIOUtils.readLong(buffer)); timeseriesMetaData.setDataSizeOfChunkMetaDataList(ReadWriteIOUtils.readInt(buffer)); - timeseriesMetaData.setStatistics(Statistics.deserialize(buffer, timeseriesMetaData.tsDataType)); + timeseriesMetaData.setStatistics(Statistics.deserialize(buffer, timeseriesMetaData.dataType)); return timeseriesMetaData; } @@ -78,7 +87,7 @@ public class TimeseriesMetadata implements Accountable { public int serializeTo(OutputStream outputStream) throws IOException { int byteLen = 0; byteLen += ReadWriteIOUtils.write(measurementId, outputStream); - byteLen += ReadWriteIOUtils.write(tsDataType, outputStream); + byteLen += ReadWriteIOUtils.write(dataType, outputStream); byteLen += ReadWriteIOUtils.write(startOffsetOfChunkMetaDataList, outputStream); byteLen += ReadWriteIOUtils.write(chunkMetaDataListDataSize, outputStream); byteLen += statistics.serialize(outputStream); @@ -110,11 +119,11 @@ public class TimeseriesMetadata implements Accountable { } public TSDataType getTSDataType() { - return tsDataType; + return dataType; } public void setTSDataType(TSDataType tsDataType) { - this.tsDataType = tsDataType; + this.dataType = tsDataType; } public Statistics getStatistics() { 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 31e1146..edbf006 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 @@ -291,24 +291,22 @@ public class TsFileIOWriter { for (Map.Entry<Path, List<ChunkMetadata>> entry : chunkMetadataListMap.entrySet()) { Path path = entry.getKey(); String device = path.getDevice(); + // create TimeseriesMetaData - TimeseriesMetadata timeseriesMetaData = new TimeseriesMetadata(); - timeseriesMetaData.setMeasurementId(path.getMeasurement()); TSDataType dataType = entry.getValue().get(0).getDataType(); - timeseriesMetaData.setTSDataType(dataType); - timeseriesMetaData.setOffsetOfChunkMetaDataList(out.getPosition()); - + long offsetOfChunkMetadataList = out.getPosition(); Statistics seriesStatistics = Statistics.getStatsByType(dataType); + int chunkMetadataListLength = 0; // flush chunkMetadataList one by one for (ChunkMetadata chunkMetadata : entry.getValue()) { chunkMetadataListLength += chunkMetadata.serializeTo(out.wrapAsStream()); seriesStatistics.mergeStatistics(chunkMetadata.getStatistics()); } - timeseriesMetaData.setStatistics(seriesStatistics); - timeseriesMetaData.setDataSizeOfChunkMetaDataList(chunkMetadataListLength); + TimeseriesMetadata timeseriesMetadata = new TimeseriesMetadata(offsetOfChunkMetadataList, + chunkMetadataListLength, path.getMeasurement(), dataType, seriesStatistics); deviceTimeseriesMetadataMap.computeIfAbsent(device, k -> new ArrayList<>()) - .add(timeseriesMetaData); + .add(timeseriesMetadata); } // construct TsFileMetadata and return
