copy timeFilter when initQueryDataSource & initOperator
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/driver/DataDriver.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/driver/DataDriver.java
index ba6909e..4aec571 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/driver/DataDriver.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/driver/DataDriver.java
@@ -136,7 +136,7 @@
pathList,
selectedDeviceIdSet.size() == 1 ? selectedDeviceIdSet.iterator().next() : null,
driverContext.getFragmentInstanceContext(),
- context.getTimeFilter());
+ context.getTimeFilter().copy());
// used files should be added before mergeLock is unlocked, or they may be deleted by
// running merge
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/OperatorTreeGenerator.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/OperatorTreeGenerator.java
index c7964ae..484a342 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/OperatorTreeGenerator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/OperatorTreeGenerator.java
@@ -177,6 +177,7 @@
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.TimeValuePair;
import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.iotdb.tsfile.read.filter.basic.Filter;
import org.apache.iotdb.tsfile.read.filter.operator.Gt;
import org.apache.iotdb.tsfile.read.filter.operator.GtEq;
import org.apache.iotdb.tsfile.utils.Binary;
@@ -243,6 +244,8 @@
node.getPlanNodeId(),
SeriesScanOperator.class.getSimpleName());
+ Filter timeFilter = node.getTimeFilter();
+ Filter valueFilter = node.getValueFilter();
SeriesScanOperator seriesScanOperator =
new SeriesScanOperator(
node.getPlanNodeId(),
@@ -250,8 +253,8 @@
context.getAllSensors(seriesPath.getDevice(), seriesPath.getMeasurement()),
seriesPath.getSeriesType(),
operatorContext,
- node.getTimeFilter(),
- node.getValueFilter(),
+ timeFilter != null ? timeFilter.copy() : null,
+ valueFilter != null ? valueFilter.copy() : null,
ascending);
context.addSourceOperator(seriesScanOperator);
@@ -273,13 +276,15 @@
node.getPlanNodeId(),
AlignedSeriesScanOperator.class.getSimpleName());
+ Filter timeFilter = node.getTimeFilter();
+ Filter valueFilter = node.getValueFilter();
AlignedSeriesScanOperator seriesScanOperator =
new AlignedSeriesScanOperator(
node.getPlanNodeId(),
seriesPath,
operatorContext,
- node.getTimeFilter(),
- node.getValueFilter(),
+ timeFilter != null ? timeFilter.copy() : null,
+ valueFilter != null ? valueFilter.copy() : null,
ascending);
context.addSourceOperator(seriesScanOperator);
@@ -320,6 +325,7 @@
AggregationUtil.calculateMaxAggregationResultSize(
node.getAggregationDescriptorList(), timeRangeIterator, context.getTypeProvider());
+ Filter timeFilter = node.getTimeFilter();
SeriesAggregationScanOperator aggregateScanOperator =
new SeriesAggregationScanOperator(
node.getPlanNodeId(),
@@ -328,7 +334,7 @@
operatorContext,
aggregators,
timeRangeIterator,
- node.getTimeFilter(),
+ timeFilter != null ? timeFilter.copy() : null,
ascending,
node.getGroupByTimeParameter(),
maxReturnSize);
@@ -381,6 +387,7 @@
AggregationUtil.calculateMaxAggregationResultSize(
node.getAggregationDescriptorList(), timeRangeIterator, context.getTypeProvider());
+ Filter timeFilter = node.getTimeFilter();
AlignedSeriesAggregationScanOperator seriesAggregationScanOperator =
new AlignedSeriesAggregationScanOperator(
node.getPlanNodeId(),
@@ -388,7 +395,7 @@
operatorContext,
aggregators,
timeRangeIterator,
- node.getTimeFilter(),
+ timeFilter != null ? timeFilter.copy() : null,
ascending,
groupByTimeParameter,
maxReturnSize);