This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch NewTsFile in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 6b8a0608187ca96c8a8df481cbcd836c32f7a3c2 Author: JackieTien97 <[email protected]> AuthorDate: Thu Nov 26 09:50:13 2020 +0800 next is to delete Edian type --- .../apache/iotdb/tsfile/TsFileSequenceRead.java | 5 ++- .../apache/iotdb/db/tools/TsFileSketchTool.java | 11 +------ .../tsfile/encoding/encoder/PlainEncoder.java | 1 + .../file/{footer => header}/ChunkGroupHeader.java | 2 +- .../iotdb/tsfile/file/header/package-info.java | 30 ------------------ .../iotdb/tsfile/file/metadata/ChunkMetadata.java | 22 +++++++------ .../tsfile/file/metadata/TimeseriesMetadata.java | 23 ++++++++++++-- .../tsfile/file/metadata/enums/TSEncoding.java | 36 ---------------------- .../iotdb/tsfile/read/TsFileSequenceReader.java | 9 ++---- .../tsfile/write/schema/MeasurementSchema.java | 2 +- .../iotdb/tsfile/write/writer/TsFileIOWriter.java | 22 +++++++------ .../tsfile/read/TsFileSequenceReaderTest.java | 5 ++- .../iotdb/tsfile/write/TsFileIOWriterTest.java | 19 ++++++------ 13 files changed, 66 insertions(+), 121 deletions(-) diff --git a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileSequenceRead.java b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileSequenceRead.java index 818ac3b..f837b4b 100644 --- a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileSequenceRead.java +++ b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileSequenceRead.java @@ -26,7 +26,7 @@ import org.apache.iotdb.tsfile.common.conf.TSFileConfig; import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor; import org.apache.iotdb.tsfile.encoding.decoder.Decoder; import org.apache.iotdb.tsfile.file.MetaMarker; -import org.apache.iotdb.tsfile.file.footer.ChunkGroupHeader; +import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader; import org.apache.iotdb.tsfile.file.header.ChunkHeader; import org.apache.iotdb.tsfile.file.header.PageHeader; import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata; @@ -55,8 +55,7 @@ public class TsFileSequenceRead { // first SeriesChunks (headers and data) in one ChunkGroup, then the CHUNK_GROUP_FOOTER // Because we do not know how many chunks a ChunkGroup may have, we should read one byte (the marker) ahead and // judge accordingly. - reader.position((long) TSFileConfig.MAGIC_STRING.getBytes().length + TSFileConfig.VERSION_NUMBER_V2 - .getBytes().length); + reader.position((long) TSFileConfig.MAGIC_STRING.getBytes().length + 1); System.out.println("[Chunk Group]"); System.out.println("position: " + reader.position()); byte marker; diff --git a/server/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java b/server/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java index ca1b26c..779fb56 100644 --- a/server/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java +++ b/server/src/main/java/org/apache/iotdb/db/tools/TsFileSketchTool.java @@ -28,7 +28,7 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; import org.apache.iotdb.tsfile.common.conf.TSFileConfig; -import org.apache.iotdb.tsfile.file.footer.ChunkGroupHeader; +import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader; import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata; import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata; import org.apache.iotdb.tsfile.file.metadata.MetadataIndexEntry; @@ -109,10 +109,6 @@ public class TsFileSketchTool { printlnBoth(pw, String.format("%20s", "") + "|\t\t[marker] 0"); printlnBoth(pw, String.format("%20s", "") + "|\t\t[deviceID] " + chunkGroupHeader.getDeviceID()); - printlnBoth(pw, - String.format("%20s", "") + "|\t\t[dataSize] " + chunkGroupHeader.getDataSize()); - printlnBoth(pw, String.format("%20s", "") + "|\t\t[num of chunks] " + chunkGroupHeader - .getNumberOfChunks()); printlnBoth(pw, str1.toString() + "\t[Chunk Group] of " + chunkGroupMetadata.getDevice() + " ends"); // versionInfo begins if there is a versionInfo @@ -166,11 +162,6 @@ public class TsFileSketchTool { printlnBoth(pw, String.format("%20s", "") + "|\t\t" + tsFileMetaData.getMetadataIndex().getChildren() .size() + " key&TsMetadataIndex"); - printlnBoth(pw, - String.format("%20s", "") + "|\t\t[totalChunkNum] " + tsFileMetaData.getTotalChunkNum()); - printlnBoth(pw, - String.format("%20s", "") + "|\t\t[invalidChunkNum] " + tsFileMetaData - .getInvalidChunkNum()); // bloom filter BloomFilter bloomFilter = tsFileMetaData.getBloomFilter(); diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/PlainEncoder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/PlainEncoder.java index d98d9c2..d30bcc8 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/PlainEncoder.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/PlainEncoder.java @@ -23,6 +23,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.math.BigDecimal; +import org.apache.iotdb.tsfile.utils.ReadWriteForEncodingUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/footer/ChunkGroupHeader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkGroupHeader.java similarity index 98% rename from tsfile/src/main/java/org/apache/iotdb/tsfile/file/footer/ChunkGroupHeader.java rename to tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkGroupHeader.java index 66afbd8..4b0a424 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/footer/ChunkGroupHeader.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkGroupHeader.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.iotdb.tsfile.file.footer; +package org.apache.iotdb.tsfile.file.header; import java.io.IOException; import java.io.InputStream; diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/package-info.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/package-info.java deleted file mode 100644 index 9c1701a..0000000 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/package-info.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.iotdb.tsfile.file.header; - -/** - * CHUNK_GROUP_FOOTER and CHUNK_HEADER are used for parsing file. - * - * ChunkGroupMetadata and ChunkMetadata are used for locating the positions of - * ChunkGroup (footer) and chunk (header),filtering data quickly, and thereby - * they have statistics information. - * - * However, because Page has only the header structure, therefore, PageHeader - * has the both two functions. - */ \ No newline at end of file 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 6f494b3..083c9e1 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 @@ -142,10 +142,12 @@ public class ChunkMetadata implements Accountable { * @return length * @throws IOException IOException */ - public int serializeTo(OutputStream outputStream) throws IOException { + public int serializeTo(OutputStream outputStream, boolean serializeStatistic) throws IOException { int byteLen = 0; byteLen += ReadWriteIOUtils.write(offsetOfChunkHeader, outputStream); - byteLen += statistics.serialize(outputStream); + if (serializeStatistic) { + byteLen += statistics.serialize(outputStream); + } return byteLen; } @@ -153,19 +155,19 @@ public class ChunkMetadata implements Accountable { * deserialize from ByteBuffer. * * @param buffer ByteBuffer - * @param measurementUid measurementUid of this chunk metadata - * @param tsDataType data type of this chunk metadata * @return ChunkMetaData object */ - public static ChunkMetadata deserializeFrom(ByteBuffer buffer, String measurementUid, - TSDataType tsDataType) { + public static ChunkMetadata deserializeFrom(ByteBuffer buffer, TimeseriesMetadata timeseriesMetadata) { ChunkMetadata chunkMetaData = new ChunkMetadata(); - chunkMetaData.measurementUid = measurementUid; - chunkMetaData.tsDataType = tsDataType; + chunkMetaData.measurementUid = timeseriesMetadata.getMeasurementId(); + chunkMetaData.tsDataType = timeseriesMetadata.getTSDataType(); chunkMetaData.offsetOfChunkHeader = ReadWriteIOUtils.readLong(buffer); - chunkMetaData.statistics = Statistics.deserialize(buffer, chunkMetaData.tsDataType); - + if (timeseriesMetadata.getTimeSeriesMetadataType() != 0) { + chunkMetaData.statistics = Statistics.deserialize(buffer, chunkMetaData.tsDataType); + } else { + chunkMetaData.statistics = timeseriesMetadata.getStatistics(); + } return chunkMetaData; } 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 6188e1d..99b89e0 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 @@ -32,6 +32,12 @@ import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; public class TimeseriesMetadata implements Accountable { + /** + * 0 means this time series has only one chunk, no need to save the statistic again in chunk metadata + * 1 means this time series has more than one chunk, should save the statistic again in chunk metadata + */ + private byte timeSeriesMetadataType; + private long startOffsetOfChunkMetaDataList; private int chunkMetaDataListDataSize; @@ -53,8 +59,10 @@ public class TimeseriesMetadata implements Accountable { public TimeseriesMetadata() { } - public TimeseriesMetadata(long startOffsetOfChunkMetaDataList, int chunkMetaDataListDataSize, - String measurementId, TSDataType dataType, Statistics statistics) { + public TimeseriesMetadata(byte timeSeriesMetadataType, long startOffsetOfChunkMetaDataList, + int chunkMetaDataListDataSize, String measurementId, TSDataType dataType, + Statistics statistics) { + this.timeSeriesMetadataType = timeSeriesMetadataType; this.startOffsetOfChunkMetaDataList = startOffsetOfChunkMetaDataList; this.chunkMetaDataListDataSize = chunkMetaDataListDataSize; this.measurementId = measurementId; @@ -63,6 +71,7 @@ public class TimeseriesMetadata implements Accountable { } public TimeseriesMetadata(TimeseriesMetadata timeseriesMetadata) { + this.timeSeriesMetadataType = timeseriesMetadata.timeSeriesMetadataType; this.startOffsetOfChunkMetaDataList = timeseriesMetadata.startOffsetOfChunkMetaDataList; this.chunkMetaDataListDataSize = timeseriesMetadata.chunkMetaDataListDataSize; this.measurementId = timeseriesMetadata.measurementId; @@ -73,6 +82,7 @@ public class TimeseriesMetadata implements Accountable { public static TimeseriesMetadata deserializeFrom(ByteBuffer buffer) { TimeseriesMetadata timeseriesMetaData = new TimeseriesMetadata(); + timeseriesMetaData.setTimeSeriesMetadataType(ReadWriteIOUtils.readByte(buffer)); timeseriesMetaData.setMeasurementId(ReadWriteIOUtils.readString(buffer)); timeseriesMetaData.setTSDataType(ReadWriteIOUtils.readDataType(buffer)); timeseriesMetaData.setOffsetOfChunkMetaDataList(ReadWriteIOUtils.readLong(buffer)); @@ -91,6 +101,7 @@ public class TimeseriesMetadata implements Accountable { */ public int serializeTo(OutputStream outputStream) throws IOException { int byteLen = 0; + byteLen += ReadWriteIOUtils.write(timeSeriesMetadataType, outputStream); byteLen += ReadWriteIOUtils.write(measurementId, outputStream); byteLen += ReadWriteIOUtils.write(dataType, outputStream); byteLen += ReadWriteIOUtils.write(startOffsetOfChunkMetaDataList, outputStream); @@ -100,6 +111,14 @@ public class TimeseriesMetadata implements Accountable { return byteLen; } + public byte getTimeSeriesMetadataType() { + return timeSeriesMetadataType; + } + + public void setTimeSeriesMetadataType(byte timeSeriesMetadataType) { + this.timeSeriesMetadataType = timeSeriesMetadataType; + } + public long getOffsetOfChunkMetaDataList() { return startOffsetOfChunkMetaDataList; } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/TSEncoding.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/TSEncoding.java index 9232fb9..0d2a5ea 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/TSEncoding.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/enums/TSEncoding.java @@ -54,42 +54,6 @@ public enum TSEncoding { } } - private static TSEncoding getTsEncoding(byte encoding) { - if (encoding < 0 || 8 < encoding) { - throw new IllegalArgumentException("Invalid input: " + encoding); - } - switch (encoding) { - case 1: - return PLAIN_DICTIONARY; - case 2: - return RLE; - case 3: - return DIFF; - case 4: - return TS_2DIFF; - case 5: - return BITMAP; - case 6: - return GORILLA_V1; - case 7: - return REGULAR; - case 8: - return GORILLA; - default: - return PLAIN; - } - } - - /** - * give an byte to return a encoding type. - * - * @param encoding byte number - * @return encoding type - */ - public static TSEncoding byteToEnum(byte encoding) { - return getTsEncoding(encoding); - } - public static int getSerializedSize() { return Byte.BYTES; } 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 16e2b71..fd3e50a 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 @@ -39,7 +39,7 @@ import org.apache.iotdb.tsfile.common.conf.TSFileConfig; import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor; import org.apache.iotdb.tsfile.compress.IUnCompressor; import org.apache.iotdb.tsfile.file.MetaMarker; -import org.apache.iotdb.tsfile.file.footer.ChunkGroupHeader; +import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader; import org.apache.iotdb.tsfile.file.header.ChunkHeader; import org.apache.iotdb.tsfile.file.header.PageHeader; import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata; @@ -513,8 +513,7 @@ public class TsFileSequenceReader implements AutoCloseable { curSize += timeseriesMetadataMap.get(index).getDataSizeOfChunkMetaDataList(); } ChunkMetadata chunkMetadata = ChunkMetadata - .deserializeFrom(buffer, timeseriesMetadataMap.get(index).getMeasurementId(), - timeseriesMetadataMap.get(index).getTSDataType()); + .deserializeFrom(buffer, timeseriesMetadataMap.get(index)); seriesMetadata.computeIfAbsent(chunkMetadata.getMeasurementUid(), key -> new ArrayList<>()) .add(chunkMetadata); } @@ -1041,9 +1040,7 @@ public class TsFileSequenceReader implements AutoCloseable { ByteBuffer buffer = readData(startOffsetOfChunkMetadataList, dataSizeOfChunkMetadataList); while (buffer.hasRemaining()) { - chunkMetadataList.add(ChunkMetadata - .deserializeFrom(buffer, timeseriesMetaData.getMeasurementId(), - timeseriesMetaData.getTSDataType())); + chunkMetadataList.add(ChunkMetadata.deserializeFrom(buffer, timeseriesMetaData)); } VersionUtils.applyVersion(chunkMetadataList, versionInfo); diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java index 4ec4a23..18127d2 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java @@ -174,7 +174,7 @@ public class MeasurementSchema implements Comparable<MeasurementSchema>, Seriali } public TSEncoding getEncodingType() { - return TSEncoding.byteToEnum(encoding); + return TSEncoding.deserialize(encoding); } public TSDataType getType() { 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 3c83308..c7eefe0 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 @@ -30,7 +30,7 @@ import java.util.TreeMap; import org.apache.iotdb.tsfile.common.conf.TSFileConfig; import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor; import org.apache.iotdb.tsfile.file.MetaMarker; -import org.apache.iotdb.tsfile.file.footer.ChunkGroupHeader; +import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader; import org.apache.iotdb.tsfile.file.header.ChunkHeader; import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata; import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata; @@ -84,7 +84,7 @@ public class TsFileIOWriter { private long markedPosition; private String currentChunkGroupDeviceId; protected List<Pair<Long, Long>> versionInfo = new ArrayList<>(); - + // for upgrade tool Map<String, List<TimeseriesMetadata>> deviceTimeseriesMetadataMap; @@ -153,7 +153,8 @@ public class TsFileIOWriter { if (currentChunkGroupDeviceId == null || chunkMetadataList.isEmpty()) { return; } - chunkGroupMetadataList.add(new ChunkGroupMetadata(currentChunkGroupDeviceId, chunkMetadataList)); + chunkGroupMetadataList + .add(new ChunkGroupMetadata(currentChunkGroupDeviceId, chunkMetadataList)); currentChunkGroupDeviceId = null; chunkMetadataList = null; out.flush(); @@ -162,11 +163,11 @@ public class TsFileIOWriter { /** * start a {@linkplain ChunkMetadata ChunkMetaData}. * - * @param measurementSchema - schema of this time series + * @param measurementSchema - schema of this time series * @param compressionCodecName - compression name of this time series - * @param tsDataType - data type - * @param statistics - Chunk statistics - * @param dataSize - the serialized size of all pages + * @param tsDataType - data type + * @param statistics - Chunk statistics + * @param dataSize - the serialized size of all pages * @throws IOException if I/O error occurs */ public void startFlushChunk(MeasurementSchema measurementSchema, @@ -285,15 +286,18 @@ public class TsFileIOWriter { Statistics seriesStatistics = Statistics.getStatsByType(dataType); int chunkMetadataListLength = 0; + boolean serializeStatistic = (entry.getValue().size() > 1); // flush chunkMetadataList one by one for (ChunkMetadata chunkMetadata : entry.getValue()) { if (!chunkMetadata.getDataType().equals(dataType)) { continue; } - chunkMetadataListLength += chunkMetadata.serializeTo(out.wrapAsStream()); + chunkMetadataListLength += chunkMetadata + .serializeTo(out.wrapAsStream(), serializeStatistic); seriesStatistics.mergeStatistics(chunkMetadata.getStatistics()); } - TimeseriesMetadata timeseriesMetadata = new TimeseriesMetadata(offsetOfChunkMetadataList, + TimeseriesMetadata timeseriesMetadata = new TimeseriesMetadata( + serializeStatistic ? (byte) 1 : (byte) 0, offsetOfChunkMetadataList, chunkMetadataListLength, path.getMeasurement(), dataType, seriesStatistics); deviceTimeseriesMetadataMap.computeIfAbsent(device, k -> new ArrayList<>()) .add(timeseriesMetadata); diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTest.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTest.java index 97a7a33..bb86168 100644 --- a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTest.java +++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TsFileSequenceReaderTest.java @@ -30,7 +30,7 @@ import java.util.Set; import java.util.stream.Collectors; import org.apache.iotdb.tsfile.common.conf.TSFileConfig; import org.apache.iotdb.tsfile.file.MetaMarker; -import org.apache.iotdb.tsfile.file.footer.ChunkGroupHeader; +import org.apache.iotdb.tsfile.file.header.ChunkGroupHeader; import org.apache.iotdb.tsfile.file.header.ChunkHeader; import org.apache.iotdb.tsfile.file.header.PageHeader; import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata; @@ -64,8 +64,7 @@ public class TsFileSequenceReaderTest { @Test public void testReadTsFileSequently() throws IOException { TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH); - reader.position(TSFileConfig.MAGIC_STRING.getBytes().length + TSFileConfig.VERSION_NUMBER_V2 - .getBytes().length); + reader.position(TSFileConfig.MAGIC_STRING.getBytes().length + 1); Map<String, List<Pair<Long, Long>>> deviceChunkGroupMetadataOffsets = new HashMap<>(); long startOffset = reader.position(); diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileIOWriterTest.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileIOWriterTest.java index a5bb8e6..61e4786 100644 --- a/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileIOWriterTest.java +++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/write/TsFileIOWriterTest.java @@ -23,7 +23,7 @@ import java.io.IOException; import org.apache.iotdb.tsfile.common.conf.TSFileConfig; import org.apache.iotdb.tsfile.constant.TestConstant; import org.apache.iotdb.tsfile.file.MetaMarker; -import org.apache.iotdb.tsfile.file.footer.ChunkGroupHeader; +import org.apache.iotdb.tsfile.file.footer.ChunkGroupFooter; import org.apache.iotdb.tsfile.file.header.ChunkHeader; import org.apache.iotdb.tsfile.file.metadata.TimeSeriesMetadataTest; import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata; @@ -84,21 +84,20 @@ public class TsFileIOWriterTest { // magic_string Assert.assertEquals(TSFileConfig.MAGIC_STRING, reader.readHeadMagic()); - Assert.assertEquals(TSFileConfig.VERSION_NUMBER_V2, reader.readVersionNumber()); + Assert.assertEquals(TSFileConfig.VERSION_NUMBER, reader.readVersionNumber()); Assert.assertEquals(TSFileConfig.MAGIC_STRING, reader.readTailMagic()); - // chunk group header - Assert.assertEquals(MetaMarker.CHUNK_GROUP_HEADER, reader.readMarker()); - ChunkGroupHeader chunkGroupHeader = reader.readChunkGroupFooter(); - Assert.assertEquals(deviceId, chunkGroupHeader.getDeviceID()); - // chunk header - reader.position(TSFileConfig.MAGIC_STRING.getBytes().length + TSFileConfig.VERSION_NUMBER_V2 + reader.position(TSFileConfig.MAGIC_STRING.getBytes().length + TSFileConfig.VERSION_NUMBER .getBytes().length); - Assert.assertEquals(MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER, reader.readMarker()); - ChunkHeader header = reader.readChunkHeader(MetaMarker.ONLY_ONE_PAGE_CHUNK_HEADER); + Assert.assertEquals(MetaMarker.CHUNK_HEADER, reader.readMarker()); + ChunkHeader header = reader.readChunkHeader(); Assert.assertEquals(TimeSeriesMetadataTest.measurementUID, header.getMeasurementID()); + // chunk group footer + Assert.assertEquals(MetaMarker.CHUNK_GROUP_FOOTER, reader.readMarker()); + ChunkGroupFooter footer = reader.readChunkGroupFooter(); + Assert.assertEquals(deviceId, footer.getDeviceID()); // separator Assert.assertEquals(MetaMarker.VERSION, reader.readMarker());
