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

jackietien pushed a commit to branch 1.3.2-queryDebug
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 00435491ea95ea03bd24ec2f4a4026adf0246df7
Author: JackieTien97 <[email protected]>
AuthorDate: Thu Jul 11 11:02:12 2024 +0800

    supprt debug
---
 .mvn/.develocity/develocity-workspace-id           |  1 +
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |  2 +-
 .../fragment/FragmentInstanceManager.java          |  4 +
 .../execution/fragment/QueryContext.java           |  4 +
 .../execution/operator/source/FileLoaderUtils.java | 18 ++++-
 .../execution/operator/source/SeriesScanUtil.java  | 11 ++-
 .../db/queryengine/plan/analyze/Analysis.java      | 10 +++
 .../queryengine/plan/analyze/AnalyzeVisitor.java   |  2 +-
 .../planner/distribution/DistributionPlanner.java  |  3 +
 .../plan/planner/plan/FragmentInstance.java        | 12 +++
 .../plan/statement/crud/QueryStatement.java        | 12 +++
 .../schemaregion/utils/ResourceByPathUtils.java    | 36 ++++++++-
 .../dataregion/memtable/AbstractMemTable.java      | 34 +++++++++
 .../memtable/AlignedWritableMemChunk.java          |  9 +++
 .../memtable/AlignedWritableMemChunkGroup.java     |  5 ++
 .../dataregion/memtable/WritableMemChunkGroup.java |  5 ++
 .../read/reader/chunk/MemAlignedChunkReader.java   |  5 ++
 .../read/reader/chunk/MemAlignedPageReader.java    | 14 ++++
 .../read/reader/chunk/MemPageReader.java           | 14 ++++
 .../metadata/DiskAlignedChunkMetadataLoader.java   | 17 +++++
 .../metadata/MemAlignedChunkMetadataLoader.java    | 17 +++++
 .../read/reader/common/PriorityMergeReader.java    |  5 ++
 .../storageengine/dataregion/tsfile/TsFileID.java  | 14 ++++
 .../dataregion/tsfile/TsFileResource.java          | 14 ++--
 .../db/utils/datastructure/AlignedTVList.java      | 85 ++++++++++++++++++++++
 .../tsfile/file/metadata/AlignedChunkMetadata.java | 10 +++
 .../file/metadata/AlignedTimeSeriesMetadata.java   | 10 +++
 .../iotdb/tsfile/file/metadata/ChunkMetadata.java  | 24 +++++-
 .../iotdb/tsfile/read/common/block/TsBlock.java    | 12 +++
 .../read/common/block/column/BinaryColumn.java     | 14 ++++
 .../read/common/block/column/BooleanColumn.java    | 14 ++++
 .../read/common/block/column/DoubleColumn.java     | 14 ++++
 .../read/common/block/column/FloatColumn.java      | 14 ++++
 .../tsfile/read/common/block/column/IntColumn.java | 14 ++++
 .../read/common/block/column/LongColumn.java       | 14 ++++
 .../read/common/block/column/NullColumn.java       |  5 ++
 .../block/column/RunLengthEncodedColumn.java       |  5 ++
 .../read/common/block/column/TimeColumn.java       | 14 ++++
 .../read/reader/chunk/AlignedChunkReader.java      | 14 ++++
 .../tsfile/read/reader/page/AlignedPageReader.java | 20 +++++
 .../tsfile/read/reader/page/TimePageReader.java    | 12 +++
 .../tsfile/read/reader/page/ValuePageReader.java   | 18 +++++
 42 files changed, 564 insertions(+), 17 deletions(-)

diff --git a/.mvn/.develocity/develocity-workspace-id 
b/.mvn/.develocity/develocity-workspace-id
new file mode 100644
index 00000000000..2e56ea31182
--- /dev/null
+++ b/.mvn/.develocity/develocity-workspace-id
@@ -0,0 +1 @@
+gfajylps6zb3jch4sxzzlwill4
\ No newline at end of file
diff --git 
a/iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 
b/iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
index ec798d6a624..74cc32534f2 100644
--- 
a/iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
+++ 
b/iotdb-core/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4
@@ -708,7 +708,7 @@ selectStatement
 
 // ---- Select Clause
 selectClause
-    : SELECT LAST? resultColumn (COMMA resultColumn)*
+    : DEBUG? SELECT LAST? resultColumn (COMMA resultColumn)*
     ;
 
 resultColumn
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
index 900865dc887..5e4cd43cffa 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
@@ -146,6 +146,8 @@ public class FragmentInstanceManager {
                                 instance.getGlobalTimePredicate(),
                                 dataNodeQueryContextMap));
 
+                context.setDebug(instance.isDebug());
+
                 try {
                   List<PipelineDriverFactory> driverFactories =
                       planner.plan(
@@ -237,6 +239,8 @@ public class FragmentInstanceManager {
                           createFragmentInstanceContext(
                               fragmentInstanceId, stateMachine, 
instance.getSessionInfo()));
 
+              context.setDebug(instance.isDebug());
+
               try {
                 List<PipelineDriverFactory> driverFactories =
                     planner.plan(instance.getFragment().getPlanNodeTree(), 
context, schemaRegion);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
index a749aa1657c..cbf55625783 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/QueryContext.java
@@ -130,6 +130,10 @@ public class QueryContext {
     return debug;
   }
 
+  public void setDebug(boolean debug) {
+    this.debug = debug;
+  }
+
   public long getQueryTimeLowerBound() {
     return queryTimeLowerBound;
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
index 91f91bb73af..c8d8a4d6306 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
@@ -52,6 +52,7 @@ import java.util.Set;
 import static com.google.common.base.Preconditions.checkArgument;
 import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.TIMESERIES_METADATA_MODIFICATION_ALIGNED;
 import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.TIMESERIES_METADATA_MODIFICATION_NONALIGNED;
+import static 
org.apache.iotdb.db.schemaengine.schemaregion.utils.ResourceByPathUtils.DEBUG_LOGGER;
 
 public class FileLoaderUtils {
 
@@ -186,6 +187,12 @@ public class FileLoaderUtils {
               new MemAlignedChunkMetadataLoader(resource, alignedPath, 
context, globalTimeFilter));
           // mem's modification already done in generating chunkmetadata
         }
+        DEBUG_LOGGER.info(
+            "Get timeseries: {}.{}  metadata in file: {}  from memtable: {}.",
+            alignedPath.getDevice(),
+            alignedPath.getMeasurementList(),
+            resource,
+            alignedTimeSeriesMetadata);
       }
 
       if (alignedTimeSeriesMetadata != null) {
@@ -342,11 +349,18 @@ public class FileLoaderUtils {
    *     IOException will be thrown
    */
   public static List<IPageReader> loadPageReaderList(
-      IChunkMetadata chunkMetaData, Filter globalTimeFilter) throws 
IOException {
+      IChunkMetadata chunkMetaData, Filter globalTimeFilter, QueryContext 
context)
+      throws IOException {
     checkArgument(chunkMetaData != null, "Can't init null chunkMeta");
 
     IChunkLoader chunkLoader = chunkMetaData.getChunkLoader();
     IChunkReader chunkReader = chunkLoader.getChunkReader(chunkMetaData, 
globalTimeFilter);
-    return chunkReader.loadPageReaderList();
+
+    List<IPageReader> res = chunkReader.loadPageReaderList();
+    if (context.isDebug()) {
+      DEBUG_LOGGER.info("get PageReaderList from {}, {}", chunkReader, res);
+    }
+
+    return res;
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
index 52fba27f076..bef547c5c35 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
@@ -62,6 +62,7 @@ import java.util.function.ToLongFunction;
 import static com.google.common.base.Preconditions.checkState;
 import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.BUILD_TSBLOCK_FROM_MERGE_READER_ALIGNED;
 import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.BUILD_TSBLOCK_FROM_MERGE_READER_NONALIGNED;
+import static 
org.apache.iotdb.db.schemaengine.schemaregion.utils.ResourceByPathUtils.DEBUG_LOGGER;
 
 public class SeriesScanUtil {
 
@@ -544,7 +545,8 @@ public class SeriesScanUtil {
 
   private void unpackOneChunkMetaData(IChunkMetadata chunkMetaData) throws 
IOException {
     List<IPageReader> pageReaderList =
-        FileLoaderUtils.loadPageReaderList(chunkMetaData, 
scanOptions.getGlobalTimeFilter());
+        FileLoaderUtils.loadPageReaderList(
+            chunkMetaData, scanOptions.getGlobalTimeFilter(), context);
 
     // init TsBlockBuilder for each page reader
     pageReaderList.forEach(p -> p.initTsBlockBuilder(getTsDataTypeList()));
@@ -1210,6 +1212,13 @@ public class SeriesScanUtil {
         if (!ascending) {
           tsBlock.reverse();
         }
+        DEBUG_LOGGER.info(
+            "TsBlock from version {} is {}, isSeq: {}, isAligned: {}, isMem: 
{}",
+            version,
+            tsBlock,
+            isSeq,
+            isAligned,
+            isMem);
         return tsBlock;
       } finally {
         long time = System.nanoTime() - startTime;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analysis.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analysis.java
index cf73c743b59..ae494b3d7e4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analysis.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analysis.java
@@ -303,11 +303,21 @@ public class Analysis implements IAnalysis {
   
/////////////////////////////////////////////////////////////////////////////////////////////////
 
   private final Set<NodeRef<FilterNode>> fromWhereFilterNodes = new 
HashSet<>();
+  private final boolean debug;
+
+  public Analysis(boolean debug) {
+    this.debug = debug;
+  }
 
   public Analysis() {
+    this.debug = false;
     this.finishQueryAfterAnalyze = false;
   }
 
+  public boolean isDebug() {
+    return debug;
+  }
+
   public List<TRegionReplicaSet> getPartitionInfo(PartialPath seriesPath, 
Filter timefilter) {
     return 
dataPartition.getDataRegionReplicaSetWithTimeFilter(seriesPath.getDevice(), 
timefilter);
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
index ea174ffee97..828fb3fe6ce 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
@@ -251,7 +251,7 @@ public class AnalyzeVisitor extends 
StatementVisitor<Analysis, MPPQueryContext>
 
   @Override
   public Analysis visitQuery(QueryStatement queryStatement, MPPQueryContext 
context) {
-    Analysis analysis = new Analysis();
+    Analysis analysis = new Analysis(queryStatement.isDebug());
     analysis.setLastLevelUseWildcard(queryStatement.isLastLevelUseWildcard());
 
     try {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/DistributionPlanner.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/DistributionPlanner.java
index 755119b2607..edf7f4aa819 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/DistributionPlanner.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/distribution/DistributionPlanner.java
@@ -213,6 +213,9 @@ public class DistributionPlanner {
     // Only execute this step for READ operation
     if (context.getQueryType() == QueryType.READ) {
       setSinkForRootInstance(subPlan, fragmentInstances);
+      if (analysis.isDebug()) {
+        fragmentInstances.forEach(fragmentInstance -> 
fragmentInstance.setDebug(true));
+      }
     }
     return new DistributedQueryPlan(
         logicalPlan.getContext(), subPlan, subPlan.getPlanFragmentList(), 
fragmentInstances);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/FragmentInstance.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/FragmentInstance.java
index 4dd56beefa8..81f1fc16dcb 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/FragmentInstance.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/FragmentInstance.java
@@ -82,6 +82,8 @@ public class FragmentInstance implements IConsensusRequest {
   // We can add some more params for a specific FragmentInstance
   // So that we can make different FragmentInstance owns different data range.
 
+  private boolean debug = false;
+
   public FragmentInstance(
       PlanFragment fragment,
       FragmentInstanceId id,
@@ -223,6 +225,7 @@ public class FragmentInstance implements IConsensusRequest {
     fragmentInstance.hostDataNode =
         hasHostDataNode ? 
ThriftCommonsSerDeUtils.deserializeTDataNodeLocation(buffer) : null;
     fragmentInstance.isExplainAnalyze = ReadWriteIOUtils.readBool(buffer);
+    fragmentInstance.debug = ReadWriteIOUtils.readBool(buffer);
     return fragmentInstance;
   }
 
@@ -247,6 +250,7 @@ public class FragmentInstance implements IConsensusRequest {
         ThriftCommonsSerDeUtils.serializeTDataNodeLocation(hostDataNode, 
outputStream);
       }
       ReadWriteIOUtils.write(isExplainAnalyze, outputStream);
+      ReadWriteIOUtils.write(debug, outputStream);
       return ByteBuffer.wrap(publicBAOS.getBuf(), 0, publicBAOS.size());
     } catch (IOException e) {
       LOGGER.error("Unexpected error occurs when serializing this 
FragmentInstance.", e);
@@ -254,6 +258,14 @@ public class FragmentInstance implements IConsensusRequest 
{
     }
   }
 
+  public boolean isDebug() {
+    return debug;
+  }
+
+  public void setDebug(boolean debug) {
+    this.debug = debug;
+  }
+
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/QueryStatement.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/QueryStatement.java
index e09bdc00415..7e09f205682 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/QueryStatement.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/crud/QueryStatement.java
@@ -133,6 +133,8 @@ public class QueryStatement extends 
AuthorityInformationStatement {
   // we can skip the query
   private boolean isResultSetEmpty = false;
 
+  private boolean debug = false;
+
   public QueryStatement() {
     this.statementType = StatementType.QUERY;
   }
@@ -820,4 +822,14 @@ public class QueryStatement extends 
AuthorityInformationStatement {
       }
     }
   }
+
+  @Override
+  public boolean isDebug() {
+    return debug;
+  }
+
+  @Override
+  public void setDebug(boolean debug) {
+    this.debug = debug;
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java
index 45a0324be19..eb1b7a5e57a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java
@@ -52,6 +52,9 @@ import 
org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
 import org.apache.iotdb.tsfile.write.writer.RestorableTsFileIOWriter;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.io.IOException;
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -67,6 +70,8 @@ import static 
org.apache.iotdb.commons.path.AlignedPath.VECTOR_PLACEHOLDER;
  */
 public abstract class ResourceByPathUtils {
 
+  public static final Logger DEBUG_LOGGER = 
LoggerFactory.getLogger("QUERY_DEBUG");
+
   public static ResourceByPathUtils getResourceInstance(PartialPath path) {
     if (path instanceof AlignedPath) {
       return new AlignedResourceByPathUtils(path);
@@ -213,14 +218,39 @@ class AlignedResourceByPathUtils extends 
ResourceByPathUtils {
     if (!containsMeasurement) {
       return null;
     }
+    if (context.isDebug()) {
+      DEBUG_LOGGER.info(
+          "TVList before sorting for Memtable {} is {}, schemaList is {}",
+          memTable.getMemTableId(),
+          alignedMemChunk.getTVList(),
+          alignedMemChunk.getSchemaList());
+    }
     // get sorted tv list is synchronized so different query can get right 
sorted list reference
     TVList alignedTvListCopy = 
alignedMemChunk.getSortedTvListForQuery(partialPath.getSchemaList());
+    if (context.isDebug()) {
+      DEBUG_LOGGER.info(
+          "TVList after sorting for Memtable {} is {}, schemaList is {}",
+          memTable.getMemTableId(),
+          alignedMemChunk.getTVList(),
+          partialPath.getSchemaList());
+    }
     List<List<TimeRange>> deletionList = null;
     if (modsToMemtable != null) {
       deletionList = constructDeletionList(memTable, modsToMemtable, 
timeLowerBound);
     }
-    return new AlignedReadOnlyMemChunk(
-        context, getMeasurementSchema(), alignedTvListCopy, deletionList);
+    AlignedReadOnlyMemChunk readOnlyMemChunk =
+        new AlignedReadOnlyMemChunk(
+            context, getMeasurementSchema(), alignedTvListCopy, deletionList);
+
+    if (context.isDebug()) {
+      DEBUG_LOGGER.info(
+          "TsBlock from Memtable {} is {}, ChunkMetadata is {}",
+          memTable.getMemTableId(),
+          readOnlyMemChunk.getTsBlock(),
+          readOnlyMemChunk.getChunkMetaData());
+    }
+
+    return readOnlyMemChunk;
   }
 
   public VectorMeasurementSchema getMeasurementSchema() {
@@ -382,6 +412,7 @@ class MeasurementResourceByPathUtils extends 
ResourceByPathUtils {
         partialPath.getMeasurementSchema().getProps(),
         deletionList);
   }
+
   /**
    * construct a deletion list from a memtable.
    *
@@ -404,6 +435,7 @@ class MeasurementResourceByPathUtils extends 
ResourceByPathUtils {
     }
     return TimeRange.sortAndMerge(deletionList);
   }
+
   /** get modifications from a memtable. */
   @Override
   protected List<Modification> getModificationsForMemtable(
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
index e898736485e..722700e77c0 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
@@ -720,4 +720,38 @@ public abstract class AbstractMemTable implements 
IMemTable {
   public boolean isTotallyGeneratedByPipe() {
     return this.isTotallyGeneratedByPipe.get();
   }
+
+  @Override
+  public String toString() {
+    return "AbstractMemTable{"
+        + "memTableId="
+        + memTableId
+        + ", createdTime="
+        + createdTime
+        + ", updateTime="
+        + updateTime
+        + ", memTableMap="
+        + memTableMap
+        + ", shouldFlush="
+        + shouldFlush
+        + ", memSize="
+        + memSize
+        + ", tvListRamCost="
+        + tvListRamCost
+        + ", seriesNumber="
+        + seriesNumber
+        + ", totalPointsNum="
+        + totalPointsNum
+        + ", totalPointsNumThreshold="
+        + totalPointsNumThreshold
+        + ", database='"
+        + database
+        + '\''
+        + ", dataRegionId='"
+        + dataRegionId
+        + '\''
+        + ", lastTotalPointsNum="
+        + lastTotalPointsNum
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
index 934b616e393..e0892f000a3 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
@@ -537,4 +537,13 @@ public class AlignedWritableMemChunk implements 
IWritableMemChunk {
     AlignedTVList list = (AlignedTVList) TVList.deserialize(stream);
     return new AlignedWritableMemChunk(schemaList, list);
   }
+
+  public List<IMeasurementSchema> getSchemaList() {
+    return schemaList;
+  }
+
+  @Override
+  public String toString() {
+    return list.toString();
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunkGroup.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunkGroup.java
index 17b12a748da..219feab7d31 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunkGroup.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunkGroup.java
@@ -163,4 +163,9 @@ public class AlignedWritableMemChunkGroup implements 
IWritableMemChunkGroup {
     memChunkGroup.memChunk = AlignedWritableMemChunk.deserialize(stream);
     return memChunkGroup;
   }
+
+  @Override
+  public String toString() {
+    return memChunk.toString();
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkGroup.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkGroup.java
index 5534035e6e3..00f72d31d81 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkGroup.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkGroup.java
@@ -206,4 +206,9 @@ public class WritableMemChunkGroup implements 
IWritableMemChunkGroup {
     }
     return memChunkGroup;
   }
+
+  @Override
+  public String toString() {
+    return memChunkMap.toString();
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkReader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkReader.java
index b9bf10e90c1..281965d1122 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkReader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedChunkReader.java
@@ -64,4 +64,9 @@ public class MemAlignedChunkReader implements IChunkReader {
   public List<IPageReader> loadPageReaderList() {
     return this.pageReaderList;
   }
+
+  @Override
+  public String toString() {
+    return "MemAlignedChunkReader{" + "pageReaderList=" + pageReaderList + '}';
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedPageReader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedPageReader.java
index 3f0c684f8ab..f87461eef69 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedPageReader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemAlignedPageReader.java
@@ -210,4 +210,18 @@ public class MemAlignedPageReader implements IPageReader {
   public void initTsBlockBuilder(List<TSDataType> dataTypes) {
     builder = new TsBlockBuilder(dataTypes);
   }
+
+  @Override
+  public String toString() {
+    return "MemAlignedPageReader{"
+        + "tsBlock="
+        + tsBlock
+        + ", chunkMetadata="
+        + chunkMetadata
+        + ", recordFilter="
+        + recordFilter
+        + ", paginationController="
+        + paginationController
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReader.java
index 122c62bec87..b54f6aa250b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReader.java
@@ -210,4 +210,18 @@ public class MemPageReader implements IPageReader {
   public void initTsBlockBuilder(List<TSDataType> dataTypes) {
     // non-aligned page reader don't need to init TsBlockBuilder at the very 
beginning
   }
+
+  @Override
+  public String toString() {
+    return "MemPageReader{"
+        + "tsBlock="
+        + tsBlock
+        + ", chunkMetadata="
+        + chunkMetadata
+        + ", recordFilter="
+        + recordFilter
+        + ", paginationController="
+        + paginationController
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/DiskAlignedChunkMetadataLoader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/DiskAlignedChunkMetadataLoader.java
index 7fc3b8d57ed..2f7fbf47987 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/DiskAlignedChunkMetadataLoader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/DiskAlignedChunkMetadataLoader.java
@@ -41,6 +41,7 @@ import java.util.List;
 import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.CHUNK_METADATA_FILTER_ALIGNED_DISK;
 import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.CHUNK_METADATA_MODIFICATION_ALIGNED_DISK;
 import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.LOAD_CHUNK_METADATA_LIST_ALIGNED_DISK;
+import static 
org.apache.iotdb.db.schemaengine.schemaregion.utils.ResourceByPathUtils.DEBUG_LOGGER;
 
 public class DiskAlignedChunkMetadataLoader implements IChunkMetadataLoader {
 
@@ -75,6 +76,14 @@ public class DiskAlignedChunkMetadataLoader implements 
IChunkMetadataLoader {
       List<AlignedChunkMetadata> alignedChunkMetadataList =
           ((AlignedTimeSeriesMetadata) 
timeSeriesMetadata).getCopiedChunkMetadataList();
 
+      if (context.isDebug()) {
+        DEBUG_LOGGER.info(
+            "Before filter ChunkMetadataList from {}, version is {}, {}",
+            resource,
+            resource.getVersion(),
+            alignedChunkMetadataList);
+      }
+
       // when alignedChunkMetadataList.size() == 1, it means that the chunk 
statistics is same as
       // the time series metadata, so we don't need to filter it again.
       if (alignedChunkMetadataList.size() > 1) {
@@ -94,6 +103,14 @@ public class DiskAlignedChunkMetadataLoader implements 
IChunkMetadataLoader {
             CHUNK_METADATA_FILTER_ALIGNED_DISK, System.nanoTime() - t2);
       }
 
+      if (context.isDebug()) {
+        DEBUG_LOGGER.info(
+            "After filter ChunkMetadataList from {}, version is {}, {}",
+            resource,
+            resource.getVersion(),
+            alignedChunkMetadataList);
+      }
+
       final long t3 = System.nanoTime();
 
       if (context.isDebug()) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemAlignedChunkMetadataLoader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemAlignedChunkMetadataLoader.java
index a4c56419b77..9fe57b176b9 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemAlignedChunkMetadataLoader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/metadata/MemAlignedChunkMetadataLoader.java
@@ -34,6 +34,7 @@ import java.util.List;
 
 import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.CHUNK_METADATA_FILTER_ALIGNED_MEM;
 import static 
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.LOAD_CHUNK_METADATA_LIST_ALIGNED_MEM;
+import static 
org.apache.iotdb.db.schemaengine.schemaregion.utils.ResourceByPathUtils.DEBUG_LOGGER;
 
 public class MemAlignedChunkMetadataLoader implements IChunkMetadataLoader {
 
@@ -85,6 +86,14 @@ public class MemAlignedChunkMetadataLoader implements 
IChunkMetadataLoader {
         }
       }
 
+      if (context.isDebug()) {
+        DEBUG_LOGGER.info(
+            "Before filter ChunkMetadataList from {}, version is {}, {}",
+            resource,
+            resource.getVersion(),
+            chunkMetadataList);
+      }
+
       // when chunkMetadataList.size() == 1, it means that the chunk 
statistics is same as
       // the time series metadata, so we don't need to filter it again.
       if (chunkMetadataList.size() > 1) {
@@ -98,6 +107,14 @@ public class MemAlignedChunkMetadataLoader implements 
IChunkMetadataLoader {
             CHUNK_METADATA_FILTER_ALIGNED_MEM, System.nanoTime() - t2);
       }
 
+      if (context.isDebug()) {
+        DEBUG_LOGGER.info(
+            "After filter ChunkMetadataList from {}, version is {}, {}",
+            resource,
+            resource.getVersion(),
+            chunkMetadataList);
+      }
+
       for (IChunkMetadata metadata : chunkMetadataList) {
         metadata.setVersion(resource.getVersion());
       }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReader.java
index 330c856ded0..8983cbcca46 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/common/PriorityMergeReader.java
@@ -194,5 +194,10 @@ public class PriorityMergeReader implements IPointReader {
     public int hashCode() {
       return Objects.hash(version, offset);
     }
+
+    @Override
+    public String toString() {
+      return "MergeReaderPriority{" + "version=" + version + ", offset=" + 
offset + '}';
+    }
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileID.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileID.java
index 7dcbbde8fb8..28066249c25 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileID.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileID.java
@@ -93,4 +93,18 @@ public class TsFileID {
         (Long.parseLong(names[2]) << 32) | 
Long.parseLong(names[3].substring(0, dotIndex));
     return versionArray;
   }
+
+  @Override
+  public String toString() {
+    return "TsFileID{"
+        + "regionId="
+        + regionId
+        + ", timePartitionId="
+        + timePartitionId
+        + ", fileVersion="
+        + fileVersion
+        + ", compactionVersion="
+        + compactionVersion
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java
index 50fc244deac..2fd9f652f37 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/TsFileResource.java
@@ -710,7 +710,7 @@ public class TsFileResource {
     if (startAndEndTime == null) {
       if (debug) {
         DEBUG_LOGGER.info(
-            "Path: {} file {} is not satisfied because of no device!", 
deviceId, file);
+            "Path: {} file {} is not satisfied because of no device!", 
deviceId, this);
       }
       return false;
     }
@@ -720,7 +720,7 @@ public class TsFileResource {
 
     if (!isAlive(endTime, ttl)) {
       if (debug) {
-        DEBUG_LOGGER.info("file {} is not satisfied because of ttl!", file);
+        DEBUG_LOGGER.info("file {} is not satisfied because of ttl!", this);
       }
       return false;
     }
@@ -729,7 +729,7 @@ public class TsFileResource {
       boolean res = globalTimeFilter.satisfyStartEndTime(startTime, endTime);
       if (debug && !res) {
         DEBUG_LOGGER.info(
-            "Path: {} file {} is not satisfied because of time filter!", 
deviceId, fsFactory);
+            "Path: {} file {} is not satisfied because of time filter!", 
deviceId, this);
       }
       return res;
     }
@@ -753,7 +753,7 @@ public class TsFileResource {
 
     if (!isAlive(endTime, ttl)) {
       if (debug) {
-        DEBUG_LOGGER.info("file {} is not satisfied because of ttl!", file);
+        DEBUG_LOGGER.info("file {} is not satisfied because of ttl!", this);
       }
       return false;
     }
@@ -761,7 +761,7 @@ public class TsFileResource {
     if (timeFilter != null) {
       boolean res = timeFilter.satisfyStartEndTime(startTime, endTime);
       if (debug && !res) {
-        DEBUG_LOGGER.info("Path: file {} is not satisfied because of time 
filter!", fsFactory);
+        DEBUG_LOGGER.info("Path: file {} is not satisfied because of time 
filter!", this);
       }
       return res;
     }
@@ -773,7 +773,7 @@ public class TsFileResource {
     if (definitelyNotContains(deviceId)) {
       if (debug) {
         DEBUG_LOGGER.info(
-            "Path: {} file {} is not satisfied because of no device!", 
deviceId, file);
+            "Path: {} file {} is not satisfied because of no device!", 
deviceId, this);
       }
       return false;
     }
@@ -795,7 +795,7 @@ public class TsFileResource {
       boolean res = timeFilter.satisfyStartEndTime(startTime, endTime);
       if (debug && !res) {
         DEBUG_LOGGER.info(
-            "Path: {} file {} is not satisfied because of time filter!", 
deviceId, fsFactory);
+            "Path: {} file {} is not satisfied because of time filter!", 
deviceId, this);
       }
       return res;
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
index 4949044d590..179de2d53c7 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
@@ -40,6 +40,7 @@ import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
 import java.io.DataInputStream;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 
@@ -1259,4 +1260,88 @@ public abstract class AlignedTVList extends TVList {
 
     return new BitMap(rowCount, rowBitsArr);
   }
+
+  private String printValueColumn(int i) {
+    StringBuilder builder = new StringBuilder();
+    List<Object> objects = values.get(i);
+    builder.append("<valueColumn>");
+    switch (dataTypes.get(i)) {
+      case TEXT:
+        for (Object object : objects) {
+          builder.append(Arrays.toString((Binary[]) object)).append(" ");
+        }
+        break;
+      case FLOAT:
+        for (Object object : objects) {
+          builder.append(Arrays.toString((float[]) object)).append(" ");
+        }
+        break;
+      case INT32:
+        for (Object object : objects) {
+          builder.append(Arrays.toString((int[]) object)).append(" ");
+        }
+        break;
+      case INT64:
+        for (Object object : objects) {
+          builder.append(Arrays.toString((long[]) object)).append(" ");
+        }
+        break;
+      case DOUBLE:
+        for (Object object : objects) {
+          builder.append(Arrays.toString((double[]) object)).append(" ");
+        }
+        break;
+      case BOOLEAN:
+        for (Object object : objects) {
+          builder.append(Arrays.toString((boolean[]) object)).append(" ");
+        }
+        break;
+    }
+    builder.append("</valueColumn>");
+    return builder.toString();
+  }
+
+  private String printValues() {
+    StringBuilder builder = new StringBuilder();
+    builder.append("<values>");
+    for (int i = 0; i < values.size(); i++) {
+      builder.append(printValueColumn(i));
+    }
+    builder.append("</values>");
+    return builder.toString();
+  }
+
+  private String printTimestamps() {
+    StringBuilder builder = new StringBuilder();
+    builder.append("<timestamps>");
+    for (long[] timestamp : timestamps) {
+      builder.append(Arrays.toString(timestamp)).append(" ");
+    }
+    builder.append("</timestamps>");
+    return builder.toString();
+  }
+
+  private String printIndices() {
+    StringBuilder builder = new StringBuilder();
+    builder.append("<indices>");
+    for (int[] index : indices) {
+      builder.append(Arrays.toString(index)).append(" ");
+    }
+    builder.append("/<indices>");
+    return builder.toString();
+  }
+
+  @Override
+  public String toString() {
+    return "AlignedTVList{"
+        + "values="
+        + printValues()
+        + ", indices="
+        + printIndices()
+        + ", timestamps="
+        + printTimestamps()
+        + ", rowCount="
+        + rowCount
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java
index 84b0a500527..654729afcfb 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedChunkMetadata.java
@@ -211,4 +211,14 @@ public class AlignedChunkMetadata implements 
IChunkMetadata {
   public List<IChunkMetadata> getValueChunkMetadataList() {
     return valueChunkMetadataList;
   }
+
+  @Override
+  public String toString() {
+    return "AlignedChunkMetadata{"
+        + "timeChunkMetadata="
+        + timeChunkMetadata
+        + ", valueChunkMetadataList="
+        + valueChunkMetadataList
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedTimeSeriesMetadata.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedTimeSeriesMetadata.java
index b72d2267f18..c6d3c0a5c22 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedTimeSeriesMetadata.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/AlignedTimeSeriesMetadata.java
@@ -213,4 +213,14 @@ public class AlignedTimeSeriesMetadata implements 
ITimeSeriesMetadata {
   public TimeseriesMetadata getTimeseriesMetadata() {
     return timeseriesMetadata;
   }
+
+  @Override
+  public String toString() {
+    return "AlignedTimeSeriesMetadata{"
+        + "timeseriesMetadata="
+        + timeseriesMetadata
+        + ", valueTimeseriesMetadataList="
+        + valueTimeseriesMetadataList
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadata.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadata.java
index 21643c5fed1..beef43a4ed0 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadata.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetadata.java
@@ -115,9 +115,27 @@ public class ChunkMetadata implements IChunkMetadata {
 
   @Override
   public String toString() {
-    return String.format(
-        "measurementId: %s, datatype: %s, version: %d, " + "Statistics: %s, 
deleteIntervalList: %s",
-        measurementUid, tsDataType, version, statistics, deleteIntervalList);
+    return "ChunkMetadata{"
+        + "measurementUid='"
+        + measurementUid
+        + '\''
+        + ", offsetOfChunkHeader="
+        + offsetOfChunkHeader
+        + ", tsDataType="
+        + tsDataType
+        + ", version="
+        + version
+        + ", deleteIntervalList="
+        + deleteIntervalList
+        + ", modified="
+        + modified
+        + ", statistics="
+        + statistics
+        + ", isSeq="
+        + isSeq
+        + ", isClosed="
+        + isClosed
+        + '}';
   }
 
   public long getNumOfPoints() {
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlock.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlock.java
index 39233628159..e972a584a12 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlock.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlock.java
@@ -553,4 +553,16 @@ public class TsBlock {
       }
     }
   }
+
+  @Override
+  public String toString() {
+    return "TsBlock{"
+        + "timeColumn="
+        + timeColumn
+        + ", valueColumns="
+        + Arrays.toString(valueColumns)
+        + ", positionCount="
+        + positionCount
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java
index e383342f736..8fa0e2175c9 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java
@@ -167,4 +167,18 @@ public class BinaryColumn implements Column {
   public int getInstanceSize() {
     return INSTANCE_SIZE;
   }
+
+  @Override
+  public String toString() {
+    return "BinaryColumn{"
+        + "arrayOffset="
+        + arrayOffset
+        + ", positionCount="
+        + positionCount
+        + ", valueIsNull="
+        + Arrays.toString(valueIsNull)
+        + ", values="
+        + Arrays.toString(values)
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java
index daed6cf312d..59f3014e9c9 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java
@@ -165,4 +165,18 @@ public class BooleanColumn implements Column {
   public int getInstanceSize() {
     return INSTANCE_SIZE;
   }
+
+  @Override
+  public String toString() {
+    return "BooleanColumn{"
+        + "arrayOffset="
+        + arrayOffset
+        + ", positionCount="
+        + positionCount
+        + ", valueIsNull="
+        + Arrays.toString(valueIsNull)
+        + ", values="
+        + Arrays.toString(values)
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java
index 6042b471592..2892f6e8654 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java
@@ -166,4 +166,18 @@ public class DoubleColumn implements Column {
   public int getInstanceSize() {
     return INSTANCE_SIZE;
   }
+
+  @Override
+  public String toString() {
+    return "DoubleColumn{"
+        + "arrayOffset="
+        + arrayOffset
+        + ", positionCount="
+        + positionCount
+        + ", valueIsNull="
+        + Arrays.toString(valueIsNull)
+        + ", values="
+        + Arrays.toString(values)
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java
index 003ad3fce04..27408c34507 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java
@@ -165,4 +165,18 @@ public class FloatColumn implements Column {
   public int getInstanceSize() {
     return INSTANCE_SIZE;
   }
+
+  @Override
+  public String toString() {
+    return "FloatColumn{"
+        + "arrayOffset="
+        + arrayOffset
+        + ", positionCount="
+        + positionCount
+        + ", valueIsNull="
+        + Arrays.toString(valueIsNull)
+        + ", values="
+        + Arrays.toString(values)
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java
index 867cb37ee84..1f24fd17c25 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java
@@ -165,4 +165,18 @@ public class IntColumn implements Column {
   public int getInstanceSize() {
     return INSTANCE_SIZE;
   }
+
+  @Override
+  public String toString() {
+    return "IntColumn{"
+        + "arrayOffset="
+        + arrayOffset
+        + ", positionCount="
+        + positionCount
+        + ", valueIsNull="
+        + Arrays.toString(valueIsNull)
+        + ", values="
+        + Arrays.toString(values)
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java
index 0cbacc7bd5a..2f2b270567d 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java
@@ -165,4 +165,18 @@ public class LongColumn implements Column {
   public int getInstanceSize() {
     return INSTANCE_SIZE;
   }
+
+  @Override
+  public String toString() {
+    return "LongColumn{"
+        + "arrayOffset="
+        + arrayOffset
+        + ", positionCount="
+        + positionCount
+        + ", valueIsNull="
+        + Arrays.toString(valueIsNull)
+        + ", values="
+        + Arrays.toString(values)
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java
index dff65bc65d6..5533577b84e 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/NullColumn.java
@@ -124,4 +124,9 @@ public class NullColumn implements Column {
   public int getInstanceSize() {
     return INSTANCE_SIZE;
   }
+
+  @Override
+  public String toString() {
+    return "NullColumn{" + "positionCount=" + positionCount + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java
index 8db2209281d..633f7c8f1fd 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java
@@ -213,4 +213,9 @@ public class RunLengthEncodedColumn implements Column {
   public int getInstanceSize() {
     return INSTANCE_SIZE;
   }
+
+  @Override
+  public String toString() {
+    return "RunLengthEncodedColumn{" + "value=" + value + ", positionCount=" + 
positionCount + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java
index c5cc3f5c0f8..7303f09a4e3 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java
@@ -22,6 +22,8 @@ package org.apache.iotdb.tsfile.read.common.block.column;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.utils.RamUsageEstimator;
 
+import java.util.Arrays;
+
 import static 
org.apache.iotdb.tsfile.read.common.block.column.ColumnUtil.checkValidRegion;
 import static org.apache.iotdb.tsfile.utils.RamUsageEstimator.sizeOfLongArray;
 
@@ -149,4 +151,16 @@ public class TimeColumn implements Column {
   public int getInstanceSize() {
     return INSTANCE_SIZE;
   }
+
+  @Override
+  public String toString() {
+    return "TimeColumn{"
+        + "arrayOffset="
+        + arrayOffset
+        + ", positionCount="
+        + positionCount
+        + ", values="
+        + Arrays.toString(values)
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java
index 373187ed6a7..303b2115474 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/AlignedChunkReader.java
@@ -258,4 +258,18 @@ public class AlignedChunkReader extends 
AbstractChunkReader {
     }
     return false;
   }
+
+  @Override
+  public String toString() {
+    return "AlignedChunkReader{"
+        + "timeChunkHeader="
+        + timeChunkHeader
+        + ", valueChunkHeaderList="
+        + valueChunkHeaderList
+        + ", valueDeleteIntervalsList="
+        + valueDeleteIntervalsList
+        + ", queryFilter="
+        + queryFilter
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java
index c24b76798e4..bdb5b8fb6c9 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/AlignedPageReader.java
@@ -434,4 +434,24 @@ public class AlignedPageReader implements IPageReader {
       builder = new TsBlockBuilder((int) 
timePageReader.getStatistics().getCount(), dataTypes);
     }
   }
+
+  @Override
+  public String toString() {
+    return "AlignedPageReader{"
+        + "timePageReader="
+        + timePageReader
+        + ", valuePageReaderList="
+        + valuePageReaderList
+        + ", valueCount="
+        + valueCount
+        + ", globalTimeFilter="
+        + globalTimeFilter
+        + ", pushDownFilter="
+        + pushDownFilter
+        + ", paginationController="
+        + paginationController
+        + ", isModified="
+        + isModified
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/TimePageReader.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/TimePageReader.java
index daa7cfad4f9..246909e23a3 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/TimePageReader.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/TimePageReader.java
@@ -115,4 +115,16 @@ public class TimePageReader {
     }
     return false;
   }
+
+  @Override
+  public String toString() {
+    return "TimePageReader{"
+        + "pageHeader="
+        + pageHeader
+        + ", deleteIntervalList="
+        + deleteIntervalList
+        + ", deleteCursor="
+        + deleteCursor
+        + '}';
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/ValuePageReader.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/ValuePageReader.java
index d18818c5476..387d8890817 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/ValuePageReader.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/page/ValuePageReader.java
@@ -553,4 +553,22 @@ public class ValuePageReader {
   public byte[] getBitmap() {
     return Arrays.copyOf(bitmap, bitmap.length);
   }
+
+  @Override
+  public String toString() {
+    return "ValuePageReader{"
+        + "pageHeader="
+        + pageHeader
+        + ", dataType="
+        + dataType
+        + ", bitmap="
+        + Arrays.toString(bitmap)
+        + ", size="
+        + size
+        + ", deleteIntervalList="
+        + deleteIntervalList
+        + ", deleteCursor="
+        + deleteCursor
+        + '}';
+  }
 }

Reply via email to