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

hui pushed a commit to branch lmh/refactorFilter
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 697b4a8f89abb14bef64b50cbb73af6a0ded5b10
Author: Minghui Liu <[email protected]>
AuthorDate: Sun Nov 19 19:51:50 2023 +0800

    rename GroupByTimeExpression
---
 .../db/queryengine/plan/expression/Expression.java |   5 +
 .../plan/expression/ExpressionFactory.java         |  18 +--
 .../plan/expression/ExpressionType.java            |   2 +-
 .../expression/other/GroupByTimeExpression.java    | 159 +++++++++++++++++++++
 .../unary/FixedIntervalMultiRangeExpression.java   |  92 ------------
 .../plan/expression/visitor/ExpressionVisitor.java |  11 +-
 .../ConvertExpressionToFilterVisitor.java          |   6 +-
 .../ConvertExpressionToTimeFilterVisitor.java      |  14 +-
 .../ExtractGlobalTimePredicateVisitor.java         |   6 +-
 .../visitor/predicate/PredicateVisitor.java        |  23 ++-
 .../visitor/predicate/ReversePredicateVisitor.java |   6 +-
 .../predicate/SchemaCompatibilityValidator.java    |   6 +-
 12 files changed, 215 insertions(+), 133 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/Expression.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/Expression.java
index c1dfb796949..3624365b69f 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/Expression.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/Expression.java
@@ -41,6 +41,7 @@ import 
org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimestampOperand;
 import 
org.apache.iotdb.db.queryengine.plan.expression.multi.FunctionExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.other.CaseWhenThenExpression;
+import 
org.apache.iotdb.db.queryengine.plan.expression.other.GroupByTimeExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.ternary.BetweenExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.InExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.IsNullExpression;
@@ -356,6 +357,10 @@ public abstract class Expression extends StatementNode {
         expression = new WhenThenExpression(byteBuffer);
         break;
 
+      case 23:
+        expression = new GroupByTimeExpression(byteBuffer);
+        break;
+
       default:
         throw new IllegalArgumentException("Invalid expression type: " + type);
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ExpressionFactory.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ExpressionFactory.java
index f53ba21b1dd..90e2732aff0 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ExpressionFactory.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ExpressionFactory.java
@@ -34,7 +34,7 @@ import 
org.apache.iotdb.db.queryengine.plan.expression.leaf.ConstantOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimestampOperand;
 import 
org.apache.iotdb.db.queryengine.plan.expression.multi.FunctionExpression;
-import 
org.apache.iotdb.db.queryengine.plan.expression.unary.FixedIntervalMultiRangeExpression;
+import 
org.apache.iotdb.db.queryengine.plan.expression.other.GroupByTimeExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.InExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.unary.LogicNotExpression;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.GroupByTimeParameter;
@@ -154,21 +154,17 @@ public class ExpressionFactory {
     return new InExpression(Expression, false, values);
   }
 
-  public static FixedIntervalMultiRangeExpression 
groupByTime(GroupByTimeParameter parameter) {
+  public static GroupByTimeExpression groupByTime(GroupByTimeParameter 
parameter) {
     long startTime =
         parameter.isLeftCRightO() ? parameter.getStartTime() : 
parameter.getStartTime() + 1;
     long endTime = parameter.isLeftCRightO() ? parameter.getEndTime() : 
parameter.getEndTime() + 1;
-    return new FixedIntervalMultiRangeExpression(
-        time(), startTime, endTime, parameter.getInterval(), 
parameter.getSlidingStep());
+    return new GroupByTimeExpression(
+        startTime, endTime, parameter.getInterval(), 
parameter.getSlidingStep());
   }
 
-  public static FixedIntervalMultiRangeExpression groupByTime(
+  public static GroupByTimeExpression groupByTime(
       long startTime, long endTime, long interval, long slidingStep) {
-    return new FixedIntervalMultiRangeExpression(
-        time(),
-        startTime,
-        endTime,
-        new TimeDuration(0, interval),
-        new TimeDuration(0, slidingStep));
+    return new GroupByTimeExpression(
+        startTime, endTime, new TimeDuration(0, interval), new TimeDuration(0, 
slidingStep));
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ExpressionType.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ExpressionType.java
index 9943d5a0e19..81a98956c47 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ExpressionType.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/ExpressionType.java
@@ -61,7 +61,7 @@ public enum ExpressionType {
 
   WHEN_THEN((short) 22, (short) 1000), // priority not sure
 
-  MULTI_RANGE((short) 23, (short) 400);
+  GROUP_BY_TIME((short) 23, (short) 400);
 
   private final short type;
   private final short priority;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/other/GroupByTimeExpression.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/other/GroupByTimeExpression.java
new file mode 100644
index 00000000000..381474f339c
--- /dev/null
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/other/GroupByTimeExpression.java
@@ -0,0 +1,159 @@
+/*
+ * 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.queryengine.plan.expression.other;
+
+import org.apache.iotdb.db.queryengine.common.NodeRef;
+import org.apache.iotdb.db.queryengine.plan.expression.Expression;
+import org.apache.iotdb.db.queryengine.plan.expression.ExpressionType;
+import 
org.apache.iotdb.db.queryengine.plan.expression.visitor.ExpressionVisitor;
+import 
org.apache.iotdb.db.queryengine.plan.planner.plan.parameter.InputLocation;
+import 
org.apache.iotdb.db.queryengine.transformation.dag.memory.LayerMemoryAssigner;
+import org.apache.iotdb.db.queryengine.transformation.dag.udf.UDTFExecutor;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.apache.iotdb.tsfile.utils.TimeDuration;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.time.ZoneId;
+import java.util.List;
+import java.util.Map;
+
+/** Only used for representing GROUP BY TIME filter. */
+public class GroupByTimeExpression extends Expression {
+
+  // [startTime, endTime]
+  private final long startTime;
+  private final long endTime;
+
+  // time interval
+  private final TimeDuration interval;
+
+  // sliding step
+  private final TimeDuration slidingStep;
+
+  public GroupByTimeExpression(
+      long startTime, long endTime, TimeDuration interval, TimeDuration 
slidingStep) {
+    this.startTime = startTime;
+    this.endTime = endTime;
+    this.interval = interval;
+    this.slidingStep = slidingStep;
+  }
+
+  public GroupByTimeExpression(ByteBuffer byteBuffer) {
+    this.startTime = ReadWriteIOUtils.readLong(byteBuffer);
+    this.endTime = ReadWriteIOUtils.readLong(byteBuffer);
+    this.interval = TimeDuration.deserialize(byteBuffer);
+    this.slidingStep = TimeDuration.deserialize(byteBuffer);
+  }
+
+  public long getStartTime() {
+    return startTime;
+  }
+
+  public long getEndTime() {
+    return endTime;
+  }
+
+  public TimeDuration getInterval() {
+    return interval;
+  }
+
+  public TimeDuration getSlidingStep() {
+    return slidingStep;
+  }
+
+  @Override
+  public ExpressionType getExpressionType() {
+    return ExpressionType.GROUP_BY_TIME;
+  }
+
+  @Override
+  public boolean isMappable(Map<NodeRef<Expression>, TSDataType> 
expressionTypes) {
+    throw new UnsupportedOperationException();
+  }
+
+  @Override
+  protected boolean isConstantOperandInternal() {
+    throw new UnsupportedOperationException();
+  }
+
+  @Override
+  public void constructUdfExecutors(
+      Map<String, UDTFExecutor> expressionName2Executor, ZoneId zoneId) {
+    throw new UnsupportedOperationException();
+  }
+
+  @Override
+  public void bindInputLayerColumnIndexWithExpression(
+      Map<String, List<InputLocation>> inputLocations) {
+    throw new UnsupportedOperationException();
+  }
+
+  @Override
+  public void updateStatisticsForMemoryAssigner(LayerMemoryAssigner 
memoryAssigner) {
+    throw new UnsupportedOperationException();
+  }
+
+  @Override
+  public List<Expression> getExpressions() {
+    throw new UnsupportedOperationException();
+  }
+
+  @Override
+  public String getOutputSymbolInternal() {
+    return getExpressionStringInternal();
+  }
+
+  @Override
+  protected String getExpressionStringInternal() {
+    return "group by time(["
+        + startTime
+        + ", "
+        + endTime
+        + "], "
+        + interval
+        + ", "
+        + slidingStep
+        + ")";
+  }
+
+  @Override
+  protected void serialize(ByteBuffer byteBuffer) {
+    ReadWriteIOUtils.write(startTime, byteBuffer);
+    ReadWriteIOUtils.write(endTime, byteBuffer);
+    interval.serialize(byteBuffer);
+    slidingStep.serialize(byteBuffer);
+  }
+
+  @Override
+  protected void serialize(DataOutputStream stream) throws IOException {
+    ReadWriteIOUtils.write(startTime, stream);
+    ReadWriteIOUtils.write(endTime, stream);
+    interval.serialize(stream);
+    slidingStep.serialize(stream);
+  }
+
+  @Override
+  public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
+    return visitor.visitGroupByTimeExpression(this, context);
+  }
+}
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/FixedIntervalMultiRangeExpression.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/FixedIntervalMultiRangeExpression.java
deleted file mode 100644
index d41af1bc930..00000000000
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/unary/FixedIntervalMultiRangeExpression.java
+++ /dev/null
@@ -1,92 +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.queryengine.plan.expression.unary;
-
-import org.apache.iotdb.db.queryengine.plan.expression.Expression;
-import org.apache.iotdb.db.queryengine.plan.expression.ExpressionType;
-import 
org.apache.iotdb.db.queryengine.plan.expression.visitor.ExpressionVisitor;
-import org.apache.iotdb.tsfile.utils.TimeDuration;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-public class FixedIntervalMultiRangeExpression extends UnaryExpression {
-
-  // [startTime, endTime]
-  private long startTime;
-  private long endTime;
-
-  // time interval
-  private TimeDuration interval;
-
-  // sliding step
-  private TimeDuration slidingStep;
-
-  public FixedIntervalMultiRangeExpression(
-      Expression expression,
-      long startTime,
-      long endTime,
-      TimeDuration interval,
-      TimeDuration slidingStep) {
-    super(expression);
-    checkArgument(
-        expression.getExpressionType().equals(ExpressionType.TIMESTAMP),
-        "Only used for representing GROUP BY TIME filter.");
-    this.startTime = startTime;
-    this.endTime = endTime;
-    this.interval = interval;
-    this.slidingStep = slidingStep;
-  }
-
-  public long getStartTime() {
-    return startTime;
-  }
-
-  public long getEndTime() {
-    return endTime;
-  }
-
-  public TimeDuration getInterval() {
-    return interval;
-  }
-
-  public TimeDuration getSlidingStep() {
-    return slidingStep;
-  }
-
-  @Override
-  public ExpressionType getExpressionType() {
-    return ExpressionType.MULTI_RANGE;
-  }
-
-  @Override
-  public String getOutputSymbolInternal() {
-    return null;
-  }
-
-  @Override
-  protected String getExpressionStringInternal() {
-    return null;
-  }
-
-  @Override
-  public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
-    return visitor.visitFixedIntervalMultiRangeExpression(this, context);
-  }
-}
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ExpressionVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ExpressionVisitor.java
index f6737d2ad6a..74537fb60b8 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ExpressionVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/ExpressionVisitor.java
@@ -45,9 +45,9 @@ import 
org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimestampOperand;
 import 
org.apache.iotdb.db.queryengine.plan.expression.multi.FunctionExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.other.CaseWhenThenExpression;
+import 
org.apache.iotdb.db.queryengine.plan.expression.other.GroupByTimeExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.ternary.BetweenExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.ternary.TernaryExpression;
-import 
org.apache.iotdb.db.queryengine.plan.expression.unary.FixedIntervalMultiRangeExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.InExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.IsNullExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LikeExpression;
@@ -79,11 +79,6 @@ public abstract class ExpressionVisitor<R, C> {
     return visitUnaryExpression(inExpression, context);
   }
 
-  public R visitFixedIntervalMultiRangeExpression(
-      FixedIntervalMultiRangeExpression fixedIntervalMultiRangeExpression, C 
context) {
-    return visitUnaryExpression(fixedIntervalMultiRangeExpression, context);
-  }
-
   public R visitIsNullExpression(IsNullExpression isNullExpression, C context) 
{
     return visitUnaryExpression(isNullExpression, context);
   }
@@ -214,4 +209,8 @@ public abstract class ExpressionVisitor<R, C> {
   public R visitWhenThenExpression(WhenThenExpression whenThenExpression, C 
context) {
     return visitBinaryExpression(whenThenExpression, context);
   }
+
+  public R visitGroupByTimeExpression(GroupByTimeExpression 
groupByTimeExpression, C context) {
+    throw new UnsupportedOperationException();
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertExpressionToFilterVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertExpressionToFilterVisitor.java
index 058bf0e79ef..f174e19427d 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertExpressionToFilterVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertExpressionToFilterVisitor.java
@@ -32,8 +32,8 @@ import 
org.apache.iotdb.db.queryengine.plan.expression.binary.LogicOrExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.binary.NonEqualExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.ConstantOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
+import 
org.apache.iotdb.db.queryengine.plan.expression.other.GroupByTimeExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.ternary.BetweenExpression;
-import 
org.apache.iotdb.db.queryengine.plan.expression.unary.FixedIntervalMultiRangeExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.InExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.IsNullExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LikeExpression;
@@ -108,8 +108,8 @@ public class ConvertExpressionToFilterVisitor extends 
PredicateVisitor<Filter, T
   }
 
   @Override
-  public Filter visitFixedIntervalMultiRangeExpression(
-      FixedIntervalMultiRangeExpression fixedIntervalMultiRangeExpression, 
TypeProvider context) {
+  public Filter visitGroupByTimeExpression(
+      GroupByTimeExpression groupByTimeExpression, TypeProvider context) {
     throw new UnsupportedOperationException("FixedIntervalMultiRangeExpression 
is not supported");
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertExpressionToTimeFilterVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertExpressionToTimeFilterVisitor.java
index 8a970f51477..07d6c401302 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertExpressionToTimeFilterVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertExpressionToTimeFilterVisitor.java
@@ -30,8 +30,8 @@ import 
org.apache.iotdb.db.queryengine.plan.expression.binary.LogicAndExpression
 import 
org.apache.iotdb.db.queryengine.plan.expression.binary.LogicOrExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.binary.NonEqualExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.ConstantOperand;
+import 
org.apache.iotdb.db.queryengine.plan.expression.other.GroupByTimeExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.ternary.BetweenExpression;
-import 
org.apache.iotdb.db.queryengine.plan.expression.unary.FixedIntervalMultiRangeExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.InExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.IsNullExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LikeExpression;
@@ -224,12 +224,12 @@ public class ConvertExpressionToTimeFilterVisitor extends 
PredicateVisitor<Filte
   }
 
   @Override
-  public Filter visitFixedIntervalMultiRangeExpression(
-      FixedIntervalMultiRangeExpression fixedIntervalMultiRangeExpression, 
Void context) {
-    long startTime = fixedIntervalMultiRangeExpression.getStartTime();
-    long endTime = fixedIntervalMultiRangeExpression.getEndTime();
-    TimeDuration interval = fixedIntervalMultiRangeExpression.getInterval();
-    TimeDuration slidingStep = 
fixedIntervalMultiRangeExpression.getSlidingStep();
+  public Filter visitGroupByTimeExpression(
+      GroupByTimeExpression groupByTimeExpression, Void context) {
+    long startTime = groupByTimeExpression.getStartTime();
+    long endTime = groupByTimeExpression.getEndTime();
+    TimeDuration interval = groupByTimeExpression.getInterval();
+    TimeDuration slidingStep = groupByTimeExpression.getSlidingStep();
 
     if (slidingStep.compareTo(interval) <= 0) {
       // slidingStep <= interval, full time range
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ExtractGlobalTimePredicateVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ExtractGlobalTimePredicateVisitor.java
index 91ea5c1cf73..2a1b6e6b968 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ExtractGlobalTimePredicateVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ExtractGlobalTimePredicateVisitor.java
@@ -28,8 +28,8 @@ import 
org.apache.iotdb.db.queryengine.plan.expression.binary.LessThanExpression
 import 
org.apache.iotdb.db.queryengine.plan.expression.binary.LogicAndExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.binary.LogicOrExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.binary.NonEqualExpression;
+import 
org.apache.iotdb.db.queryengine.plan.expression.other.GroupByTimeExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.ternary.BetweenExpression;
-import 
org.apache.iotdb.db.queryengine.plan.expression.unary.FixedIntervalMultiRangeExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.InExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.IsNullExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LikeExpression;
@@ -46,8 +46,8 @@ public class ExtractGlobalTimePredicateVisitor
   }
 
   @Override
-  public Expression visitFixedIntervalMultiRangeExpression(
-      FixedIntervalMultiRangeExpression fixedIntervalMultiRangeExpression, 
Context context) {
+  public Expression visitGroupByTimeExpression(
+      GroupByTimeExpression groupByTimeExpression, Context context) {
     return null;
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/PredicateVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/PredicateVisitor.java
index 60336b0effd..fe36b95fd04 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/PredicateVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/PredicateVisitor.java
@@ -28,8 +28,8 @@ import 
org.apache.iotdb.db.queryengine.plan.expression.binary.LessThanExpression
 import 
org.apache.iotdb.db.queryengine.plan.expression.binary.LogicAndExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.binary.LogicOrExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.binary.NonEqualExpression;
+import 
org.apache.iotdb.db.queryengine.plan.expression.other.GroupByTimeExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.ternary.BetweenExpression;
-import 
org.apache.iotdb.db.queryengine.plan.expression.unary.FixedIntervalMultiRangeExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.InExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.IsNullExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LikeExpression;
@@ -52,36 +52,51 @@ public abstract class PredicateVisitor<R, C> extends 
ExpressionVisitor<R, C> {
         "Unsupported expression type: " + expression.getExpressionType());
   }
 
+  @Override
   public abstract R visitInExpression(InExpression inExpression, C context);
 
-  public abstract R visitFixedIntervalMultiRangeExpression(
-      FixedIntervalMultiRangeExpression fixedIntervalMultiRangeExpression, C 
context);
-
+  @Override
   public abstract R visitIsNullExpression(IsNullExpression isNullExpression, C 
context);
 
+  @Override
   public abstract R visitLikeExpression(LikeExpression likeExpression, C 
context);
 
+  @Override
   public abstract R visitRegularExpression(RegularExpression 
regularExpression, C context);
 
+  @Override
   public abstract R visitLogicNotExpression(LogicNotExpression 
logicNotExpression, C context);
 
+  @Override
   public abstract R visitLogicAndExpression(LogicAndExpression 
logicAndExpression, C context);
 
+  @Override
   public abstract R visitLogicOrExpression(LogicOrExpression 
logicOrExpression, C context);
 
+  @Override
   public abstract R visitEqualToExpression(EqualToExpression 
equalToExpression, C context);
 
+  @Override
   public abstract R visitNonEqualExpression(NonEqualExpression 
nonEqualExpression, C context);
 
+  @Override
   public abstract R visitGreaterThanExpression(
       GreaterThanExpression greaterThanExpression, C context);
 
+  @Override
   public abstract R visitGreaterEqualExpression(
       GreaterEqualExpression greaterEqualExpression, C context);
 
+  @Override
   public abstract R visitLessThanExpression(LessThanExpression 
lessThanExpression, C context);
 
+  @Override
   public abstract R visitLessEqualExpression(LessEqualExpression 
lessEqualExpression, C context);
 
+  @Override
   public abstract R visitBetweenExpression(BetweenExpression 
betweenExpression, C context);
+
+  @Override
+  public abstract R visitGroupByTimeExpression(
+      GroupByTimeExpression groupByTimeExpression, C context);
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ReversePredicateVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ReversePredicateVisitor.java
index 4b1dab1d5ee..6718f5ff9d0 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ReversePredicateVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ReversePredicateVisitor.java
@@ -29,8 +29,8 @@ import 
org.apache.iotdb.db.queryengine.plan.expression.binary.LessThanExpression
 import 
org.apache.iotdb.db.queryengine.plan.expression.binary.LogicAndExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.binary.LogicOrExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.binary.NonEqualExpression;
+import 
org.apache.iotdb.db.queryengine.plan.expression.other.GroupByTimeExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.ternary.BetweenExpression;
-import 
org.apache.iotdb.db.queryengine.plan.expression.unary.FixedIntervalMultiRangeExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.InExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.IsNullExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LikeExpression;
@@ -51,8 +51,8 @@ public class ReversePredicateVisitor extends 
PredicateVisitor<Expression, Void>
   }
 
   @Override
-  public Expression visitFixedIntervalMultiRangeExpression(
-      FixedIntervalMultiRangeExpression fixedIntervalMultiRangeExpression, 
Void context) {
+  public Expression visitGroupByTimeExpression(
+      GroupByTimeExpression groupByTimeExpression, Void context) {
     throw new UnsupportedOperationException("GROUP BY TIME doesn't support 
reverse predicate");
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/SchemaCompatibilityValidator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/SchemaCompatibilityValidator.java
index 8bc84560e49..d4fe7424896 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/SchemaCompatibilityValidator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/SchemaCompatibilityValidator.java
@@ -33,8 +33,8 @@ import 
org.apache.iotdb.db.queryengine.plan.expression.binary.NonEqualExpression
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.ConstantOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimeSeriesOperand;
 import org.apache.iotdb.db.queryengine.plan.expression.leaf.TimestampOperand;
+import 
org.apache.iotdb.db.queryengine.plan.expression.other.GroupByTimeExpression;
 import 
org.apache.iotdb.db.queryengine.plan.expression.ternary.BetweenExpression;
-import 
org.apache.iotdb.db.queryengine.plan.expression.unary.FixedIntervalMultiRangeExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.InExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.IsNullExpression;
 import org.apache.iotdb.db.queryengine.plan.expression.unary.LikeExpression;
@@ -95,8 +95,8 @@ public class SchemaCompatibilityValidator
   }
 
   @Override
-  public Void visitFixedIntervalMultiRangeExpression(
-      FixedIntervalMultiRangeExpression fixedIntervalMultiRangeExpression, 
Context context) {
+  public Void visitGroupByTimeExpression(
+      GroupByTimeExpression groupByTimeExpression, Context context) {
     // needn't check
     return null;
   }

Reply via email to