Class SeriesScanUtil
- java.lang.Object
-
- org.apache.iotdb.db.mpp.execution.operator.source.SeriesScanUtil
-
- Direct Known Subclasses:
AlignedSeriesScanUtil
public class SeriesScanUtil extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceSeriesScanUtil.TimeOrderUtilsprotected classSeriesScanUtil.VersionPageReader
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Set<java.lang.String>allSensorsprotected java.util.PriorityQueue<org.apache.iotdb.tsfile.file.metadata.IChunkMetadata>cachedChunkMetadataprotected org.apache.iotdb.tsfile.read.common.block.TsBlockcachedTsBlockprotected intcurSeqFileIndexprotected intcurUnseqFileIndexprotected org.apache.iotdb.tsfile.file.metadata.enums.TSDataTypedataTypeprotected org.apache.iotdb.tsfile.file.metadata.IChunkMetadatafirstChunkMetadataprotected SeriesScanUtil.VersionPageReaderfirstPageReaderprotected org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadatafirstTimeSeriesMetadataprotected booleanhasCachedNextOverlappedPageprotected PriorityMergeReadermergeReaderprotected java.util.List<SeriesScanUtil.VersionPageReader>seqPageReadersprotected java.util.List<org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata>seqTimeSeriesMetadataprotected java.util.PriorityQueue<SeriesScanUtil.VersionPageReader>unSeqPageReadersprotected java.util.PriorityQueue<org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata>unSeqTimeSeriesMetadata
-
Constructor Summary
Constructors Constructor Description SeriesScanUtil(org.apache.iotdb.commons.path.PartialPath seriesPath, java.util.Set<java.lang.String> allSensors, org.apache.iotdb.tsfile.file.metadata.enums.TSDataType dataType, FragmentInstanceContext context, org.apache.iotdb.tsfile.read.filter.basic.Filter timeFilter, org.apache.iotdb.tsfile.read.filter.basic.Filter valueFilter, boolean ascending)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.apache.iotdb.tsfile.file.metadata.statistics.StatisticscurrentChunkStatistics(int index)protected org.apache.iotdb.tsfile.file.metadata.statistics.StatisticscurrentChunkTimeStatistics()protected org.apache.iotdb.tsfile.file.metadata.statistics.StatisticscurrentFileStatistics(int index)protected org.apache.iotdb.tsfile.file.metadata.statistics.StatisticscurrentFileTimeStatistics()protected org.apache.iotdb.tsfile.file.metadata.statistics.StatisticscurrentPageStatistics(int index)protected org.apache.iotdb.tsfile.file.metadata.statistics.StatisticscurrentPageTimeStatistics()protected DescPriorityMergeReadergetDescPriorityMergeReader()SeriesScanUtil.TimeOrderUtilsgetOrderUtils()protected org.apache.iotdb.tsfile.read.reader.IPointReadergetPointReader(org.apache.iotdb.tsfile.read.common.block.TsBlock tsBlock)protected PriorityMergeReadergetPriorityMergeReader()protected java.util.List<org.apache.iotdb.tsfile.file.metadata.enums.TSDataType>getTsDataTypeList()booleanhasNextChunk()This method should be called after hasNextFile() until no next chunk, make sure that all overlapped chunks are consumedbooleanhasNextFile()booleanhasNextPage()This method should be called after hasNextChunk() until no next page, make sure that all overlapped pages are consumedvoidinitQueryDataSource(java.util.List<TsFileResource> seqFileResource, java.util.List<TsFileResource> unseqFileResource)voidinitQueryDataSource(QueryDataSource dataSource)booleanisEmpty()protected org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadataloadTimeSeriesMetadata(TsFileResource resource, org.apache.iotdb.commons.path.PartialPath seriesPath, QueryContext context, org.apache.iotdb.tsfile.read.filter.basic.Filter filter, java.util.Set<java.lang.String> allSensors)org.apache.iotdb.tsfile.read.common.block.TsBlocknextPage()This method should only be used when the method isPageOverlapped() return true.protected voidtryToUnpackAllOverlappedFilesToTimeSeriesMetadata()unpack all overlapped seq/unseq files and find the first TimeSeriesMetadataprotected voidunpackAllOverlappedTsFilesToTimeSeriesMetadata(long endpointTime)protected voidunpackOneTimeSeriesMetadata(org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata timeSeriesMetadata)
-
-
-
Field Detail
-
allSensors
protected final java.util.Set<java.lang.String> allSensors
-
dataType
protected final org.apache.iotdb.tsfile.file.metadata.enums.TSDataType dataType
-
curSeqFileIndex
protected int curSeqFileIndex
-
curUnseqFileIndex
protected int curUnseqFileIndex
-
firstTimeSeriesMetadata
protected org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata firstTimeSeriesMetadata
-
seqTimeSeriesMetadata
protected final java.util.List<org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata> seqTimeSeriesMetadata
-
unSeqTimeSeriesMetadata
protected final java.util.PriorityQueue<org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata> unSeqTimeSeriesMetadata
-
firstChunkMetadata
protected org.apache.iotdb.tsfile.file.metadata.IChunkMetadata firstChunkMetadata
-
cachedChunkMetadata
protected final java.util.PriorityQueue<org.apache.iotdb.tsfile.file.metadata.IChunkMetadata> cachedChunkMetadata
-
firstPageReader
protected SeriesScanUtil.VersionPageReader firstPageReader
-
seqPageReaders
protected final java.util.List<SeriesScanUtil.VersionPageReader> seqPageReaders
-
unSeqPageReaders
protected final java.util.PriorityQueue<SeriesScanUtil.VersionPageReader> unSeqPageReaders
-
mergeReader
protected final PriorityMergeReader mergeReader
-
hasCachedNextOverlappedPage
protected boolean hasCachedNextOverlappedPage
-
cachedTsBlock
protected org.apache.iotdb.tsfile.read.common.block.TsBlock cachedTsBlock
-
-
Constructor Detail
-
SeriesScanUtil
public SeriesScanUtil(org.apache.iotdb.commons.path.PartialPath seriesPath, java.util.Set<java.lang.String> allSensors, org.apache.iotdb.tsfile.file.metadata.enums.TSDataType dataType, FragmentInstanceContext context, org.apache.iotdb.tsfile.read.filter.basic.Filter timeFilter, org.apache.iotdb.tsfile.read.filter.basic.Filter valueFilter, boolean ascending)
-
-
Method Detail
-
initQueryDataSource
public void initQueryDataSource(QueryDataSource dataSource)
-
initQueryDataSource
public void initQueryDataSource(java.util.List<TsFileResource> seqFileResource, java.util.List<TsFileResource> unseqFileResource)
-
getPriorityMergeReader
protected PriorityMergeReader getPriorityMergeReader()
-
getDescPriorityMergeReader
protected DescPriorityMergeReader getDescPriorityMergeReader()
-
isEmpty
public boolean isEmpty() throws java.io.IOException- Throws:
java.io.IOException
-
hasNextFile
public boolean hasNextFile() throws java.io.IOException- Throws:
java.io.IOException
-
currentFileStatistics
protected org.apache.iotdb.tsfile.file.metadata.statistics.Statistics currentFileStatistics(int index) throws java.io.IOException- Throws:
java.io.IOException
-
currentFileTimeStatistics
protected org.apache.iotdb.tsfile.file.metadata.statistics.Statistics currentFileTimeStatistics() throws java.io.IOException- Throws:
java.io.IOException
-
hasNextChunk
public boolean hasNextChunk() throws java.io.IOExceptionThis method should be called after hasNextFile() until no next chunk, make sure that all overlapped chunks are consumed- Throws:
java.io.IOException
-
unpackOneTimeSeriesMetadata
protected void unpackOneTimeSeriesMetadata(org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata timeSeriesMetadata) throws java.io.IOException- Throws:
java.io.IOException
-
currentChunkStatistics
protected org.apache.iotdb.tsfile.file.metadata.statistics.Statistics currentChunkStatistics(int index) throws java.io.IOException- Throws:
java.io.IOException
-
currentChunkTimeStatistics
protected org.apache.iotdb.tsfile.file.metadata.statistics.Statistics currentChunkTimeStatistics() throws java.io.IOException- Throws:
java.io.IOException
-
hasNextPage
public boolean hasNextPage() throws java.io.IOExceptionThis method should be called after hasNextChunk() until no next page, make sure that all overlapped pages are consumed- Throws:
java.io.IOException
-
currentPageStatistics
protected org.apache.iotdb.tsfile.file.metadata.statistics.Statistics currentPageStatistics(int index) throws java.io.IOException- Throws:
java.io.IOException
-
currentPageTimeStatistics
protected org.apache.iotdb.tsfile.file.metadata.statistics.Statistics currentPageTimeStatistics() throws java.io.IOException- Throws:
java.io.IOException
-
nextPage
public org.apache.iotdb.tsfile.read.common.block.TsBlock nextPage() throws java.io.IOExceptionThis method should only be used when the method isPageOverlapped() return true.- Throws:
java.io.IOException
-
tryToUnpackAllOverlappedFilesToTimeSeriesMetadata
protected void tryToUnpackAllOverlappedFilesToTimeSeriesMetadata() throws java.io.IOExceptionunpack all overlapped seq/unseq files and find the first TimeSeriesMetadataBecause there may be too many files in the scenario used by the user, we cannot open all the chunks at once, which may cause OOM, so we can only unpack one file at a time when needed. This approach is likely to be ubiquitous, but it keeps the system running smoothly
- Throws:
java.io.IOException
-
unpackAllOverlappedTsFilesToTimeSeriesMetadata
protected void unpackAllOverlappedTsFilesToTimeSeriesMetadata(long endpointTime) throws java.io.IOException- Throws:
java.io.IOException
-
loadTimeSeriesMetadata
protected org.apache.iotdb.tsfile.file.metadata.ITimeSeriesMetadata loadTimeSeriesMetadata(TsFileResource resource, org.apache.iotdb.commons.path.PartialPath seriesPath, QueryContext context, org.apache.iotdb.tsfile.read.filter.basic.Filter filter, java.util.Set<java.lang.String> allSensors) throws java.io.IOException
- Throws:
java.io.IOException
-
getTsDataTypeList
protected java.util.List<org.apache.iotdb.tsfile.file.metadata.enums.TSDataType> getTsDataTypeList()
-
getPointReader
protected org.apache.iotdb.tsfile.read.reader.IPointReader getPointReader(org.apache.iotdb.tsfile.read.common.block.TsBlock tsBlock)
-
getOrderUtils
public SeriesScanUtil.TimeOrderUtils getOrderUtils()
-
-