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; }
