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

kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git

commit f1f13be60077d37eda53f5146539c955533abc54
Author: morrySnow <101034200+morrys...@users.noreply.github.com>
AuthorDate: Fri Aug 25 11:28:12 2023 +0800

    [opt](Nereids) remove between expression to simplify planner (#23421)
---
 .../glue/translator/ExpressionTranslator.java      |   6 -
 .../doris/nereids/parser/LogicalPlanBuilder.java   |   8 +-
 .../rules/expression/ExpressionNormalization.java  |   2 -
 .../expression/rules/BetweenToCompoundRule.java    |  47 --------
 .../expression/rules/FoldConstantRuleOnBE.java     |   5 -
 .../rules/expression/rules/FunctionBinder.java     |   9 --
 .../doris/nereids/trees/expressions/Between.java   | 124 ---------------------
 .../expressions/visitor/ExpressionVisitor.java     |   5 -
 .../doris/nereids/util/TypeCoercionUtils.java      |  26 -----
 .../rules/expression/ExpressionRewriteTest.java    |  11 --
 .../trees/expressions/ExpressionEqualsTest.java    |   8 --
 .../trees/expressions/ExpressionParserTest.java    |   7 +-
 .../nereids_tpcds_shape_sf100_p0/shape/query10.out |   2 +-
 .../nereids_tpcds_shape_sf100_p0/shape/query16.out |  15 ++-
 .../nereids_tpcds_shape_sf100_p0/shape/query28.out |  28 ++---
 .../nereids_tpcds_shape_sf100_p0/shape/query58.out |   2 +-
 .../nereids_tpcds_shape_sf100_p0/shape/query66.out |   4 +-
 .../nereids_tpcds_shape_sf100_p0/shape/query82.out |   2 +-
 .../nereids_tpcds_shape_sf100_p0/shape/query94.out |   2 +-
 .../nereids_tpcds_shape_sf100_p0/shape/query95.out |   2 +-
 20 files changed, 37 insertions(+), 278 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java
index b448446803..e4777a32df 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java
@@ -49,7 +49,6 @@ import 
org.apache.doris.nereids.trees.expressions.AggregateExpression;
 import org.apache.doris.nereids.trees.expressions.Alias;
 import org.apache.doris.nereids.trees.expressions.And;
 import org.apache.doris.nereids.trees.expressions.AssertNumRowsElement;
-import org.apache.doris.nereids.trees.expressions.Between;
 import org.apache.doris.nereids.trees.expressions.BinaryArithmetic;
 import org.apache.doris.nereids.trees.expressions.CaseWhen;
 import org.apache.doris.nereids.trees.expressions.Cast;
@@ -281,11 +280,6 @@ public class ExpressionTranslator extends 
DefaultExpressionVisitor<Expr, PlanTra
         return nullLit;
     }
 
-    @Override
-    public Expr visitBetween(Between between, PlanTranslatorContext context) {
-        throw new RuntimeException("Unexpected invocation");
-    }
-
     @Override
     public Expr visitAnd(And and, PlanTranslatorContext context) {
         return new org.apache.doris.analysis.CompoundPredicate(
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
index c73ca04a2f..0ab372afe2 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
@@ -130,7 +130,6 @@ import org.apache.doris.nereids.properties.OrderKey;
 import org.apache.doris.nereids.properties.SelectHint;
 import org.apache.doris.nereids.trees.expressions.Add;
 import org.apache.doris.nereids.trees.expressions.And;
-import org.apache.doris.nereids.trees.expressions.Between;
 import org.apache.doris.nereids.trees.expressions.BitAnd;
 import org.apache.doris.nereids.trees.expressions.BitNot;
 import org.apache.doris.nereids.trees.expressions.BitOr;
@@ -1818,10 +1817,9 @@ public class LogicalPlanBuilder extends 
DorisParserBaseVisitor<Object> {
             Expression outExpression;
             switch (ctx.kind.getType()) {
                 case DorisParser.BETWEEN:
-                    outExpression = new Between(
-                            valueExpression,
-                            getExpression(ctx.lower),
-                            getExpression(ctx.upper)
+                    outExpression = new And(
+                            new GreaterThanEqual(valueExpression, 
getExpression(ctx.lower)),
+                            new LessThanEqual(valueExpression, 
getExpression(ctx.upper))
                     );
                     break;
                 case DorisParser.LIKE:
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionNormalization.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionNormalization.java
index 3cfd84a00c..e15228a3b0 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionNormalization.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/ExpressionNormalization.java
@@ -18,7 +18,6 @@
 package org.apache.doris.nereids.rules.expression;
 
 import org.apache.doris.nereids.rules.expression.check.CheckCast;
-import org.apache.doris.nereids.rules.expression.rules.BetweenToCompoundRule;
 import org.apache.doris.nereids.rules.expression.rules.DigitalMaskingConvert;
 import org.apache.doris.nereids.rules.expression.rules.FoldConstantRule;
 import org.apache.doris.nereids.rules.expression.rules.InPredicateDedup;
@@ -44,7 +43,6 @@ public class ExpressionNormalization extends 
ExpressionRewrite {
     public static final List<ExpressionRewriteRule> NORMALIZE_REWRITE_RULES = 
ImmutableList.of(
             SupportJavaDateFormatter.INSTANCE,
             NormalizeBinaryPredicatesRule.INSTANCE,
-            BetweenToCompoundRule.INSTANCE,
             InPredicateDedup.INSTANCE,
             InPredicateToEqualToRule.INSTANCE,
             SimplifyNotExprRule.INSTANCE,
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/BetweenToCompoundRule.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/BetweenToCompoundRule.java
deleted file mode 100644
index 17092ff7e6..0000000000
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/BetweenToCompoundRule.java
+++ /dev/null
@@ -1,47 +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.doris.nereids.rules.expression.rules;
-
-import org.apache.doris.nereids.rules.expression.AbstractExpressionRewriteRule;
-import org.apache.doris.nereids.rules.expression.ExpressionRewriteContext;
-import org.apache.doris.nereids.trees.expressions.And;
-import org.apache.doris.nereids.trees.expressions.Between;
-import org.apache.doris.nereids.trees.expressions.Expression;
-import org.apache.doris.nereids.trees.expressions.GreaterThanEqual;
-import org.apache.doris.nereids.trees.expressions.LessThanEqual;
-
-/**
- * Rewrites BetweenPredicates into an equivalent conjunctive CompoundPredicate,
- * "not between" is first processed by the BetweenToCompoundRule and then by 
the SimplifyNotExprRule.
- * Examples:
- * A BETWEEN X AND Y ==> A >= X AND A <= Y
- */
-public class BetweenToCompoundRule extends AbstractExpressionRewriteRule {
-
-    public static BetweenToCompoundRule INSTANCE = new BetweenToCompoundRule();
-
-    @Override
-    public Expression visitBetween(Between expr, ExpressionRewriteContext 
context) {
-        Expression compare = rewrite(expr.getCompareExpr(), context);
-        Expression lowerBound = rewrite(expr.getLowerBound(), context);
-        Expression upperBound = rewrite(expr.getUpperBound(), context);
-        Expression left = new GreaterThanEqual(compare, lowerBound);
-        Expression right = new LessThanEqual(compare, upperBound);
-        return new And(left, right);
-    }
-}
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
index f33f0fa2f2..f381f328fd 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
@@ -30,7 +30,6 @@ import 
org.apache.doris.nereids.glue.translator.ExpressionTranslator;
 import org.apache.doris.nereids.rules.expression.AbstractExpressionRewriteRule;
 import org.apache.doris.nereids.rules.expression.ExpressionRewriteContext;
 import org.apache.doris.nereids.trees.expressions.Alias;
-import org.apache.doris.nereids.trees.expressions.Between;
 import org.apache.doris.nereids.trees.expressions.Cast;
 import org.apache.doris.nereids.trees.expressions.Expression;
 import org.apache.doris.nereids.trees.expressions.literal.Literal;
@@ -126,10 +125,6 @@ public class FoldConstantRuleOnBE extends 
AbstractExpressionRewriteRule {
             if (expr.isLiteral()) {
                 return;
             }
-            // skip BetweenPredicate need to be rewrite to CompoundPredicate
-            if (expr instanceof Between) {
-                return;
-            }
             String id = idGenerator.getNextId().toString();
             constMap.put(id, expr);
             Expr staleExpr = ExpressionTranslator.translate(expr, null);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FunctionBinder.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FunctionBinder.java
index f3821e3cad..928687add6 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FunctionBinder.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FunctionBinder.java
@@ -26,7 +26,6 @@ import org.apache.doris.nereids.exceptions.AnalysisException;
 import org.apache.doris.nereids.rules.analysis.ArithmeticFunctionBinder;
 import org.apache.doris.nereids.rules.expression.AbstractExpressionRewriteRule;
 import org.apache.doris.nereids.rules.expression.ExpressionRewriteContext;
-import org.apache.doris.nereids.trees.expressions.Between;
 import org.apache.doris.nereids.trees.expressions.BinaryArithmetic;
 import org.apache.doris.nereids.trees.expressions.BitNot;
 import org.apache.doris.nereids.trees.expressions.CaseWhen;
@@ -223,14 +222,6 @@ public class FunctionBinder extends 
AbstractExpressionRewriteRule {
         return TypeCoercionUtils.processInPredicate(newInPredicate);
     }
 
-    @Override
-    public Expression visitBetween(Between between, ExpressionRewriteContext 
context) {
-        List<Expression> rewrittenChildren = between.children().stream()
-                .map(e -> e.accept(this, 
context)).collect(Collectors.toList());
-        Between newBetween = between.withChildren(rewrittenChildren);
-        return TypeCoercionUtils.processBetween(newBetween);
-    }
-
     @Override
     public Expression visitInSubquery(InSubquery inSubquery, 
ExpressionRewriteContext context) {
         Expression newCompareExpr = inSubquery.getCompareExpr().accept(this, 
context);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Between.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Between.java
deleted file mode 100644
index 5f5df284cc..0000000000
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Between.java
+++ /dev/null
@@ -1,124 +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.doris.nereids.trees.expressions;
-
-import org.apache.doris.nereids.exceptions.UnboundException;
-import org.apache.doris.nereids.trees.expressions.shape.TernaryExpression;
-import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
-import org.apache.doris.nereids.types.BooleanType;
-import org.apache.doris.nereids.types.DataType;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Between predicate expression.
- */
-public class Between extends Expression implements TernaryExpression {
-
-    private final Expression compareExpr;
-    private final Expression lowerBound;
-    private final Expression upperBound;
-    /**
-     * Constructor of ComparisonPredicate.
-     *
-     * @param compareExpr    compare of expression
-     * @param lowerBound     left child of between predicate
-     * @param upperBound     right child of between predicate
-     */
-
-    public Between(Expression compareExpr, Expression lowerBound,
-                   Expression upperBound) {
-        super(ImmutableList.of(compareExpr, lowerBound, upperBound));
-        this.compareExpr = compareExpr;
-        this.lowerBound = lowerBound;
-        this.upperBound = upperBound;
-    }
-
-    public Between(List<Expression> children) {
-        super(children);
-        this.compareExpr = children.get(0);
-        this.lowerBound = children.get(1);
-        this.upperBound = children.get(2);
-    }
-
-    @Override
-    public DataType getDataType() throws UnboundException {
-        return BooleanType.INSTANCE;
-    }
-
-    @Override
-    public boolean nullable() throws UnboundException {
-        return lowerBound.nullable() || upperBound.nullable();
-    }
-
-    @Override
-    public String toSql() {
-        return compareExpr.toSql() + " BETWEEN " + lowerBound.toSql() + " AND 
" + upperBound.toSql();
-    }
-
-    @Override
-    public String toString() {
-        return compareExpr + " BETWEEN " + lowerBound + " AND " + upperBound;
-    }
-
-    public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
-        return visitor.visitBetween(this, context);
-    }
-
-    public Expression getCompareExpr() {
-        return compareExpr;
-    }
-
-    public Expression getLowerBound() {
-        return lowerBound;
-    }
-
-    public Expression getUpperBound() {
-        return upperBound;
-    }
-
-    @Override
-    public Between withChildren(List<Expression> children) {
-        Preconditions.checkArgument(children.size() == 3);
-        return new Between(children);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        Between that = (Between) o;
-        return Objects.equals(compareExpr, that.compareExpr)
-                && Objects.equals(lowerBound, that.lowerBound)
-                && Objects.equals(upperBound, that.upperBound)
-                && Objects.equals(children, that.children);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(compareExpr, lowerBound, upperBound);
-    }
-}
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ExpressionVisitor.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ExpressionVisitor.java
index de9ee53ed1..aae5e34fc4 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ExpressionVisitor.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ExpressionVisitor.java
@@ -26,7 +26,6 @@ import 
org.apache.doris.nereids.trees.expressions.AggregateExpression;
 import org.apache.doris.nereids.trees.expressions.Alias;
 import org.apache.doris.nereids.trees.expressions.And;
 import org.apache.doris.nereids.trees.expressions.AssertNumRowsElement;
-import org.apache.doris.nereids.trees.expressions.Between;
 import org.apache.doris.nereids.trees.expressions.BinaryArithmetic;
 import org.apache.doris.nereids.trees.expressions.BinaryOperator;
 import org.apache.doris.nereids.trees.expressions.BitAnd;
@@ -289,10 +288,6 @@ public abstract class ExpressionVisitor<R, C>
         return visitLiteral(arrayLiteral, context);
     }
 
-    public R visitBetween(Between between, C context) {
-        return visit(between, context);
-    }
-
     public R visitCompoundPredicate(CompoundPredicate compoundPredicate, C 
context) {
         return visitBinaryOperator(compoundPredicate, context);
     }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java
index bc44e03f19..2efa0d36f8 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/TypeCoercionUtils.java
@@ -24,7 +24,6 @@ import org.apache.doris.common.Config;
 import org.apache.doris.nereids.annotation.Developing;
 import org.apache.doris.nereids.exceptions.AnalysisException;
 import org.apache.doris.nereids.trees.expressions.Add;
-import org.apache.doris.nereids.trees.expressions.Between;
 import org.apache.doris.nereids.trees.expressions.BinaryArithmetic;
 import org.apache.doris.nereids.trees.expressions.BinaryOperator;
 import org.apache.doris.nereids.trees.expressions.BitAnd;
@@ -795,31 +794,6 @@ public class TypeCoercionUtils {
         return compoundPredicate.withChildren(children);
     }
 
-    /**
-     * process between type coercion.
-     */
-    public static Expression processBetween(Between between) {
-        if 
(between.getLowerBound().getDataType().equals(between.getCompareExpr().getDataType())
-                && 
between.getUpperBound().getDataType().equals(between.getCompareExpr().getDataType()))
 {
-            return between;
-        }
-        Optional<DataType> optionalCommonType = 
TypeCoercionUtils.findWiderCommonTypeForComparison(
-                between.children()
-                        .stream()
-                        .map(Expression::getDataType)
-                        .collect(Collectors.toList()),
-                false);
-
-        return optionalCommonType
-                .map(commonType -> {
-                    List<Expression> newChildren = between.children().stream()
-                            .map(e -> TypeCoercionUtils.castIfNotMatchType(e, 
commonType))
-                            .collect(Collectors.toList());
-                    return between.withChildren(newChildren);
-                })
-                .orElse(between);
-    }
-
     private static boolean canCompareDate(DataType t1, DataType t2) {
         DataType dateType = t1;
         DataType anotherType = t2;
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/ExpressionRewriteTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/ExpressionRewriteTest.java
index 2bdcc966fc..5b3cdd7dd1 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/ExpressionRewriteTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/ExpressionRewriteTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.doris.nereids.rules.expression;
 
-import org.apache.doris.nereids.rules.expression.rules.BetweenToCompoundRule;
 import org.apache.doris.nereids.rules.expression.rules.DistinctPredicatesRule;
 import org.apache.doris.nereids.rules.expression.rules.ExtractCommonFactorRule;
 import org.apache.doris.nereids.rules.expression.rules.InPredicateDedup;
@@ -164,16 +163,6 @@ public class ExpressionRewriteTest extends 
ExpressionRewriteTestHelper {
 
     }
 
-    @Test
-    public void testBetweenToCompoundRule() {
-        executor = new 
ExpressionRuleExecutor(ImmutableList.of(BetweenToCompoundRule.INSTANCE,
-                SimplifyNotExprRule.INSTANCE));
-
-        assertRewrite("a between c and d", "(a >= c) and (a <= d)");
-        assertRewrite("a not between c and d)", "(a < c) or (a > d)");
-
-    }
-
     @Test
     public void testInPredicateToEqualToRule() {
         executor = new 
ExpressionRuleExecutor(ImmutableList.of(InPredicateToEqualToRule.INSTANCE));
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/ExpressionEqualsTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/ExpressionEqualsTest.java
index c26c020563..ca5793b687 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/ExpressionEqualsTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/ExpressionEqualsTest.java
@@ -83,14 +83,6 @@ public class ExpressionEqualsTest {
         Assertions.assertEquals(greaterThanEqual1.hashCode(), 
greaterThanEqual2.hashCode());
     }
 
-    @Test
-    public void testBetween() {
-        Between between1 = new Between(child1, left1, right1);
-        Between between2 = new Between(child2, left2, right2);
-        Assertions.assertEquals(between1, between2);
-        Assertions.assertEquals(between1.hashCode(), between2.hashCode());
-    }
-
     @Test
     public void testNot() {
         Not not1 = new Not(child1);
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/ExpressionParserTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/ExpressionParserTest.java
index 150a953939..7a8917e2f7 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/ExpressionParserTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/ExpressionParserTest.java
@@ -60,10 +60,9 @@ public class ExpressionParserTest extends ParserTestBase {
     public void testExprBetweenPredicate() {
         parseExpression("c BETWEEN a AND b")
                 .assertEquals(
-                        new Between(
-                                new UnboundSlot("c"),
-                                new UnboundSlot("a"),
-                                new UnboundSlot("b")
+                        new And(
+                                new GreaterThanEqual(new UnboundSlot("c"), new 
UnboundSlot("a")),
+                                new LessThanEqual(new UnboundSlot("c"), new 
UnboundSlot("b"))
                         )
                 );
     }
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query10.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query10.out
index 2ec618b7da..df38625cf1 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query10.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query10.out
@@ -52,6 +52,6 @@ PhysicalResultSink
 ------------------------------PhysicalOlapScan[catalog_sales]
 ----------------------------PhysicalDistribute
 ------------------------------PhysicalProject
---------------------------------filter((date_dim.d_moy >= 1)(date_dim.d_year = 
2001)(date_dim.d_moy <= 4))
+--------------------------------filter((date_dim.d_moy >= 1)(date_dim.d_moy <= 
4)(date_dim.d_year = 2001))
 ----------------------------------PhysicalOlapScan[date_dim]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query16.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query16.out
index eefd61c93b..ce3d758eb5 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query16.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query16.out
@@ -30,9 +30,14 @@ PhysicalTopN
 ------------------------------PhysicalDistribute
 --------------------------------hashJoin[INNER_JOIN](cs1.cs_ship_addr_sk = 
customer_address.ca_address_sk)
 ----------------------------------PhysicalProject
-------------------------------------PhysicalOlapScan[catalog_sales]
-----------------------------------PhysicalDistribute
-------------------------------------PhysicalProject
---------------------------------------filter((cast(ca_state as VARCHAR(*)) = 
'WV'))
-----------------------------------------PhysicalOlapScan[customer_address]
+------------------------------------filter((cast(ca_state as VARCHAR(*)) = 
'WV'))
+--------------------------------------PhysicalOlapScan[customer_address]
+--------------------------PhysicalDistribute
+----------------------------PhysicalProject
+------------------------------filter(cc_county IN ('Ziebach County', 'Luce 
County', 'Richland County', 'Daviess County', 'Barrow County'))
+--------------------------------PhysicalOlapScan[call_center]
+------------------PhysicalDistribute
+--------------------PhysicalProject
+----------------------filter((date_dim.d_date <= days_add(cast('2002-4-01' as 
DATEV2), INTERVAL 60 DAY))(date_dim.d_date >= 2002-04-01))
+------------------------PhysicalOlapScan[date_dim]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query28.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query28.out
index 5de8b9bdd4..a0c2676849 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query28.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query28.out
@@ -31,21 +31,21 @@ PhysicalResultSink
 ----------------------PhysicalLimit
 ------------------------hashAgg[GLOBAL]
 --------------------------PhysicalDistribute
-----------------------------hashAgg[LOCAL]
-------------------------------PhysicalProject
---------------------------------filter(((((store_sales.ss_list_price >= 
1.5E+2) AND (store_sales.ss_list_price <= 1.6E+2)) OR 
((store_sales.ss_coupon_amt >= 6.6E+3) AND (store_sales.ss_coupon_amt <= 
7.6E+3))) OR ((store_sales.ss_wholesale_cost >= 9.00) AND 
(store_sales.ss_wholesale_cost <= 29.00)))(store_sales.ss_quantity >= 
11)(store_sales.ss_quantity <= 15))
-----------------------------------PhysicalOlapScan[store_sales]
-----------------PhysicalDistribute
-------------------PhysicalLimit
---------------------hashAgg[GLOBAL]
+----------------------------PhysicalLimit
+------------------------------hashAgg[GLOBAL]
+--------------------------------PhysicalDistribute
+----------------------------------hashAgg[LOCAL]
+------------------------------------PhysicalProject
+--------------------------------------filter(((((store_sales.ss_list_price >= 
145.00) AND (store_sales.ss_list_price <= 155.00)) OR 
((store_sales.ss_coupon_amt >= 14792.00) AND (store_sales.ss_coupon_amt <= 
15792.00))) OR ((store_sales.ss_wholesale_cost >= 46.00) AND 
(store_sales.ss_wholesale_cost <= 66.00)))(store_sales.ss_quantity <= 
10)(store_sales.ss_quantity >= 6))
+----------------------------------------PhysicalOlapScan[store_sales]
 ----------------------PhysicalDistribute
-------------------------hashAgg[LOCAL]
---------------------------PhysicalProject
-----------------------------filter((store_sales.ss_quantity <= 
20)((((store_sales.ss_list_price >= 91.00) AND (store_sales.ss_list_price <= 
101.00)) OR ((store_sales.ss_coupon_amt >= 13493.00) AND 
(store_sales.ss_coupon_amt <= 14493.00))) OR ((store_sales.ss_wholesale_cost >= 
36.00) AND (store_sales.ss_wholesale_cost <= 56.00)))(store_sales.ss_quantity 
>= 16))
-------------------------------PhysicalOlapScan[store_sales]
-------------PhysicalDistribute
---------------PhysicalLimit
-----------------hashAgg[GLOBAL]
+------------------------PhysicalLimit
+--------------------------hashAgg[GLOBAL]
+----------------------------PhysicalDistribute
+------------------------------hashAgg[LOCAL]
+--------------------------------PhysicalProject
+----------------------------------filter(((((store_sales.ss_list_price >= 
150.00) AND (store_sales.ss_list_price <= 1.6E+2)) OR 
((store_sales.ss_coupon_amt >= 6600.00) AND (store_sales.ss_coupon_amt <= 
7.6E+3))) OR ((store_sales.ss_wholesale_cost >= 9.00) AND 
(store_sales.ss_wholesale_cost <= 29.00)))(store_sales.ss_quantity >= 
11)(store_sales.ss_quantity <= 15))
+------------------------------------PhysicalOlapScan[store_sales]
 ------------------PhysicalDistribute
 --------------------hashAgg[LOCAL]
 ----------------------PhysicalProject
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query58.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query58.out
index e5fd32f39b..3b21a70cc2 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query58.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query58.out
@@ -5,7 +5,7 @@ PhysicalResultSink
 ----PhysicalDistribute
 ------PhysicalTopN
 --------PhysicalProject
-----------hashJoin[INNER_JOIN](ss_items.item_id = 
cs_items.item_id)(cast(cs_item_rev as DOUBLE) >= cast((0.9 * ss_item_rev) as 
DOUBLE))(cast(ss_item_rev as DOUBLE) >= cast((0.9 * cs_item_rev) as 
DOUBLE))(cast(cs_item_rev as DOUBLE) <= cast((1.1 * ss_item_rev) as 
DOUBLE))(cast(ss_item_rev as DOUBLE) <= cast((1.1 * cs_item_rev) as 
DOUBLE))(cast(cs_item_rev as DOUBLE) >= cast((0.9 * ws_item_rev) as 
DOUBLE))(cast(ws_item_rev as DOUBLE) >= cast((0.9 * cs_item_rev) as 
DOUBLE))(cast(cs_item_rev [...]
+----------hashJoin[INNER_JOIN](ss_items.item_id = 
cs_items.item_id)(cast(ss_item_rev as DOUBLE) >= cast((0.9 * cs_item_rev) as 
DOUBLE))(cast(cs_item_rev as DOUBLE) >= cast((0.9 * ss_item_rev) as 
DOUBLE))(cast(cs_item_rev as DOUBLE) <= cast((1.1 * ss_item_rev) as 
DOUBLE))(cast(ss_item_rev as DOUBLE) <= cast((1.1 * cs_item_rev) as 
DOUBLE))(cast(ws_item_rev as DOUBLE) >= cast((0.9 * cs_item_rev) as 
DOUBLE))(cast(cs_item_rev as DOUBLE) >= cast((0.9 * ws_item_rev) as 
DOUBLE))(cast(ws_item_rev [...]
 ------------PhysicalProject
 --------------hashAgg[GLOBAL]
 ----------------PhysicalDistribute
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query66.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query66.out
index ec829b426c..c8999694e0 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query66.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query66.out
@@ -29,7 +29,7 @@ PhysicalTopN
 --------------------------------------PhysicalOlapScan[date_dim]
 ------------------------------PhysicalDistribute
 --------------------------------PhysicalProject
-----------------------------------filter((cast(t_time as BIGINT) <= 
77621)(cast(t_time as BIGINT) >= 48821))
+----------------------------------filter((cast(t_time as BIGINT) <= 
77621)(time_dim.t_time >= 48821))
 ------------------------------------PhysicalOlapScan[time_dim]
 --------------------------PhysicalDistribute
 ----------------------------PhysicalProject
@@ -56,7 +56,7 @@ PhysicalTopN
 --------------------------------------PhysicalOlapScan[date_dim]
 ------------------------------PhysicalDistribute
 --------------------------------PhysicalProject
-----------------------------------filter((cast(t_time as BIGINT) <= 
77621)(cast(t_time as BIGINT) >= 48821))
+----------------------------------filter((time_dim.t_time >= 
48821)(cast(t_time as BIGINT) <= 77621))
 ------------------------------------PhysicalOlapScan[time_dim]
 --------------------------PhysicalDistribute
 ----------------------------PhysicalProject
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query82.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query82.out
index c9976cb1eb..a6cb7d6249 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query82.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query82.out
@@ -20,7 +20,7 @@ PhysicalResultSink
 ------------------------------PhysicalOlapScan[inventory]
 --------------------------PhysicalDistribute
 ----------------------------PhysicalProject
-------------------------------filter((item.i_current_price >= 
17.00)i_manufact_id IN (138, 169, 339, 639)(item.i_current_price <= 47.00))
+------------------------------filter((item.i_current_price >= 
17.00)(item.i_current_price <= 47.00)i_manufact_id IN (138, 169, 339, 639))
 --------------------------------PhysicalOlapScan[item]
 ------------------------PhysicalDistribute
 --------------------------PhysicalProject
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query94.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query94.out
index 26640d46a8..850edbe2c4 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query94.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query94.out
@@ -34,6 +34,6 @@ PhysicalResultSink
 ------------------------------------PhysicalOlapScan[web_site]
 ------------------PhysicalDistribute
 --------------------PhysicalProject
-----------------------filter((date_dim.d_date >= 2000-02-01)(cast(d_date as 
DATETIMEV2(0)) <= cast(days_add(cast('2000-2-01' as DATEV2), INTERVAL 60 DAY) 
as DATETIMEV2(0))))
+----------------------filter((date_dim.d_date <= days_add(cast('2000-2-01' as 
DATEV2), INTERVAL 60 DAY))(date_dim.d_date >= 2000-02-01))
 ------------------------PhysicalOlapScan[date_dim]
 
diff --git 
a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query95.out 
b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query95.out
index 3cb412688b..4df00ba184 100644
--- a/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query95.out
+++ b/regression-test/data/nereids_tpcds_shape_sf100_p0/shape/query95.out
@@ -20,7 +20,7 @@ PhysicalCteAnchor ( cteId=CTEId#0 )
 ----------------PhysicalProject
 ------------------hashJoin[INNER_JOIN](ws1.ws_ship_date_sk = 
date_dim.d_date_sk)
 --------------------PhysicalProject
-----------------------filter((date_dim.d_date >= 1999-02-01)(cast(d_date as 
DATETIMEV2(0)) <= cast(days_add(cast('1999-2-01' as DATEV2), INTERVAL 60 DAY) 
as DATETIMEV2(0))))
+----------------------filter((date_dim.d_date >= 1999-02-01)(date_dim.d_date 
<= days_add(cast('1999-2-01' as DATEV2), INTERVAL 60 DAY)))
 ------------------------PhysicalOlapScan[date_dim]
 --------------------PhysicalDistribute
 ----------------------hashJoin[RIGHT_SEMI_JOIN](ws1.ws_order_number = 
web_returns.wr_order_number)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org


Reply via email to