You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by su...@apache.org on 2019/06/22 08:37:15 UTC
[incubator-iotdb] branch feature_async_close_tsfile updated:
replace old query interface
This is an automated email from the ASF dual-hosted git repository.
suyue pushed a commit to branch feature_async_close_tsfile
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
The following commit(s) were added to refs/heads/feature_async_close_tsfile by this push:
new 9095c0d replace old query interface
new 0e52c55 Merge branch 'feature_async_close_tsfile' of https://github.com/apache/incubator-iotdb into feature_async_close_tsfile
9095c0d is described below
commit 9095c0d88a6128570c9118f72ca91b761ec63e3e
Author: suyue <23...@qq.com>
AuthorDate: Sat Jun 22 16:36:24 2019 +0800
replace old query interface
---
.../apache/iotdb/db/query/dataset/AuthDataSet.java | 6 +-
.../dataset/EngineDataSetWithTimeGenerator.java | 2 -
.../groupby/GroupByWithOnlyTimeFilterDataSet.java | 29 ++++----
.../groupby/GroupByWithValueFilterDataSet.java | 8 +-
.../AbstractExecutorWithoutTimeGenerator.java | 84 ---------------------
.../AbstractExecutorWithoutTimeGeneratorV2.java | 85 ----------------------
.../db/query/executor/AggregateEngineExecutor.java | 39 +++++-----
.../executor/EngineExecutorWithTimeGenerator.java | 16 ++--
.../EngineExecutorWithoutTimeGenerator.java | 29 +++++++-
.../db/query/executor/FillEngineExecutor.java | 7 +-
.../db/query/factory/ISeriesReaderFactory.java | 3 +-
.../db/query/factory/SeriesReaderFactoryImpl.java | 40 +++++++---
.../java/org/apache/iotdb/db/query/fill/IFill.java | 26 ++-----
.../org/apache/iotdb/db/query/fill/LinearFill.java | 8 +-
.../apache/iotdb/db/query/fill/PreviousFill.java | 8 +-
.../reader/sequence/SequenceDataReaderV2.java | 13 ++--
.../timegenerator/AbstractNodeConstructor.java | 34 ---------
.../query/timegenerator/EngineNodeConstructor.java | 10 ++-
18 files changed, 136 insertions(+), 311 deletions(-)
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/AuthDataSet.java b/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/AuthDataSet.java
index 1846f12..e283378 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/AuthDataSet.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/AuthDataSet.java
@@ -29,8 +29,8 @@ import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
public class AuthDataSet extends QueryDataSet {
- List<RowRecord> records = new ArrayList<>();
- int index = 0;
+ private List<RowRecord> records = new ArrayList<>();
+ private int index = 0;
public AuthDataSet(List<Path> paths,
List<TSDataType> dataTypes) {
@@ -43,7 +43,7 @@ public class AuthDataSet extends QueryDataSet {
}
@Override
- public RowRecord next() throws IOException {
+ public RowRecord next() {
return records.get(index++);
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/EngineDataSetWithTimeGenerator.java b/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/EngineDataSetWithTimeGenerator.java
index 04b46f1..2f86407 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/EngineDataSetWithTimeGenerator.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/EngineDataSetWithTimeGenerator.java
@@ -22,13 +22,11 @@ import java.io.IOException;
import java.util.List;
import org.apache.iotdb.db.query.reader.merge.EngineReaderByTimeStamp;
import org.apache.iotdb.db.query.timegenerator.EngineTimeGenerator;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.Field;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.read.common.RowRecord;
import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-import org.apache.iotdb.tsfile.utils.Binary;
public class EngineDataSetWithTimeGenerator extends QueryDataSet {
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithOnlyTimeFilterDataSet.java b/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithOnlyTimeFilterDataSet.java
index e2688ba..873682b 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithOnlyTimeFilterDataSet.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithOnlyTimeFilterDataSet.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.db.query.dataset.groupby;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
+import org.apache.iotdb.db.engine.querycontext.QueryDataSourceV2;
import org.apache.iotdb.db.exception.FileNodeManagerException;
import org.apache.iotdb.db.exception.PathErrorException;
import org.apache.iotdb.db.exception.ProcessorException;
@@ -30,11 +30,10 @@ import org.apache.iotdb.db.query.aggregation.AggreResultData;
import org.apache.iotdb.db.query.aggregation.AggregateFunction;
import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.control.QueryResourceManager;
-import org.apache.iotdb.db.query.factory.SeriesReaderFactory;
+import org.apache.iotdb.db.query.factory.SeriesReaderFactoryImpl;
import org.apache.iotdb.db.query.reader.IAggregateReader;
import org.apache.iotdb.db.query.reader.IPointReader;
-import org.apache.iotdb.db.query.reader.merge.PriorityMergeReader;
-import org.apache.iotdb.db.query.reader.sequence.SequenceDataReader;
+import org.apache.iotdb.db.query.reader.sequence.SequenceDataReaderV2;
import org.apache.iotdb.tsfile.file.header.PageHeader;
import org.apache.iotdb.tsfile.read.common.BatchData;
import org.apache.iotdb.tsfile.read.common.Field;
@@ -47,8 +46,8 @@ import org.apache.iotdb.tsfile.utils.Pair;
public class GroupByWithOnlyTimeFilterDataSet extends GroupByEngineDataSet {
- protected List<IPointReader> unSequenceReaderList;
- protected List<IAggregateReader> sequenceReaderList;
+ private List<IPointReader> unSequenceReaderList;
+ private List<IAggregateReader> sequenceReaderList;
private List<BatchData> batchDataList;
private List<Boolean> hasCachedSequenceDataList;
private Filter timeFilter;
@@ -81,17 +80,19 @@ public class GroupByWithOnlyTimeFilterDataSet extends GroupByEngineDataSet {
if (expression != null) {
timeFilter = ((GlobalTimeExpression) expression).getFilter();
}
- for (int i = 0; i < selectedSeries.size(); i++) {
- QueryDataSource queryDataSource = QueryResourceManager.getInstance()
- .getQueryDataSource(selectedSeries.get(i), context);
+ for (Path path : selectedSeries) {
+ QueryDataSourceV2 queryDataSource = QueryResourceManager.getInstance()
+ .getQueryDataSourceV2(path, context);
// sequence reader for sealed tsfile, unsealed tsfile, memory
- SequenceDataReader sequenceReader = new SequenceDataReader(queryDataSource.getSeqDataSource(),
- timeFilter, context, false);
+ SequenceDataReaderV2 sequenceReader = new SequenceDataReaderV2(
+ queryDataSource.getSeriesPath(), queryDataSource.getSeqResources(), timeFilter, context,
+ false);
// unseq reader for all chunk groups in unSeqFile, memory
- PriorityMergeReader unSeqMergeReader = SeriesReaderFactory.getInstance()
- .createUnSeqMergeReader(queryDataSource.getOverflowSeriesDataSource(), timeFilter);
+ IPointReader unSeqMergeReader = SeriesReaderFactoryImpl.getInstance()
+ .createUnSeqReader(queryDataSource.getSeriesPath(), queryDataSource.getUnseqResources(),
+ timeFilter);
sequenceReaderList.add(sequenceReader);
unSequenceReaderList.add(unSeqMergeReader);
@@ -108,7 +109,7 @@ public class GroupByWithOnlyTimeFilterDataSet extends GroupByEngineDataSet {
hasCachedTimeInterval = false;
RowRecord record = new RowRecord(startTime);
for (int i = 0; i < functions.size(); i++) {
- AggreResultData res = null;
+ AggreResultData res;
try {
res = nextSeries(i);
} catch (ProcessorException e) {
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithValueFilterDataSet.java b/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithValueFilterDataSet.java
index f7ffa29..fc2a1b4 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithValueFilterDataSet.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithValueFilterDataSet.java
@@ -29,7 +29,7 @@ import org.apache.iotdb.db.exception.ProcessorException;
import org.apache.iotdb.db.query.aggregation.AggregateFunction;
import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.control.QueryResourceManager;
-import org.apache.iotdb.db.query.factory.SeriesReaderFactory;
+import org.apache.iotdb.db.query.factory.SeriesReaderFactoryImpl;
import org.apache.iotdb.db.query.reader.merge.EngineReaderByTimeStamp;
import org.apache.iotdb.db.query.timegenerator.EngineTimeGenerator;
import org.apache.iotdb.tsfile.read.common.Path;
@@ -70,15 +70,15 @@ public class GroupByWithValueFilterDataSet extends GroupByEngineDataSet {
* init reader and aggregate function.
*/
public void initGroupBy(QueryContext context, List<String> aggres, IExpression expression)
- throws FileNodeManagerException, PathErrorException, ProcessorException, IOException {
+ throws FileNodeManagerException, PathErrorException, ProcessorException {
initAggreFuction(aggres);
QueryResourceManager.getInstance().beginQueryOfGivenExpression(context.getJobId(), expression);
QueryResourceManager
.getInstance().beginQueryOfGivenQueryPaths(context.getJobId(), selectedSeries);
this.timestampGenerator = new EngineTimeGenerator(expression, context);
- this.allDataReaderList = SeriesReaderFactory
- .getByTimestampReadersOfSelectedPaths(selectedSeries, context);
+ this.allDataReaderList = SeriesReaderFactoryImpl.getInstance()
+ .createByTimestampReadersOfSelectedPaths(selectedSeries, context);
}
@Override
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/executor/AbstractExecutorWithoutTimeGenerator.java b/iotdb/src/main/java/org/apache/iotdb/db/query/executor/AbstractExecutorWithoutTimeGenerator.java
deleted file mode 100644
index f5f07c8..0000000
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/executor/AbstractExecutorWithoutTimeGenerator.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.query.executor;
-
-import java.io.IOException;
-import java.util.List;
-import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
-import org.apache.iotdb.db.exception.FileNodeManagerException;
-import org.apache.iotdb.db.exception.PathErrorException;
-import org.apache.iotdb.db.metadata.MManager;
-import org.apache.iotdb.db.query.context.QueryContext;
-import org.apache.iotdb.db.query.control.QueryResourceManager;
-import org.apache.iotdb.db.query.factory.SeriesReaderFactory;
-import org.apache.iotdb.db.query.reader.AllDataReader;
-import org.apache.iotdb.db.query.reader.IPointReader;
-import org.apache.iotdb.db.query.reader.merge.PriorityMergeReader;
-import org.apache.iotdb.db.query.reader.sequence.SequenceDataReader;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-
-/**
- * Query executor with global time filter.
- */
-public abstract class AbstractExecutorWithoutTimeGenerator {
-
- /**
- * Create reader of a series
- *
- * @param context query context
- * @param path series path
- * @param dataTypes list of data type
- * @param timeFilter time filter
- * @return reader of the series
- */
- public static IPointReader createSeriesReader(QueryContext context, Path path,
- List<TSDataType> dataTypes, Filter timeFilter)
- throws FileNodeManagerException {
- QueryDataSource queryDataSource = QueryResourceManager.getInstance().getQueryDataSource(path,
- context);
- // add data type
- try {
- dataTypes.add(MManager.getInstance().getSeriesType(path.getFullPath()));
- } catch (PathErrorException e) {
- throw new FileNodeManagerException(e);
- }
-
- // sequence reader for one sealed tsfile
- SequenceDataReader tsFilesReader;
- try {
- tsFilesReader = new SequenceDataReader(queryDataSource.getSeqDataSource(),
- timeFilter, context);
- } catch (IOException e) {
- throw new FileNodeManagerException(e);
- }
-
- // unseq reader for all chunk groups in unSeqFile
- PriorityMergeReader unSeqMergeReader;
- try {
- unSeqMergeReader = SeriesReaderFactory.getInstance()
- .createUnSeqMergeReader(queryDataSource.getOverflowSeriesDataSource(), timeFilter);
- } catch (IOException e) {
- throw new FileNodeManagerException(e);
- }
- // merge sequence data with unsequence data.
- return new AllDataReader(tsFilesReader, unSeqMergeReader);
- }
-}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/executor/AbstractExecutorWithoutTimeGeneratorV2.java b/iotdb/src/main/java/org/apache/iotdb/db/query/executor/AbstractExecutorWithoutTimeGeneratorV2.java
deleted file mode 100644
index b5fbb2e..0000000
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/executor/AbstractExecutorWithoutTimeGeneratorV2.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.query.executor;
-
-import java.io.IOException;
-import java.util.List;
-import org.apache.iotdb.db.engine.querycontext.QueryDataSourceV2;
-import org.apache.iotdb.db.exception.FileNodeManagerException;
-import org.apache.iotdb.db.exception.PathErrorException;
-import org.apache.iotdb.db.metadata.MManager;
-import org.apache.iotdb.db.query.context.QueryContext;
-import org.apache.iotdb.db.query.control.QueryResourceManager;
-import org.apache.iotdb.db.query.factory.SeriesReaderFactory;
-import org.apache.iotdb.db.query.reader.AllDataReader;
-import org.apache.iotdb.db.query.reader.IPointReader;
-import org.apache.iotdb.db.query.reader.merge.PriorityMergeReader;
-import org.apache.iotdb.db.query.reader.sequence.SequenceDataReaderV2;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-
-/**
- * Query executor with global time filter.
- */
-public abstract class AbstractExecutorWithoutTimeGeneratorV2 {
-
- /**
- * Create reader of a series
- *
- * @param context query context
- * @param path series path
- * @param dataTypes list of data type
- * @param timeFilter time filter
- * @return reader of the series
- */
- public static IPointReader createSeriesReader(QueryContext context, Path path,
- List<TSDataType> dataTypes, Filter timeFilter)
- throws FileNodeManagerException {
- QueryDataSourceV2 queryDataSource = QueryResourceManager.getInstance().getQueryDataSourceV2(path,
- context);
- // add data type
- try {
- dataTypes.add(MManager.getInstance().getSeriesType(path.getFullPath()));
- } catch (PathErrorException e) {
- throw new FileNodeManagerException(e);
- }
-
- // sequence reader for one sealed tsfile
- SequenceDataReaderV2 tsFilesReader;
- try {
- tsFilesReader = new SequenceDataReaderV2(queryDataSource.getSeriesPath(), queryDataSource.getSeqResources(),
- timeFilter, context);
- } catch (IOException e) {
- throw new FileNodeManagerException(e);
- }
-
- //TODO add refact overflow
- // unseq reader for all chunk groups in unSeqFile
- PriorityMergeReader unSeqMergeReader = null;
-// try {
-// unSeqMergeReader = SeriesReaderFactory.getInstance()
-// .createUnSeqMergeReader(queryDataSource.getOverflowSeriesDataSource(), timeFilter);
-// } catch (IOException e) {
-// throw new FileNodeManagerException(e);
-// }
- // merge sequence data with unsequence data.
- return new AllDataReader(tsFilesReader, unSeqMergeReader);
- }
-}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/executor/AggregateEngineExecutor.java b/iotdb/src/main/java/org/apache/iotdb/db/query/executor/AggregateEngineExecutor.java
index f91a8ff..a608127 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/executor/AggregateEngineExecutor.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/executor/AggregateEngineExecutor.java
@@ -23,12 +23,11 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
+import org.apache.iotdb.db.engine.querycontext.QueryDataSourceV2;
import org.apache.iotdb.db.exception.FileNodeManagerException;
import org.apache.iotdb.db.exception.PathErrorException;
import org.apache.iotdb.db.exception.ProcessorException;
import org.apache.iotdb.db.metadata.MManager;
-import org.apache.iotdb.db.query.factory.AggreFuncFactory;
import org.apache.iotdb.db.query.aggregation.AggreResultData;
import org.apache.iotdb.db.query.aggregation.AggregateFunction;
import org.apache.iotdb.db.query.aggregation.impl.LastAggrFunc;
@@ -37,11 +36,12 @@ import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.control.QueryResourceManager;
import org.apache.iotdb.db.query.dataset.AggreResultDataPointReader;
import org.apache.iotdb.db.query.dataset.EngineDataSetWithoutTimeGenerator;
-import org.apache.iotdb.db.query.factory.SeriesReaderFactory;
+import org.apache.iotdb.db.query.factory.AggreFuncFactory;
+import org.apache.iotdb.db.query.factory.SeriesReaderFactoryImpl;
+import org.apache.iotdb.db.query.reader.IAggregateReader;
import org.apache.iotdb.db.query.reader.IPointReader;
import org.apache.iotdb.db.query.reader.merge.EngineReaderByTimeStamp;
-import org.apache.iotdb.db.query.reader.merge.PriorityMergeReader;
-import org.apache.iotdb.db.query.reader.sequence.SequenceDataReader;
+import org.apache.iotdb.db.query.reader.sequence.SequenceDataReaderV2;
import org.apache.iotdb.db.query.timegenerator.EngineTimeGenerator;
import org.apache.iotdb.tsfile.file.header.PageHeader;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -88,7 +88,7 @@ public class AggregateEngineExecutor {
QueryResourceManager
.getInstance().beginQueryOfGivenQueryPaths(context.getJobId(), selectedSeries);
- List<SequenceDataReader> readersOfSequenceData = new ArrayList<>();
+ List<IAggregateReader> readersOfSequenceData = new ArrayList<>();
List<IPointReader> readersOfUnSequenceData = new ArrayList<>();
List<AggregateFunction> aggregateFunctions = new ArrayList<>();
for (int i = 0; i < selectedSeries.size(); i++) {
@@ -99,22 +99,23 @@ public class AggregateEngineExecutor {
function.init();
aggregateFunctions.add(function);
- QueryDataSource queryDataSource = QueryResourceManager.getInstance()
- .getQueryDataSource(selectedSeries.get(i), context);
+ QueryDataSourceV2 queryDataSource = QueryResourceManager.getInstance()
+ .getQueryDataSourceV2(selectedSeries.get(i), context);
// sequence reader for sealed tsfile, unsealed tsfile, memory
- SequenceDataReader sequenceReader;
+ SequenceDataReaderV2 sequenceReader;
if (function instanceof MaxTimeAggrFunc || function instanceof LastAggrFunc) {
- sequenceReader = new SequenceDataReader(queryDataSource.getSeqDataSource(), timeFilter,
- context, true);
+ sequenceReader = new SequenceDataReaderV2(queryDataSource.getSeriesPath(),
+ queryDataSource.getSeqResources(), timeFilter, context, true);
} else {
- sequenceReader = new SequenceDataReader(queryDataSource.getSeqDataSource(), timeFilter,
- context, false);
+ sequenceReader = new SequenceDataReaderV2(queryDataSource.getSeriesPath(),
+ queryDataSource.getSeqResources(), timeFilter, context, false);
}
// unseq reader for all chunk groups in unSeqFile, memory
- PriorityMergeReader unSeqMergeReader = SeriesReaderFactory.getInstance()
- .createUnSeqMergeReader(queryDataSource.getOverflowSeriesDataSource(), timeFilter);
+ IPointReader unSeqMergeReader = SeriesReaderFactoryImpl.getInstance()
+ .createUnSeqReader(queryDataSource.getSeriesPath(), queryDataSource.getUnseqResources(),
+ timeFilter);
readersOfSequenceData.add(sequenceReader);
readersOfUnSequenceData.add(unSeqMergeReader);
@@ -139,7 +140,7 @@ public class AggregateEngineExecutor {
* @return one series aggregate result data
*/
private AggreResultData aggregateWithOutTimeGenerator(AggregateFunction function,
- SequenceDataReader sequenceReader, IPointReader unSequenceReader, Filter filter)
+ IAggregateReader sequenceReader, IPointReader unSequenceReader, Filter filter)
throws IOException, ProcessorException {
if (function instanceof MaxTimeAggrFunc || function instanceof LastAggrFunc) {
return handleLastMaxTimeWithOutTimeGenerator(function, sequenceReader, unSequenceReader,
@@ -206,7 +207,7 @@ public class AggregateEngineExecutor {
* @return BatchData-aggregate result
*/
private AggreResultData handleLastMaxTimeWithOutTimeGenerator(AggregateFunction function,
- SequenceDataReader sequenceReader, IPointReader unSequenceReader, Filter timeFilter)
+ IAggregateReader sequenceReader, IPointReader unSequenceReader, Filter timeFilter)
throws IOException, ProcessorException {
long lastBatchTimeStamp = Long.MIN_VALUE;
boolean isChunkEnd = false;
@@ -262,8 +263,8 @@ public class AggregateEngineExecutor {
QueryResourceManager.getInstance().beginQueryOfGivenExpression(context.getJobId(), expression);
EngineTimeGenerator timestampGenerator = new EngineTimeGenerator(expression, context);
- List<EngineReaderByTimeStamp> readersOfSelectedSeries = SeriesReaderFactory
- .getByTimestampReadersOfSelectedPaths(selectedSeries, context);
+ List<EngineReaderByTimeStamp> readersOfSelectedSeries = SeriesReaderFactoryImpl.getInstance()
+ .createByTimestampReadersOfSelectedPaths(selectedSeries, context);
List<AggregateFunction> aggregateFunctions = new ArrayList<>();
for (int i = 0; i < selectedSeries.size(); i++) {
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/executor/EngineExecutorWithTimeGenerator.java b/iotdb/src/main/java/org/apache/iotdb/db/query/executor/EngineExecutorWithTimeGenerator.java
index 9001ee0..3deb7c1 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/executor/EngineExecutorWithTimeGenerator.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/executor/EngineExecutorWithTimeGenerator.java
@@ -28,7 +28,7 @@ import org.apache.iotdb.db.metadata.MManager;
import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.control.QueryResourceManager;
import org.apache.iotdb.db.query.dataset.EngineDataSetWithTimeGenerator;
-import org.apache.iotdb.db.query.factory.SeriesReaderFactory;
+import org.apache.iotdb.db.query.factory.SeriesReaderFactoryImpl;
import org.apache.iotdb.db.query.reader.merge.EngineReaderByTimeStamp;
import org.apache.iotdb.db.query.timegenerator.EngineTimeGenerator;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -37,7 +37,7 @@ import org.apache.iotdb.tsfile.read.expression.QueryExpression;
import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
/**
- * IoTDB query executor with filter.
+ * IoTDB query executor with value filter.
*/
public class EngineExecutorWithTimeGenerator {
@@ -51,7 +51,6 @@ public class EngineExecutorWithTimeGenerator {
* execute query.
*
* @return QueryDataSet object
- * @throws IOException IOException
* @throws FileNodeManagerException FileNodeManagerException
*/
public QueryDataSet execute(QueryContext context) throws FileNodeManagerException {
@@ -63,13 +62,10 @@ public class EngineExecutorWithTimeGenerator {
EngineTimeGenerator timestampGenerator;
List<EngineReaderByTimeStamp> readersOfSelectedSeries;
- try {
- timestampGenerator = new EngineTimeGenerator(queryExpression.getExpression(), context);
- readersOfSelectedSeries = SeriesReaderFactory
- .getByTimestampReadersOfSelectedPathsV2(queryExpression.getSelectedSeries(), context);
- } catch (IOException ex) {
- throw new FileNodeManagerException(ex);
- }
+
+ timestampGenerator = new EngineTimeGenerator(queryExpression.getExpression(), context);
+ readersOfSelectedSeries = SeriesReaderFactoryImpl.getInstance()
+ .createByTimestampReadersOfSelectedPaths(queryExpression.getSelectedSeries(), context);
List<TSDataType> dataTypes = new ArrayList<>();
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/executor/EngineExecutorWithoutTimeGenerator.java b/iotdb/src/main/java/org/apache/iotdb/db/query/executor/EngineExecutorWithoutTimeGenerator.java
index 0198c69..34d93cc 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/executor/EngineExecutorWithoutTimeGenerator.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/executor/EngineExecutorWithoutTimeGenerator.java
@@ -22,9 +22,12 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.iotdb.db.exception.FileNodeManagerException;
+import org.apache.iotdb.db.exception.PathErrorException;
+import org.apache.iotdb.db.metadata.MManager;
import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.control.QueryResourceManager;
import org.apache.iotdb.db.query.dataset.EngineDataSetWithoutTimeGenerator;
+import org.apache.iotdb.db.query.factory.SeriesReaderFactoryImpl;
import org.apache.iotdb.db.query.reader.IPointReader;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.Path;
@@ -36,7 +39,7 @@ import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
/**
* IoTDB query executor of Stand-alone version with global time filter.
*/
-public class EngineExecutorWithoutTimeGenerator extends AbstractExecutorWithoutTimeGeneratorV2 {
+public class EngineExecutorWithoutTimeGenerator {
private QueryExpression queryExpression;
@@ -48,7 +51,7 @@ public class EngineExecutorWithoutTimeGenerator extends AbstractExecutorWithoutT
* without filter or with global time filter.
*/
public QueryDataSet execute(QueryContext context)
- throws FileNodeManagerException {
+ throws FileNodeManagerException, IOException {
Filter timeFilter = null;
if (queryExpression.hasQueryFilter()) {
@@ -74,4 +77,26 @@ public class EngineExecutorWithoutTimeGenerator extends AbstractExecutorWithoutT
throw new FileNodeManagerException(e);
}
}
+
+ /**
+ * Create reader of a series
+ *
+ * @param context query context
+ * @param path series path
+ * @param dataTypes list of data type
+ * @param timeFilter time filter
+ * @return reader of the series
+ */
+ public static IPointReader createSeriesReader(QueryContext context, Path path,
+ List<TSDataType> dataTypes, Filter timeFilter)
+ throws FileNodeManagerException, IOException {
+ // add data type
+ try {
+ dataTypes.add(MManager.getInstance().getSeriesType(path.getFullPath()));
+ } catch (PathErrorException e) {
+ throw new FileNodeManagerException(e);
+ }
+
+ return SeriesReaderFactoryImpl.getInstance().createAllDataReader(path, timeFilter, context);
+ }
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/executor/FillEngineExecutor.java b/iotdb/src/main/java/org/apache/iotdb/db/query/executor/FillEngineExecutor.java
index 83c5fa9..2b3adeb 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/executor/FillEngineExecutor.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/executor/FillEngineExecutor.java
@@ -23,7 +23,6 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
import org.apache.iotdb.db.exception.FileNodeManagerException;
import org.apache.iotdb.db.exception.PathErrorException;
import org.apache.iotdb.db.metadata.MManager;
@@ -64,11 +63,9 @@ public class FillEngineExecutor {
List<IFill> fillList = new ArrayList<>();
List<TSDataType> dataTypeList = new ArrayList<>();
for (Path path : selectedSeries) {
- QueryDataSource queryDataSource = QueryResourceManager.getInstance()
- .getQueryDataSource(path, context);
TSDataType dataType = MManager.getInstance().getSeriesType(path.getFullPath());
dataTypeList.add(dataType);
- IFill fill = null;
+ IFill fill;
if (!typeIFillMap.containsKey(dataType)) {
fill = new PreviousFill(dataType, queryTime, 0);
} else {
@@ -76,7 +73,7 @@ public class FillEngineExecutor {
}
fill.setDataType(dataType);
fill.setQueryTime(queryTime);
- fill.constructReaders(queryDataSource, context);
+ fill.constructReaders(path, context);
fillList.add(fill);
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/factory/ISeriesReaderFactory.java b/iotdb/src/main/java/org/apache/iotdb/db/query/factory/ISeriesReaderFactory.java
index c1be4ce..ebbf7ff 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/factory/ISeriesReaderFactory.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/factory/ISeriesReaderFactory.java
@@ -26,7 +26,6 @@ import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.reader.IPointReader;
import org.apache.iotdb.db.query.reader.merge.EngineReaderByTimeStamp;
import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
import org.apache.iotdb.tsfile.read.filter.basic.Filter;
/**
@@ -63,5 +62,5 @@ public interface ISeriesReaderFactory {
* @return the list of EngineReaderByTimeStamp
*/
IPointReader createAllDataReader(Path path, Filter timeFilter,
- QueryContext context) throws FileNodeManagerException;
+ QueryContext context) throws FileNodeManagerException, IOException;
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/factory/SeriesReaderFactoryImpl.java b/iotdb/src/main/java/org/apache/iotdb/db/query/factory/SeriesReaderFactoryImpl.java
index 8fa8d19..79d63f8 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/factory/SeriesReaderFactoryImpl.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/factory/SeriesReaderFactoryImpl.java
@@ -34,9 +34,20 @@ import org.apache.iotdb.db.query.reader.sequence.SequenceDataReaderByTimestampV2
import org.apache.iotdb.db.query.reader.sequence.SequenceDataReaderV2;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class SeriesReaderFactoryImpl implements ISeriesReaderFactory {
+ private static final Logger logger = LoggerFactory.getLogger(SeriesReaderFactory.class);
+
+ private SeriesReaderFactoryImpl() {
+ }
+
+ public static SeriesReaderFactoryImpl getInstance() {
+ return SeriesReaderFactoryHelper.INSTANCE;
+ }
+
@Override
public IPointReader createUnSeqReader(Path seriesPath, List<TsFileResourceV2> unSeqResources,
Filter filter) throws IOException {
@@ -80,30 +91,35 @@ public class SeriesReaderFactoryImpl implements ISeriesReaderFactory {
@Override
public IPointReader createAllDataReader(Path path, Filter timeFilter, QueryContext context)
- throws FileNodeManagerException {
+ throws FileNodeManagerException, IOException {
QueryDataSourceV2 queryDataSource = QueryResourceManager.getInstance()
- .getQueryDataSourceV2(path,
- context);
+ .getQueryDataSourceV2(path, context);
// sequence reader for one sealed tsfile
SequenceDataReaderV2 tsFilesReader;
- try {
+
tsFilesReader = new SequenceDataReaderV2(queryDataSource.getSeriesPath(),
queryDataSource.getSeqResources(),
timeFilter, context);
- } catch (IOException e) {
- throw new FileNodeManagerException(e);
- }
// unseq reader for all chunk groups in unSeqFile
IPointReader unSeqMergeReader = null;
- try {
unSeqMergeReader = createUnSeqReader(path, queryDataSource.getUnseqResources(), timeFilter);
- } catch (IOException e) {
- throw new FileNodeManagerException(e);
+
+ if (!tsFilesReader.hasNext()) {
+ //only have unsequence data.
+ return unSeqMergeReader;
+ } else {
+ //merge sequence data with unsequence data.
+ return new AllDataReader(tsFilesReader, unSeqMergeReader);
}
- // merge sequence data with unsequence data.
- return new AllDataReader(tsFilesReader, unSeqMergeReader);
}
+ private static class SeriesReaderFactoryHelper {
+
+ private static final SeriesReaderFactoryImpl INSTANCE = new SeriesReaderFactoryImpl();
+
+ private SeriesReaderFactoryHelper() {
+ }
+ }
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/fill/IFill.java b/iotdb/src/main/java/org/apache/iotdb/db/query/fill/IFill.java
index 83291b7..c720500 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/fill/IFill.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/fill/IFill.java
@@ -20,13 +20,10 @@
package org.apache.iotdb.db.query.fill;
import java.io.IOException;
-import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
+import org.apache.iotdb.db.exception.FileNodeManagerException;
import org.apache.iotdb.db.query.context.QueryContext;
-import org.apache.iotdb.db.query.factory.SeriesReaderFactory;
-import org.apache.iotdb.db.query.reader.AllDataReader;
+import org.apache.iotdb.db.query.factory.SeriesReaderFactoryImpl;
import org.apache.iotdb.db.query.reader.IPointReader;
-import org.apache.iotdb.db.query.reader.merge.PriorityMergeReader;
-import org.apache.iotdb.db.query.reader.sequence.SequenceDataReader;
import org.apache.iotdb.db.utils.TimeValuePair;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.Path;
@@ -50,21 +47,14 @@ public abstract class IFill {
public abstract IFill copy(Path path);
- public abstract void constructReaders(QueryDataSource queryDataSource, QueryContext context)
- throws IOException;
+ public abstract void constructReaders(Path path, QueryContext context)
+ throws IOException, FileNodeManagerException;
- void constructReaders(QueryDataSource queryDataSource, QueryContext context, long beforeRange)
- throws IOException {
+ void constructReaders(Path path, QueryContext context, long beforeRange)
+ throws IOException, FileNodeManagerException {
Filter timeFilter = constructFilter(beforeRange);
- // sequence reader for sealed tsfile, unsealed tsfile, memory
- SequenceDataReader sequenceReader = new SequenceDataReader(queryDataSource.getSeqDataSource(),
- timeFilter, context, false);
-
- // unseq reader for all chunk groups in unSeqFile, memory
- PriorityMergeReader unSeqMergeReader = SeriesReaderFactory.getInstance()
- .createUnSeqMergeReader(queryDataSource.getOverflowSeriesDataSource(), timeFilter);
-
- allDataReader = new AllDataReader(sequenceReader, unSeqMergeReader);
+ allDataReader = SeriesReaderFactoryImpl.getInstance()
+ .createAllDataReader(path, timeFilter, context);
}
public abstract IPointReader getFillResult() throws IOException;
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/fill/LinearFill.java b/iotdb/src/main/java/org/apache/iotdb/db/query/fill/LinearFill.java
index dc46082..2f8f6ac 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/fill/LinearFill.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/fill/LinearFill.java
@@ -20,7 +20,7 @@
package org.apache.iotdb.db.query.fill;
import java.io.IOException;
-import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
+import org.apache.iotdb.db.exception.FileNodeManagerException;
import org.apache.iotdb.db.exception.UnSupportedFillTypeException;
import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.reader.IPointReader;
@@ -71,9 +71,9 @@ public class LinearFill extends IFill {
}
@Override
- public void constructReaders(QueryDataSource queryDataSource, QueryContext context)
- throws IOException {
- super.constructReaders(queryDataSource, context, beforeRange);
+ public void constructReaders(Path path, QueryContext context)
+ throws IOException, FileNodeManagerException {
+ super.constructReaders(path, context, beforeRange);
}
@Override
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/fill/PreviousFill.java b/iotdb/src/main/java/org/apache/iotdb/db/query/fill/PreviousFill.java
index b75fb4f..1e0584f 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/fill/PreviousFill.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/fill/PreviousFill.java
@@ -19,7 +19,7 @@
package org.apache.iotdb.db.query.fill;
import java.io.IOException;
-import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
+import org.apache.iotdb.db.exception.FileNodeManagerException;
import org.apache.iotdb.db.query.context.QueryContext;
import org.apache.iotdb.db.query.reader.IPointReader;
import org.apache.iotdb.db.utils.TimeValuePair;
@@ -45,9 +45,9 @@ public class PreviousFill extends IFill {
}
@Override
- public void constructReaders(QueryDataSource queryDataSource, QueryContext context)
- throws IOException {
- super.constructReaders(queryDataSource, context, beforeRange);
+ public void constructReaders(Path path, QueryContext context)
+ throws IOException, FileNodeManagerException {
+ super.constructReaders(path, context, beforeRange);
}
public long getBeforeRange() {
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/SequenceDataReaderV2.java b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/SequenceDataReaderV2.java
index f785e30..51c7718 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/SequenceDataReaderV2.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/reader/sequence/SequenceDataReaderV2.java
@@ -18,6 +18,9 @@
*/
package org.apache.iotdb.db.query.reader.sequence;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
import org.apache.iotdb.db.engine.filenodeV2.TsFileResourceV2;
import org.apache.iotdb.db.engine.modification.Modification;
import org.apache.iotdb.db.query.context.QueryContext;
@@ -36,10 +39,6 @@ import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReader;
import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReaderWithFilter;
import org.apache.iotdb.tsfile.read.reader.series.FileSeriesReaderWithoutFilter;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-
/**
* batch reader of data in: 1) sealed tsfile. 2) unsealed tsfile, which include data in disk of
* unsealed file and in memtables that will be flushing to unsealed tsfile.
@@ -62,7 +61,8 @@ public class SequenceDataReaderV2 extends IterateReader {
* @param isReverse true-traverse chunks from behind forward, false-traverse chunks from front to
* back.
*/
- public SequenceDataReaderV2(Path seriesPath, List<TsFileResourceV2> seqResources, Filter timeFilter, QueryContext context, boolean isReverse) throws IOException {
+ public SequenceDataReaderV2(Path seriesPath, List<TsFileResourceV2> seqResources,
+ Filter timeFilter, QueryContext context, boolean isReverse) throws IOException {
super();
this.seriesPath = seriesPath;
this.enableReverse = isReverse;
@@ -83,7 +83,8 @@ public class SequenceDataReaderV2 extends IterateReader {
/**
* traverse chunks from front to back.
*/
- public SequenceDataReaderV2(Path seriesPath, List<TsFileResourceV2> seqResources, Filter timeFilter, QueryContext context) throws IOException {
+ public SequenceDataReaderV2(Path seriesPath, List<TsFileResourceV2> seqResources,
+ Filter timeFilter, QueryContext context) throws IOException {
this(seriesPath, seqResources, timeFilter, context, false);
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/timegenerator/AbstractNodeConstructor.java b/iotdb/src/main/java/org/apache/iotdb/db/query/timegenerator/AbstractNodeConstructor.java
index 5d83314..a320df3 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/timegenerator/AbstractNodeConstructor.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/timegenerator/AbstractNodeConstructor.java
@@ -22,20 +22,11 @@ import static org.apache.iotdb.tsfile.read.expression.ExpressionType.AND;
import static org.apache.iotdb.tsfile.read.expression.ExpressionType.OR;
import java.io.IOException;
-import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
import org.apache.iotdb.db.exception.FileNodeManagerException;
import org.apache.iotdb.db.query.context.QueryContext;
-import org.apache.iotdb.db.query.control.QueryResourceManager;
-import org.apache.iotdb.db.query.factory.SeriesReaderFactory;
-import org.apache.iotdb.db.query.reader.AllDataReader;
-import org.apache.iotdb.db.query.reader.IReader;
-import org.apache.iotdb.db.query.reader.merge.PriorityMergeReader;
-import org.apache.iotdb.db.query.reader.sequence.SequenceDataReader;
import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
import org.apache.iotdb.tsfile.read.expression.IBinaryExpression;
import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.basic.Filter;
import org.apache.iotdb.tsfile.read.query.timegenerator.node.AndNode;
import org.apache.iotdb.tsfile.read.query.timegenerator.node.Node;
import org.apache.iotdb.tsfile.read.query.timegenerator.node.OrNode;
@@ -81,29 +72,4 @@ public abstract class AbstractNodeConstructor {
}
}
- protected IReader generateSeriesReader(SingleSeriesExpression singleSeriesExpression,
- QueryContext context)
- throws IOException, FileNodeManagerException {
-
- QueryDataSource queryDataSource = QueryResourceManager.getInstance().getQueryDataSource(
- singleSeriesExpression.getSeriesPath(), context);
-
- Filter filter = singleSeriesExpression.getFilter();
-
- // reader for all sequence data
- SequenceDataReader tsFilesReader = new SequenceDataReader(queryDataSource.getSeqDataSource(),
- filter, context);
-
- // reader for all unSequence data
- PriorityMergeReader unSeqMergeReader = SeriesReaderFactory.getInstance()
- .createUnSeqMergeReader(queryDataSource.getOverflowSeriesDataSource(), filter);
-
- if (!tsFilesReader.hasNext()) {
- //only have unsequence data.
- return unSeqMergeReader;
- } else {
- //merge sequence data with unsequence data.
- return new AllDataReader(tsFilesReader, unSeqMergeReader);
- }
- }
}
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/query/timegenerator/EngineNodeConstructor.java b/iotdb/src/main/java/org/apache/iotdb/db/query/timegenerator/EngineNodeConstructor.java
index 45e6ac6..cc68ec2 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/query/timegenerator/EngineNodeConstructor.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/query/timegenerator/EngineNodeConstructor.java
@@ -24,8 +24,11 @@ import static org.apache.iotdb.tsfile.read.expression.ExpressionType.SERIES;
import java.io.IOException;
import org.apache.iotdb.db.exception.FileNodeManagerException;
import org.apache.iotdb.db.query.context.QueryContext;
+import org.apache.iotdb.db.query.factory.SeriesReaderFactoryImpl;
+import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.read.expression.IExpression;
import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
+import org.apache.iotdb.tsfile.read.filter.basic.Filter;
import org.apache.iotdb.tsfile.read.query.timegenerator.node.Node;
public class EngineNodeConstructor extends AbstractNodeConstructor {
@@ -38,7 +41,6 @@ public class EngineNodeConstructor extends AbstractNodeConstructor {
*
* @param expression expression
* @return Node object
- * @throws IOException IOException
* @throws FileNodeManagerException FileNodeManagerException
*/
@Override
@@ -46,8 +48,10 @@ public class EngineNodeConstructor extends AbstractNodeConstructor {
throws FileNodeManagerException {
if (expression.getType() == SERIES) {
try {
- return new EngineLeafNode(generateSeriesReader((SingleSeriesExpression) expression,
- context));
+ Filter filter = ((SingleSeriesExpression) expression).getFilter();
+ Path path = ((SingleSeriesExpression) expression).getSeriesPath();
+ return new EngineLeafNode(
+ SeriesReaderFactoryImpl.getInstance().createAllDataReader(path, filter, context));
} catch (IOException e) {
throw new FileNodeManagerException(e);
}