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

hxd pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 5a752b0  [IOTDB-1267] optimize ServerTimeGenerator IExpression 
parameter (#2955)
5a752b0 is described below

commit 5a752b0df8ffd09ef01f37735817afa0c1208a7b
Author: wangchao316 <[email protected]>
AuthorDate: Thu Apr 1 14:33:17 2021 +0800

    [IOTDB-1267] optimize ServerTimeGenerator IExpression parameter (#2955)
---
 .../cluster/query/ClusterDataQueryExecutor.java      | 10 +++-------
 .../query/aggregate/ClusterAggregateExecutor.java    |  2 +-
 .../query/groupby/ClusterGroupByVFilterDataSet.java  |  6 ++----
 .../cluster/query/reader/ClusterTimeGenerator.java   |  6 +++---
 .../query/reader/ClusterTimeGeneratorTest.java       |  2 +-
 .../groupby/GroupByWithValueFilterDataSet.java       |  9 +++------
 .../iotdb/db/query/executor/AggregationExecutor.java |  2 +-
 .../db/query/executor/RawDataQueryExecutor.java      |  9 +++------
 .../iotdb/db/query/executor/UDTFQueryExecutor.java   |  6 ++----
 .../db/query/timegenerator/ServerTimeGenerator.java  |  5 ++---
 .../db/integration/IoTDBEngineTimeGeneratorIT.java   | 20 ++++++++++----------
 11 files changed, 31 insertions(+), 46 deletions(-)

diff --git 
a/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterDataQueryExecutor.java
 
b/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterDataQueryExecutor.java
index 9ebde27..f28f088 100644
--- 
a/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterDataQueryExecutor.java
+++ 
b/cluster/src/main/java/org/apache/iotdb/cluster/query/ClusterDataQueryExecutor.java
@@ -38,7 +38,6 @@ import 
org.apache.iotdb.db.query.executor.RawDataQueryExecutor;
 import org.apache.iotdb.db.query.reader.series.IReaderByTimestamp;
 import org.apache.iotdb.db.query.reader.series.ManagedSeriesReader;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
 import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
 import org.apache.iotdb.tsfile.read.filter.basic.Filter;
 import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
@@ -200,11 +199,9 @@ public class ClusterDataQueryExecutor extends 
RawDataQueryExecutor {
   }
 
   @Override
-  protected TimeGenerator getTimeGenerator(
-      IExpression queryExpression, QueryContext context, RawDataQueryPlan 
rawDataQueryPlan)
+  protected TimeGenerator getTimeGenerator(QueryContext context, 
RawDataQueryPlan rawDataQueryPlan)
       throws StorageEngineException {
-    return new ClusterTimeGenerator(
-        queryExpression, context, metaGroupMember, rawDataQueryPlan, false);
+    return new ClusterTimeGenerator(context, metaGroupMember, 
rawDataQueryPlan, false);
   }
 
   @Override
@@ -214,8 +211,7 @@ public class ClusterDataQueryExecutor extends 
RawDataQueryExecutor {
       if (hasValueFilter) {
         // 1. check time Generator has local data
         ClusterTimeGenerator clusterTimeGenerator =
-            new ClusterTimeGenerator(
-                queryPlan.getExpression(), context, metaGroupMember, 
queryPlan, true);
+            new ClusterTimeGenerator(context, metaGroupMember, queryPlan, 
true);
         if (clusterTimeGenerator.isHasLocalReader()) {
           this.hasLocalReader = true;
           this.endPoint = null;
diff --git 
a/cluster/src/main/java/org/apache/iotdb/cluster/query/aggregate/ClusterAggregateExecutor.java
 
b/cluster/src/main/java/org/apache/iotdb/cluster/query/aggregate/ClusterAggregateExecutor.java
index ba6eba3..1104cae 100644
--- 
a/cluster/src/main/java/org/apache/iotdb/cluster/query/aggregate/ClusterAggregateExecutor.java
+++ 
b/cluster/src/main/java/org/apache/iotdb/cluster/query/aggregate/ClusterAggregateExecutor.java
@@ -85,7 +85,7 @@ public class ClusterAggregateExecutor extends 
AggregationExecutor {
   @Override
   protected TimeGenerator getTimeGenerator(QueryContext context, 
RawDataQueryPlan rawDataQueryPlan)
       throws StorageEngineException {
-    return new ClusterTimeGenerator(expression, context, metaMember, 
rawDataQueryPlan, false);
+    return new ClusterTimeGenerator(context, metaMember, rawDataQueryPlan, 
false);
   }
 
   @Override
diff --git 
a/cluster/src/main/java/org/apache/iotdb/cluster/query/groupby/ClusterGroupByVFilterDataSet.java
 
b/cluster/src/main/java/org/apache/iotdb/cluster/query/groupby/ClusterGroupByVFilterDataSet.java
index a954234..02e9f3f 100644
--- 
a/cluster/src/main/java/org/apache/iotdb/cluster/query/groupby/ClusterGroupByVFilterDataSet.java
+++ 
b/cluster/src/main/java/org/apache/iotdb/cluster/query/groupby/ClusterGroupByVFilterDataSet.java
@@ -33,7 +33,6 @@ import 
org.apache.iotdb.db.query.dataset.groupby.GroupByWithValueFilterDataSet;
 import org.apache.iotdb.db.query.filter.TsFileFilter;
 import org.apache.iotdb.db.query.reader.series.IReaderByTimestamp;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
 import org.apache.iotdb.tsfile.read.query.timegenerator.TimeGenerator;
 
 import java.util.ArrayList;
@@ -60,10 +59,9 @@ public class ClusterGroupByVFilterDataSet extends 
GroupByWithValueFilterDataSet
   }
 
   @Override
-  protected TimeGenerator getTimeGenerator(
-      IExpression expression, QueryContext context, RawDataQueryPlan 
rawDataQueryPlan)
+  protected TimeGenerator getTimeGenerator(QueryContext context, 
RawDataQueryPlan rawDataQueryPlan)
       throws StorageEngineException {
-    return new ClusterTimeGenerator(expression, context, metaGroupMember, 
rawDataQueryPlan, false);
+    return new ClusterTimeGenerator(context, metaGroupMember, 
rawDataQueryPlan, false);
   }
 
   @Override
diff --git 
a/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGenerator.java
 
b/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGenerator.java
index 371c81b..43d2668 100644
--- 
a/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGenerator.java
+++ 
b/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGenerator.java
@@ -58,7 +58,6 @@ public class ClusterTimeGenerator extends ServerTimeGenerator 
{
 
   /** Constructor of EngineTimeGenerator. */
   public ClusterTimeGenerator(
-      IExpression expression,
       QueryContext context,
       MetaGroupMember metaGroupMember,
       RawDataQueryPlan rawDataQueryPlan,
@@ -70,9 +69,10 @@ public class ClusterTimeGenerator extends 
ServerTimeGenerator {
     try {
       readerFactory.syncMetaGroup();
       if (onlyCheckLocalData) {
-        whetherHasLocalDataGroup(expression, metaGroupMember, 
queryPlan.isAscending());
+        whetherHasLocalDataGroup(
+            queryPlan.getExpression(), metaGroupMember, 
queryPlan.isAscending());
       } else {
-        constructNode(expression);
+        constructNode(queryPlan.getExpression());
       }
     } catch (IOException | CheckConsistencyException e) {
       throw new StorageEngineException(e);
diff --git 
a/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGeneratorTest.java
 
b/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGeneratorTest.java
index 402400d..a414fd9 100644
--- 
a/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGeneratorTest.java
+++ 
b/cluster/src/test/java/org/apache/iotdb/cluster/query/reader/ClusterTimeGeneratorTest.java
@@ -62,7 +62,7 @@ public class ClusterTimeGeneratorTest extends BaseQueryTest {
       dataQueryPlan.addDeduplicatedPaths(new 
PartialPath(TestUtils.getTestSeries(1, 1)));
 
       ClusterTimeGenerator timeGenerator =
-          new ClusterTimeGenerator(expression, context, testMetaMember, 
dataQueryPlan, false);
+          new ClusterTimeGenerator(context, testMetaMember, dataQueryPlan, 
false);
       for (int i = 3; i <= 8; i++) {
         assertTrue(timeGenerator.hasNext());
         assertEquals(i, timeGenerator.next());
diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithValueFilterDataSet.java
 
b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithValueFilterDataSet.java
index 12ffd30..e3e8a2b 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithValueFilterDataSet.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithValueFilterDataSet.java
@@ -39,7 +39,6 @@ import org.apache.iotdb.db.utils.TestOnly;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.common.Path;
 import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
 import org.apache.iotdb.tsfile.read.query.timegenerator.TimeGenerator;
 import org.apache.iotdb.tsfile.utils.Pair;
 
@@ -81,8 +80,7 @@ public class GroupByWithValueFilterDataSet extends 
GroupByEngineDataSet {
   /** init reader and aggregate function. */
   protected void initGroupBy(QueryContext context, GroupByTimePlan 
groupByTimePlan)
       throws StorageEngineException, QueryProcessException {
-    this.timestampGenerator =
-        getTimeGenerator(groupByTimePlan.getExpression(), context, 
groupByTimePlan);
+    this.timestampGenerator = getTimeGenerator(context, groupByTimePlan);
     this.allDataReaderList = new ArrayList<>();
     this.groupByTimePlan = groupByTimePlan;
 
@@ -100,10 +98,9 @@ public class GroupByWithValueFilterDataSet extends 
GroupByEngineDataSet {
     }
   }
 
-  protected TimeGenerator getTimeGenerator(
-      IExpression expression, QueryContext context, RawDataQueryPlan queryPlan)
+  protected TimeGenerator getTimeGenerator(QueryContext context, 
RawDataQueryPlan queryPlan)
       throws StorageEngineException {
-    return new ServerTimeGenerator(expression, context, queryPlan);
+    return new ServerTimeGenerator(context, queryPlan);
   }
 
   protected IReaderByTimestamp getReaderByTime(
diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
 
b/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
index 2416f4d..c01f3c3 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
@@ -390,7 +390,7 @@ public class AggregationExecutor {
 
   protected TimeGenerator getTimeGenerator(QueryContext context, 
RawDataQueryPlan queryPlan)
       throws StorageEngineException {
-    return new ServerTimeGenerator(expression, context, queryPlan);
+    return new ServerTimeGenerator(context, queryPlan);
   }
 
   protected IReaderByTimestamp getReaderByTime(
diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/executor/RawDataQueryExecutor.java
 
b/server/src/main/java/org/apache/iotdb/db/query/executor/RawDataQueryExecutor.java
index fc75d0e..ac13c1e 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/executor/RawDataQueryExecutor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/executor/RawDataQueryExecutor.java
@@ -36,7 +36,6 @@ import 
org.apache.iotdb.db.query.reader.series.SeriesRawDataBatchReader;
 import org.apache.iotdb.db.query.reader.series.SeriesReaderByTimestamp;
 import org.apache.iotdb.db.query.timegenerator.ServerTimeGenerator;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
 import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
 import org.apache.iotdb.tsfile.read.filter.basic.Filter;
 import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
@@ -146,8 +145,7 @@ public class RawDataQueryExecutor {
       return dataSet;
     }
 
-    TimeGenerator timestampGenerator =
-        getTimeGenerator(queryPlan.getExpression(), context, queryPlan);
+    TimeGenerator timestampGenerator = getTimeGenerator(context, queryPlan);
     List<Boolean> cached =
         markFilterdPaths(
             queryPlan.getExpression(),
@@ -204,10 +202,9 @@ public class RawDataQueryExecutor {
         queryPlan.isAscending());
   }
 
-  protected TimeGenerator getTimeGenerator(
-      IExpression expression, QueryContext context, RawDataQueryPlan queryPlan)
+  protected TimeGenerator getTimeGenerator(QueryContext context, 
RawDataQueryPlan queryPlan)
       throws StorageEngineException {
-    return new ServerTimeGenerator(expression, context, queryPlan);
+    return new ServerTimeGenerator(context, queryPlan);
   }
 
   /**
diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/executor/UDTFQueryExecutor.java
 
b/server/src/main/java/org/apache/iotdb/db/query/executor/UDTFQueryExecutor.java
index c621e59..b0ce81a 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/executor/UDTFQueryExecutor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/executor/UDTFQueryExecutor.java
@@ -58,8 +58,7 @@ public class UDTFQueryExecutor extends RawDataQueryExecutor {
 
   public QueryDataSet executeWithValueFilterAlignByTime(QueryContext context)
       throws StorageEngineException, QueryProcessException, IOException {
-    TimeGenerator timestampGenerator =
-        getTimeGenerator(udtfPlan.getExpression(), context, udtfPlan);
+    TimeGenerator timestampGenerator = getTimeGenerator(context, udtfPlan);
     List<Boolean> cached =
         markFilterdPaths(
             udtfPlan.getExpression(),
@@ -90,8 +89,7 @@ public class UDTFQueryExecutor extends RawDataQueryExecutor {
 
   public QueryDataSet executeWithValueFilterNonAlign(QueryContext context)
       throws QueryProcessException, StorageEngineException, IOException {
-    TimeGenerator timestampGenerator =
-        getTimeGenerator(udtfPlan.getExpression(), context, udtfPlan);
+    TimeGenerator timestampGenerator = getTimeGenerator(context, udtfPlan);
     List<Boolean> cached =
         markFilterdPaths(
             udtfPlan.getExpression(),
diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/timegenerator/ServerTimeGenerator.java
 
b/server/src/main/java/org/apache/iotdb/db/query/timegenerator/ServerTimeGenerator.java
index ba9691a..5a9ce98 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/timegenerator/ServerTimeGenerator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/timegenerator/ServerTimeGenerator.java
@@ -58,13 +58,12 @@ public class ServerTimeGenerator extends TimeGenerator {
   }
 
   /** Constructor of EngineTimeGenerator. */
-  public ServerTimeGenerator(
-      IExpression expression, QueryContext context, RawDataQueryPlan queryPlan)
+  public ServerTimeGenerator(QueryContext context, RawDataQueryPlan queryPlan)
       throws StorageEngineException {
     this.context = context;
     this.queryPlan = queryPlan;
     try {
-      serverConstructNode(expression);
+      serverConstructNode(queryPlan.getExpression());
     } catch (IOException e) {
       throw new StorageEngineException(e);
     }
diff --git 
a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBEngineTimeGeneratorIT.java
 
b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBEngineTimeGeneratorIT.java
index 1d440e9..243a5b9 100644
--- 
a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBEngineTimeGeneratorIT.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBEngineTimeGeneratorIT.java
@@ -22,6 +22,7 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.constant.TestConstant;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
+import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.PartialPath;
 import org.apache.iotdb.db.qp.physical.crud.RawDataQueryPlan;
 import org.apache.iotdb.db.query.timegenerator.ServerTimeGenerator;
@@ -188,7 +189,7 @@ public class IoTDBEngineTimeGeneratorIT {
   /** value >= 14 && time > 500 */
   @Test
   public void testOneSeriesWithValueAndTimeFilter()
-      throws IOException, StorageEngineException, IllegalPathException {
+      throws IOException, StorageEngineException, IllegalPathException, 
QueryProcessException {
     // System.out.println("Test >>> root.vehicle.d0.s0 >= 14 && time > 500");
 
     PartialPath pd0s0 =
@@ -202,8 +203,8 @@ public class IoTDBEngineTimeGeneratorIT {
     List<PartialPath> paths = new ArrayList<>();
     paths.add(pd0s0);
     queryPlan.setDeduplicatedPaths(paths);
-    ServerTimeGenerator timeGenerator =
-        new ServerTimeGenerator(singleSeriesExpression, TEST_QUERY_CONTEXT, 
queryPlan);
+    queryPlan.setExpression(singleSeriesExpression);
+    ServerTimeGenerator timeGenerator = new 
ServerTimeGenerator(TEST_QUERY_CONTEXT, queryPlan);
 
     int cnt = 0;
     while (timeGenerator.hasNext()) {
@@ -218,7 +219,7 @@ public class IoTDBEngineTimeGeneratorIT {
   /** root.vehicle.d1.s0 >= 5, and d1.s0 has no data */
   @Test
   public void testEmptySeriesWithValueFilter()
-      throws IOException, StorageEngineException, IllegalPathException {
+      throws IOException, StorageEngineException, IllegalPathException, 
QueryProcessException {
     // System.out.println("Test >>> root.vehicle.d1.s0 >= 5");
 
     PartialPath pd1s0 =
@@ -230,9 +231,8 @@ public class IoTDBEngineTimeGeneratorIT {
     List<PartialPath> paths = new ArrayList<>();
     paths.add(pd1s0);
     queryPlan.setDeduplicatedPaths(paths);
-
-    ServerTimeGenerator timeGenerator =
-        new ServerTimeGenerator(singleSeriesExpression, TEST_QUERY_CONTEXT, 
queryPlan);
+    queryPlan.setExpression(singleSeriesExpression);
+    ServerTimeGenerator timeGenerator = new 
ServerTimeGenerator(TEST_QUERY_CONTEXT, queryPlan);
 
     int cnt = 0;
     while (timeGenerator.hasNext()) {
@@ -244,7 +244,7 @@ public class IoTDBEngineTimeGeneratorIT {
   /** root.vehicle.d0.s0 >= 5 && root.vehicle.d0.s2 >= 11.5 || time > 900 */
   @Test
   public void testMultiSeriesWithValueFilterAndTimeFilter()
-      throws IOException, StorageEngineException, IllegalPathException {
+      throws IOException, StorageEngineException, IllegalPathException, 
QueryProcessException {
     System.out.println(
         "Test >>> root.vehicle.d0.s0 >= 5 && root.vehicle.d0.s2 >= 11.5 || 
time > 900");
 
@@ -269,8 +269,8 @@ public class IoTDBEngineTimeGeneratorIT {
     paths.add(pd0s0);
     paths.add(pd0s2);
     queryPlan.setDeduplicatedPaths(paths);
-    ServerTimeGenerator timeGenerator =
-        new ServerTimeGenerator(andExpression, TEST_QUERY_CONTEXT, queryPlan);
+    queryPlan.setExpression(andExpression);
+    ServerTimeGenerator timeGenerator = new 
ServerTimeGenerator(TEST_QUERY_CONTEXT, queryPlan);
     int cnt = 0;
     while (timeGenerator.hasNext()) {
       long time = timeGenerator.next();

Reply via email to