This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch jira599
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 9848f4cb8a868ba966ab7a1f003e6f068803ec61
Author: HTHou <[email protected]>
AuthorDate: Fri May 8 11:24:40 2020 +0800

    fix TsFileSketchTool
---
 .../apache/iotdb/db/tools/TsFileSketchTool.java    | 63 ++++++++++------------
 .../file/metadata/statistics/BinaryStatistics.java |  2 +-
 .../iotdb/tsfile/read/TsFileSequenceReader.java    |  5 +-
 3 files changed, 33 insertions(+), 37 deletions(-)

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 ba5651a..3507f8e 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
@@ -22,12 +22,14 @@ package org.apache.iotdb.db.tools;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
 import org.apache.iotdb.tsfile.file.footer.ChunkGroupFooter;
+import org.apache.iotdb.tsfile.file.metadata.ChunkGroupMetadata;
 import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
 import org.apache.iotdb.tsfile.file.metadata.MetadataIndexEntry;
 import org.apache.iotdb.tsfile.file.metadata.TsFileMetadata;
@@ -59,13 +61,8 @@ public class TsFileSketchTool {
       // get metadata information
       TsFileSequenceReader reader = new TsFileSequenceReader(filename);
       TsFileMetadata tsFileMetaData = reader.readFileMetadata();
-      List<String> devices = reader.getAllDevices();
-      Map<String, Map<String, List<ChunkMetadata>>> tsDeviceSeriesMetadataMap 
= new LinkedHashMap<>();
-      for (String deviceId : devices) {
-        Map<String, List<ChunkMetadata>> seriesMetadataMap = reader
-            .readChunkMetadataInDevice(deviceId);
-        tsDeviceSeriesMetadataMap.put(deviceId, seriesMetadataMap);
-      }
+      List<ChunkGroupMetadata> allChunkGroupMetadata = new ArrayList<>();
+      reader.selfCheck(null, allChunkGroupMetadata, new ArrayList<>(), false);
 
       // begin print
       StringBuilder str1 = new StringBuilder();
@@ -81,30 +78,27 @@ public class TsFileSketchTool {
           String.format("%20d", TSFileConfig.MAGIC_STRING.getBytes().length)
               + "|\t[version number] "
               + reader.readVersionNumber());
-      // device begins
-      for (Entry<String, Map<String, List<ChunkMetadata>>> entry : 
tsDeviceSeriesMetadataMap
-          .entrySet()) {
-        printlnBoth(pw, str1.toString() + "\t[Chunks] of " + entry.getKey() +
-            ", num of Chunks:" + entry.getValue().size());
+      // ChunkGroup begins
+      for (ChunkGroupMetadata chunkGroupMetadata : allChunkGroupMetadata) {
+        printlnBoth(pw, str1.toString() + "\t[ChunkGroup] of " + 
chunkGroupMetadata.getDevice() +
+            ", num of Chunks:" + 
chunkGroupMetadata.getChunkMetadataList().size());
         // chunk begins
         long chunkEndPos = 0;
-        for (Entry<String, List<ChunkMetadata>> seriesMetadata : 
entry.getValue().entrySet()) {
-          for (ChunkMetadata chunkMetaData : seriesMetadata.getValue()) {
-            printlnBoth(pw,
-                String.format("%20d", chunkMetaData.getOffsetOfChunkHeader()) 
+ "|\t[Chunk] of "
-                    + chunkMetaData.getMeasurementUid() + ", numOfPoints:" + 
chunkMetaData
-                    .getNumOfPoints() + ", time range:[" + 
chunkMetaData.getStartTime() + ","
-                    + chunkMetaData.getEndTime() + "], tsDataType:" + 
chunkMetaData.getDataType()
-                    + ", \n" + String.format("%20s", "") + " \t" + 
chunkMetaData.getStatistics());
-            printlnBoth(pw, String.format("%20s", "") + "|\t\t[marker] 1");
-            printlnBoth(pw, String.format("%20s", "") + "|\t\t[ChunkHeader]");
-            Chunk chunk = reader.readMemChunk(chunkMetaData);
-            printlnBoth(pw,
-                String.format("%20s", "") + "|\t\t" + 
chunk.getHeader().getNumOfPages() + " pages");
-            chunkEndPos =
-                chunkMetaData.getOffsetOfChunkHeader() + 
chunk.getHeader().getSerializedSize()
-                    + chunk.getHeader().getDataSize();
-          }
+        for (ChunkMetadata chunkMetadata : 
chunkGroupMetadata.getChunkMetadataList()) {
+          printlnBoth(pw,
+              String.format("%20d", chunkMetadata.getOffsetOfChunkHeader()) + 
"|\t[Chunk] of "
+                  + chunkMetadata.getMeasurementUid() + ", numOfPoints:" + 
chunkMetadata
+                  .getNumOfPoints() + ", time range:[" + 
chunkMetadata.getStartTime() + ","
+                  + chunkMetadata.getEndTime() + "], tsDataType:" + 
chunkMetadata.getDataType()
+                  + ", \n" + String.format("%20s", "") + " \t" + 
chunkMetadata.getStatistics());
+          printlnBoth(pw, String.format("%20s", "") + "|\t\t[marker] 1");
+          printlnBoth(pw, String.format("%20s", "") + "|\t\t[ChunkHeader]");
+          Chunk chunk = reader.readMemChunk(chunkMetadata);
+          printlnBoth(pw,
+              String.format("%20s", "") + "|\t\t" + 
chunk.getHeader().getNumOfPages() + " pages");
+          chunkEndPos =
+              chunkMetadata.getOffsetOfChunkHeader() + 
chunk.getHeader().getSerializedSize()
+                  + chunk.getHeader().getDataSize();
         }
         // chunkGroupFooter begins
         printlnBoth(pw, String.format("%20s", chunkEndPos) + "|\t[Chunk Group 
Footer]");
@@ -116,8 +110,8 @@ public class TsFileSketchTool {
             String.format("%20s", "") + "|\t\t[dataSize] " + 
chunkGroupFooter.getDataSize());
         printlnBoth(pw, String.format("%20s", "") + "|\t\t[num of chunks] " + 
chunkGroupFooter
             .getNumberOfChunks());
-        printlnBoth(pw, str1.toString() + "\t[Chunks] of "
-            + entry.getKey() + " ends");
+        printlnBoth(pw, str1.toString() + "\t[ChunkGroup] of "
+            + chunkGroupMetadata.getDevice() + " ends");
       }
 
       // metadata begins
@@ -125,14 +119,14 @@ public class TsFileSketchTool {
         printlnBoth(pw, String.format("%20s", reader.getFileMetadataPos() - 1) 
+ "|\t[marker] 2");
       } else {
         printlnBoth(pw,
-            String.format("%20s", reader.readFileMetadata().getMetaOffset() + 
"|\t[marker] 2"));
+            String.format("%20s", reader.readFileMetadata().getMetaOffset()) + 
"|\t[marker] 2");
       }
       for (MetadataIndexEntry metadataIndex : 
tsFileMetaData.getMetadataIndex().getChildren()) {
         printlnBoth(pw, String.format("%20s", metadataIndex.getOffset())
             + "|\t[MetadataIndex] of " + metadataIndex.getName());
       }
 
-      printlnBoth(pw, String.format("%20s", reader.getFileMetadataPos()) + 
"|\t[TsFileMetaData]");
+      printlnBoth(pw, String.format("%20s", reader.getFileMetadataPos()) + 
"|\t[TsFileMetadata]");
       printlnBoth(pw, String.format("%20s", "") + "|\t\t[num of devices] " + 
tsFileMetaData
           .getMetadataIndex().getChildren().size());
       printlnBoth(pw,
@@ -160,7 +154,7 @@ public class TsFileSketchTool {
 
       printlnBoth(pw,
           String.format("%20s", (reader.getFileMetadataPos() + 
reader.getFileMetadataSize()))
-              + "|\t[TsFileMetaDataSize] " + reader.getFileMetadataSize());
+              + "|\t[TsFileMetadataSize] " + reader.getFileMetadataSize());
 
       printlnBoth(pw,
           String.format("%20s", reader.getFileMetadataPos() + 
reader.getFileMetadataSize() + 4)
@@ -173,6 +167,7 @@ public class TsFileSketchTool {
 
       printlnBoth(pw,
           "---------------------------------- TsFile Sketch End 
----------------------------------");
+      reader.close();
     }
   }
 
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 40173b5..6ddd7b7 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
@@ -202,7 +202,7 @@ public class BinaryStatistics extends Statistics<Binary> {
 
   @Override
   public String toString() {
-    return super.toString() + " [fistValue:" + firstValue + ",lastValue:" + 
lastValue + "]";
+    return super.toString() + " [firstValue:" + firstValue + ",lastValue:" + 
lastValue + "]";
   }
 
 }
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 0bd8e92..bb66368 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
@@ -816,8 +816,9 @@ public class TsFileSequenceReader implements AutoCloseable {
    *
    * @param newSchema the schema on each time series in the file
    * @param chunkGroupMetadataList ChunkGroupMetadata List
-   * @param fastFinish if true and the file is complete, then newSchema and 
newMetaData parameter
-   * will be not modified.
+   * @param versionInfo version pair List
+   * @param fastFinish if true and the file is complete, then newSchema and 
chunkGroupMetadataList
+   * parameter will be not modified.
    * @return the position of the file that is fine. All data after the 
position in the file should
    * be truncated.
    */

Reply via email to