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 + + '}'; + } }
