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

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


The following commit(s) were added to refs/heads/master by this push:
     new 17f92155d78 [opt](Nerieds) add infer props to expression (#28953)
17f92155d78 is described below

commit 17f92155d7899b0b5a08f5d388a4440d7e1fd891
Author: seawinde <149132972+seawi...@users.noreply.github.com>
AuthorDate: Wed Dec 27 12:21:25 2023 +0800

    [opt](Nerieds) add infer props to expression (#28953)
---
 .../rules/rewrite/PredicatePropagation.java        |   5 +-
 .../nereids/trees/expressions/BinaryOperator.java  |   6 +-
 .../trees/expressions/ComparisonPredicate.java     |   6 +-
 .../nereids/trees/expressions/EqualPredicate.java  |   6 +-
 .../doris/nereids/trees/expressions/EqualTo.java   |  19 +++-
 .../nereids/trees/expressions/Expression.java      |  24 +++++
 .../nereids/trees/expressions/GreaterThan.java     |  19 +++-
 .../trees/expressions/GreaterThanEqual.java        |  19 +++-
 .../doris/nereids/trees/expressions/LessThan.java  |  19 +++-
 .../nereids/trees/expressions/LessThanEqual.java   |  19 +++-
 .../nereids/trees/expressions/NullSafeEqual.java   |  19 +++-
 .../apache/doris/nereids/util/ExpressionUtils.java |  22 ++++
 .../nereids/rules/rewrite/InferPredicatesTest.java | 113 ++++++++++++++-------
 13 files changed, 237 insertions(+), 59 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PredicatePropagation.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PredicatePropagation.java
index ecb1c5499bd..72e9023dc45 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PredicatePropagation.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PredicatePropagation.java
@@ -88,6 +88,9 @@ public class PredicatePropagation {
     public Set<Expression> infer(Set<Expression> predicates) {
         Set<Expression> inferred = Sets.newHashSet();
         for (Expression predicate : predicates) {
+            // if we support more infer predicate expression type, we should 
impl withInferred() method.
+            // And should add inferred props in withChildren() method just 
like ComparisonPredicate,
+            // and it's subclass, to mark the predicate is from infer.
             if (!(predicate instanceof ComparisonPredicate)) {
                 continue;
             }
@@ -130,7 +133,7 @@ public class PredicatePropagation {
                 .comparisonPredicate.withChildren(newLeft, newRight);
         Expression expr = SimplifyComparisonPredicate.INSTANCE
                 
.rewrite(TypeCoercionUtils.processComparisonPredicate(newPredicate), null);
-        return DateFunctionRewrite.INSTANCE.rewrite(expr, null);
+        return DateFunctionRewrite.INSTANCE.rewrite(expr, 
null).withInferred(true);
     }
 
     private Expression inferOneSide(Expression predicateOneSide, Expression 
equalLeft, Expression equalRight) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/BinaryOperator.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/BinaryOperator.java
index c3006fa927b..2d06456d0a4 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/BinaryOperator.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/BinaryOperator.java
@@ -34,7 +34,11 @@ public abstract class BinaryOperator extends Expression 
implements BinaryExpress
     protected final String symbol;
 
     public BinaryOperator(List<Expression> children, String symbol) {
-        super(children);
+        this(children, symbol, false);
+    }
+
+    public BinaryOperator(List<Expression> children, String symbol, boolean 
inferred) {
+        super(children, inferred);
         this.symbol = symbol;
     }
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ComparisonPredicate.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ComparisonPredicate.java
index bba834967f0..a22852ca31c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ComparisonPredicate.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ComparisonPredicate.java
@@ -33,7 +33,11 @@ import java.util.List;
 public abstract class ComparisonPredicate extends BinaryOperator {
 
     public ComparisonPredicate(List<Expression> children, String symbol) {
-        super(children, symbol);
+        this(children, symbol, false);
+    }
+
+    public ComparisonPredicate(List<Expression> children, String symbol, 
boolean inferred) {
+        super(children, symbol, inferred);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/EqualPredicate.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/EqualPredicate.java
index 3f61bd3cf62..5691f7de94c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/EqualPredicate.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/EqualPredicate.java
@@ -25,7 +25,11 @@ import java.util.List;
 public abstract class EqualPredicate extends ComparisonPredicate {
 
     protected EqualPredicate(List<Expression> children, String symbol) {
-        super(children, symbol);
+        this(children, symbol, false);
+    }
+
+    protected EqualPredicate(List<Expression> children, String symbol, boolean 
inferred) {
+        super(children, symbol, inferred);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/EqualTo.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/EqualTo.java
index 3faccff6d99..2704d446555 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/EqualTo.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/EqualTo.java
@@ -32,11 +32,19 @@ import java.util.List;
 public class EqualTo extends EqualPredicate implements PropagateNullable {
 
     public EqualTo(Expression left, Expression right) {
-        super(ImmutableList.of(left, right), "=");
+        this(left, right, false);
+    }
+
+    public EqualTo(Expression left, Expression right, boolean inferred) {
+        super(ImmutableList.of(left, right), "=", inferred);
     }
 
     private EqualTo(List<Expression> children) {
-        super(children, "=");
+        this(children, false);
+    }
+
+    private EqualTo(List<Expression> children, boolean inferred) {
+        super(children, "=", inferred);
     }
 
     @Override
@@ -47,7 +55,12 @@ public class EqualTo extends EqualPredicate implements 
PropagateNullable {
     @Override
     public EqualTo withChildren(List<Expression> children) {
         Preconditions.checkArgument(children.size() == 2);
-        return new EqualTo(children);
+        return new EqualTo(children, this.isInferred());
+    }
+
+    @Override
+    public Expression withInferred(boolean inferred) {
+        return new EqualTo(this.children, inferred);
     }
 
     public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Expression.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Expression.java
index bdd776ffe97..1ce12fc0efa 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Expression.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Expression.java
@@ -59,6 +59,8 @@ public abstract class Expression extends 
AbstractTreeNode<Expression> implements
     protected Optional<String> exprName = Optional.empty();
     private final int depth;
     private final int width;
+    // Mark this expression is from predicate infer or something else infer
+    private final boolean inferred;
 
     protected Expression(Expression... children) {
         super(children);
@@ -69,6 +71,7 @@ public abstract class Expression extends 
AbstractTreeNode<Expression> implements
                 .mapToInt(e -> e.width)
                 .sum() + (children.length == 0 ? 1 : 0);
         checkLimit();
+        this.inferred = false;
     }
 
     protected Expression(List<Expression> children) {
@@ -80,6 +83,19 @@ public abstract class Expression extends 
AbstractTreeNode<Expression> implements
                 .mapToInt(e -> e.width)
                 .sum() + (children.isEmpty() ? 1 : 0);
         checkLimit();
+        this.inferred = false;
+    }
+
+    protected Expression(List<Expression> children, boolean inferred) {
+        super(children);
+        depth = children.stream()
+                .mapToInt(e -> e.depth)
+                .max().orElse(0) + 1;
+        width = children.stream()
+                .mapToInt(e -> e.width)
+                .sum() + (children.isEmpty() ? 1 : 0);
+        checkLimit();
+        this.inferred = inferred;
     }
 
     private void checkLimit() {
@@ -216,11 +232,19 @@ public abstract class Expression extends 
AbstractTreeNode<Expression> implements
         return depth;
     }
 
+    public boolean isInferred() {
+        return inferred;
+    }
+
     @Override
     public Expression withChildren(List<Expression> children) {
         throw new RuntimeException();
     }
 
+    public Expression withInferred(boolean inferred) {
+        throw new RuntimeException("current expression has not impl the 
withInferred method");
+    }
+
     /**
      * Whether the expression is a constant.
      */
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/GreaterThan.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/GreaterThan.java
index 1871781ca9c..ec4606eda55 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/GreaterThan.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/GreaterThan.java
@@ -37,11 +37,19 @@ public class GreaterThan extends ComparisonPredicate 
implements PropagateNullabl
      * @param right right child of greater than
      */
     public GreaterThan(Expression left, Expression right) {
-        super(ImmutableList.of(left, right), ">");
+        this(left, right, false);
+    }
+
+    public GreaterThan(Expression left, Expression right, boolean inferred) {
+        super(ImmutableList.of(left, right), ">", inferred);
     }
 
     private GreaterThan(List<Expression> children) {
-        super(children, ">");
+        this(children, false);
+    }
+
+    private GreaterThan(List<Expression> children, boolean inferred) {
+        super(children, ">", inferred);
     }
 
     @Override
@@ -57,7 +65,12 @@ public class GreaterThan extends ComparisonPredicate 
implements PropagateNullabl
     @Override
     public GreaterThan withChildren(List<Expression> children) {
         Preconditions.checkArgument(children.size() == 2);
-        return new GreaterThan(children);
+        return new GreaterThan(children, this.isInferred());
+    }
+
+    @Override
+    public Expression withInferred(boolean inferred) {
+        return new GreaterThan(this.children, inferred);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/GreaterThanEqual.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/GreaterThanEqual.java
index e2995298e37..693097f1825 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/GreaterThanEqual.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/GreaterThanEqual.java
@@ -32,11 +32,19 @@ import java.util.List;
 public class GreaterThanEqual extends ComparisonPredicate implements 
PropagateNullable {
 
     public GreaterThanEqual(Expression left, Expression right) {
-        super(ImmutableList.of(left, right), ">=");
+        this(left, right, false);
+    }
+
+    public GreaterThanEqual(Expression left, Expression right, boolean 
inferred) {
+        super(ImmutableList.of(left, right), ">=", inferred);
     }
 
     private GreaterThanEqual(List<Expression> children) {
-        super(children, ">=");
+        this(children, false);
+    }
+
+    private GreaterThanEqual(List<Expression> children, boolean inferred) {
+        super(children, ">=", inferred);
     }
 
     @Override
@@ -52,7 +60,12 @@ public class GreaterThanEqual extends ComparisonPredicate 
implements PropagateNu
     @Override
     public GreaterThanEqual withChildren(List<Expression> children) {
         Preconditions.checkArgument(children.size() == 2);
-        return new GreaterThanEqual(children);
+        return new GreaterThanEqual(children, this.isInferred());
+    }
+
+    @Override
+    public Expression withInferred(boolean inferred) {
+        return new GreaterThanEqual(this.children, inferred);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/LessThan.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/LessThan.java
index 4d34b50bb9c..e1ba9f69aad 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/LessThan.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/LessThan.java
@@ -31,11 +31,19 @@ import java.util.List;
  */
 public class LessThan extends ComparisonPredicate implements PropagateNullable 
{
     public LessThan(Expression left, Expression right) {
-        super(ImmutableList.of(left, right), "<");
+        this(left, right, false);
+    }
+
+    public LessThan(Expression left, Expression right, boolean inferred) {
+        super(ImmutableList.of(left, right), "<", inferred);
     }
 
     private LessThan(List<Expression> children) {
-        super(children, "<");
+        this(children, false);
+    }
+
+    private LessThan(List<Expression> children, boolean inferred) {
+        super(children, "<", inferred);
     }
 
     @Override
@@ -51,7 +59,12 @@ public class LessThan extends ComparisonPredicate implements 
PropagateNullable {
     @Override
     public LessThan withChildren(List<Expression> children) {
         Preconditions.checkArgument(children.size() == 2);
-        return new LessThan(children);
+        return new LessThan(children, this.isInferred());
+    }
+
+    @Override
+    public Expression withInferred(boolean inferred) {
+        return new LessThan(this.children, inferred);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/LessThanEqual.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/LessThanEqual.java
index 4ac997d3ab7..cc8c64ff106 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/LessThanEqual.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/LessThanEqual.java
@@ -37,11 +37,19 @@ public class LessThanEqual extends ComparisonPredicate 
implements PropagateNulla
      * @param right right child of Less Than And Equal
      */
     public LessThanEqual(Expression left, Expression right) {
-        super(ImmutableList.of(left, right), "<=");
+        this(left, right, false);
+    }
+
+    public LessThanEqual(Expression left, Expression right, boolean inferred) {
+        super(ImmutableList.of(left, right), "<=", inferred);
     }
 
     private LessThanEqual(List<Expression> children) {
-        super(children, "<=");
+        this(children, false);
+    }
+
+    private LessThanEqual(List<Expression> children, boolean inferred) {
+        super(children, "<=", inferred);
     }
 
     @Override
@@ -57,7 +65,12 @@ public class LessThanEqual extends ComparisonPredicate 
implements PropagateNulla
     @Override
     public LessThanEqual withChildren(List<Expression> children) {
         Preconditions.checkArgument(children.size() == 2);
-        return new LessThanEqual(children);
+        return new LessThanEqual(children, this.isInferred());
+    }
+
+    @Override
+    public Expression withInferred(boolean inferred) {
+        return new LessThanEqual(this.children, inferred);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/NullSafeEqual.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/NullSafeEqual.java
index 48d05364fa3..6eda6c738b7 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/NullSafeEqual.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/NullSafeEqual.java
@@ -31,11 +31,19 @@ import java.util.List;
  */
 public class NullSafeEqual extends EqualPredicate implements AlwaysNotNullable 
{
     public NullSafeEqual(Expression left, Expression right) {
-        super(ImmutableList.of(left, right), "<=>");
+        this(left, right, false);
+    }
+
+    public NullSafeEqual(Expression left, Expression right, boolean inferred) {
+        super(ImmutableList.of(left, right), "<=>", inferred);
     }
 
     private NullSafeEqual(List<Expression> children) {
-        super(children, "<=>");
+        this(children, false);
+    }
+
+    private NullSafeEqual(List<Expression> children, boolean inferred) {
+        super(children, "<=>", inferred);
     }
 
     @Override
@@ -51,7 +59,12 @@ public class NullSafeEqual extends EqualPredicate implements 
AlwaysNotNullable {
     @Override
     public NullSafeEqual withChildren(List<Expression> children) {
         Preconditions.checkArgument(children.size() == 2);
-        return new NullSafeEqual(children);
+        return new NullSafeEqual(children, this.isInferred());
+    }
+
+    @Override
+    public Expression withInferred(boolean inferred) {
+        return new NullSafeEqual(this.children, inferred);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/ExpressionUtils.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/ExpressionUtils.java
index 70b91dfe102..b9c240df415 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/ExpressionUtils.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/ExpressionUtils.java
@@ -48,6 +48,7 @@ import 
org.apache.doris.nereids.trees.expressions.literal.BooleanLiteral;
 import org.apache.doris.nereids.trees.expressions.literal.Literal;
 import org.apache.doris.nereids.trees.expressions.literal.NullLiteral;
 import 
org.apache.doris.nereids.trees.expressions.visitor.DefaultExpressionRewriter;
+import 
org.apache.doris.nereids.trees.expressions.visitor.DefaultExpressionVisitor;
 import org.apache.doris.nereids.trees.plans.Plan;
 import org.apache.doris.nereids.trees.plans.visitor.ExpressionLineageReplacer;
 
@@ -639,4 +640,25 @@ public class ExpressionUtils {
                 }
         );
     }
+
+    /**
+     * Check the expression is inferred or not, if inferred return true, nor 
return false
+     */
+    public static boolean isInferred(Expression expression) {
+        return expression.accept(new DefaultExpressionVisitor<Boolean, Void>() 
{
+
+            @Override
+            public Boolean visit(Expression expr, Void context) {
+                boolean inferred = expr.isInferred();
+                if (expr.isInferred() || expr.children().isEmpty()) {
+                    return inferred;
+                }
+                inferred = true;
+                for (Expression child : expr.children()) {
+                    inferred = inferred && child.accept(this, context);
+                }
+                return inferred;
+            }
+        }, null);
+    }
 }
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/InferPredicatesTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/InferPredicatesTest.java
index 1421a912a02..c910e98fcd5 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/InferPredicatesTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/InferPredicatesTest.java
@@ -18,6 +18,7 @@
 package org.apache.doris.nereids.rules.rewrite;
 
 import org.apache.doris.nereids.trees.plans.JoinType;
+import org.apache.doris.nereids.util.ExpressionUtils;
 import org.apache.doris.nereids.util.MemoPatternMatchSupported;
 import org.apache.doris.nereids.util.PlanChecker;
 import org.apache.doris.utframe.TestWithFeService;
@@ -87,10 +88,12 @@ public class InferPredicatesTest extends TestWithFeService 
implements MemoPatter
                         logicalJoin(
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("id > 1")),
+                            ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("id > 1")),
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                            ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("sid > 1"))
                         )
                     )
                 );
@@ -125,7 +128,8 @@ public class InferPredicatesTest extends TestWithFeService 
implements MemoPatter
                         logicalJoin(
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("id IN (1, 2, 3)")),
+                            ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("id IN (1, 2, 3)")),
                             logicalOlapScan()
                         )
                     )
@@ -144,7 +148,8 @@ public class InferPredicatesTest extends TestWithFeService 
implements MemoPatter
                         logicalJoin(
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("id IN (1, 2, 3)")),
+                            ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("id IN (1, 2, 3)")),
                             logicalOlapScan()
                         )
                     )
@@ -164,10 +169,12 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                             logicalJoin(
                                 logicalFilter(
                                     logicalOlapScan()
-                                ).when(filter -> 
filter.getPredicate().toSql().contains("id > 1")),
+                                ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                        & 
filter.getPredicate().toSql().contains("id > 1")),
                                 logicalFilter(
                                     logicalOlapScan()
-                                ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                                ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                        & 
filter.getPredicate().toSql().contains("sid > 1"))
                             ),
                             logicalFilter(
                                 logicalOlapScan()
@@ -190,10 +197,12 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                             logicalJoin(
                                     logicalFilter(
                                             logicalOlapScan()
-                                    ).when(filter -> 
filter.getPredicate().toSql().contains("id > 1")),
+                                    ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                            & 
filter.getPredicate().toSql().contains("id > 1")),
                                     logicalFilter(
                                             logicalOlapScan()
-                                    ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                                    ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                            & 
filter.getPredicate().toSql().contains("sid > 1"))
                             ),
                             logicalFilter(
                                     logicalOlapScan()
@@ -215,10 +224,12 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                         logicalJoin(
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("id > 1")),
+                            ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("id > 1")),
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                            ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("sid > 1"))
                         )
                     )
                 );
@@ -237,7 +248,8 @@ public class InferPredicatesTest extends TestWithFeService 
implements MemoPatter
                             logicalOlapScan(),
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                            ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("sid > 1"))
                         )
                     )
                 );
@@ -256,10 +268,12 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                         logicalJoin(
                             logicalFilter(
                                 logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("id > 1")),
+                            ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("id > 1")),
                             logicalFilter(
                                 logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                            ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("sid > 1"))
                         )
                     )
                 );
@@ -278,11 +292,13 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                             logicalProject(
                                 logicalFilter(
                                     logicalOlapScan()
-                                ).when(filter -> 
filter.getPredicate().toSql().contains("id > 1"))
+                                ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                        & 
filter.getPredicate().toSql().contains("id > 1"))
                             ),
                             logicalFilter(
                                 logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                            ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("sid > 1"))
                         )
                     )
                 );
@@ -303,7 +319,8 @@ public class InferPredicatesTest extends TestWithFeService 
implements MemoPatter
                             ),
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                            ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("sid > 1"))
                         )
                     )
                 );
@@ -321,13 +338,15 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                         logicalJoin(
                             logicalFilter(
                                 logicalOlapScan()
-                            ).when(filer -> 
filer.getPredicate().toSql().contains("id > 1")),
+                            ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("id > 1")),
                             logicalProject(
                                 logicalAggregate(
                                     logicalProject(
                                         logicalFilter(
                                             logicalOlapScan()
-                                        ).when(filer -> 
filer.getPredicate().toSql().contains("sid > 1"))
+                                        ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                                & 
filter.getPredicate().toSql().contains("sid > 1"))
                                    )
                                 )
                             )
@@ -349,11 +368,13 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                             logicalProject(
                                     logicalFilter(
                                             logicalOlapScan()
-                                    ).when(filter -> 
filter.getPredicate().toSql().contains("id = 1"))
+                                    ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                            & 
filter.getPredicate().toSql().contains("id = 1"))
                             ),
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("sid = 1"))
+                            ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("sid = 1"))
                         )
                     )
                 );
@@ -371,11 +392,13 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                         logicalJoin(
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("id > 1")),
+                            ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("id > 1")),
                             logicalProject(
                                     logicalFilter(
                                             logicalOlapScan()
-                                    ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                                    ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                            & 
filter.getPredicate().toSql().contains("sid > 1"))
                             )
                         )
                     )
@@ -394,11 +417,13 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                         logicalJoin(
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("id > 1")),
+                            ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("id > 1")),
                             logicalProject(
                                     logicalFilter(
                                             logicalOlapScan()
-                                    ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                                    ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                            & 
filter.getPredicate().toSql().contains("sid > 1"))
                             )
                         )
                     )
@@ -419,7 +444,8 @@ public class InferPredicatesTest extends TestWithFeService 
implements MemoPatter
                             logicalProject(
                                 logicalFilter(
                                     logicalOlapScan()
-                                ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                                ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                        & 
filter.getPredicate().toSql().contains("sid > 1"))
                             )
                         )
                     )
@@ -440,7 +466,8 @@ public class InferPredicatesTest extends TestWithFeService 
implements MemoPatter
                             logicalProject(
                                     logicalFilter(
                                             logicalOlapScan()
-                                    ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                                    ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                            & 
filter.getPredicate().toSql().contains("sid > 1"))
                             )
                         )
                     )
@@ -459,11 +486,13 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                         logicalJoin(
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("id > 1")),
+                            ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("id > 1")),
                             logicalProject(
                                     logicalFilter(
                                             logicalOlapScan()
-                                    ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                                    ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                            & 
filter.getPredicate().toSql().contains("sid > 1"))
                             )
                         )
                     )
@@ -504,19 +533,22 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                         logicalJoin(
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("k1 = 3")),
+                            ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("k1 = 3")),
                             logicalProject(
                                 logicalJoin(
                                     logicalJoin(
                                        logicalProject(
                                                logicalFilter(
                                                        logicalOlapScan()
-                                               ).when(filter -> 
filter.getPredicate().toSql().contains("k3 = 3"))
+                                               ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                                       & 
filter.getPredicate().toSql().contains("k3 = 3"))
                                        ),
                                        logicalProject(
                                                logicalFilter(
                                                        logicalOlapScan()
-                                               ).when(filter -> 
filter.getPredicate().toSql().contains("k1 = 3"))
+                                               ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                                       & 
filter.getPredicate().toSql().contains("k1 = 3"))
                                        )
                                     ),
                                     logicalAggregate(
@@ -544,10 +576,12 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                             innerLogicalJoin(
                                 logicalFilter(
                                     logicalOlapScan()
-                                ).when(filter -> 
filter.getPredicate().toSql().contains("id > 1")),
+                                ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                        & 
filter.getPredicate().toSql().contains("id > 1")),
                                 logicalFilter(
                                     logicalOlapScan()
-                                ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                                ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                        & 
filter.getPredicate().toSql().contains("sid > 1"))
                             ),
                             logicalFilter(
                                 logicalOlapScan()
@@ -570,10 +604,12 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                             logicalJoin(
                                 logicalFilter(
                                     logicalOlapScan()
-                                ).when(filter -> 
filter.getPredicate().toSql().contains("id > 1")),
+                                ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                        & 
filter.getPredicate().toSql().contains("id > 1")),
                                 logicalFilter(
                                     logicalOlapScan()
-                                ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                                ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                        & 
filter.getPredicate().toSql().contains("sid > 1"))
                             ),
                             logicalFilter(
                                 logicalOlapScan()
@@ -598,11 +634,13 @@ public class InferPredicatesTest extends 
TestWithFeService implements MemoPatter
                         logicalJoin(
                             logicalFilter(
                                     logicalOlapScan()
-                            ).when(filter -> 
filter.getPredicate().toSql().contains("id > 1")),
+                            ).when(filter -> 
ExpressionUtils.isInferred(filter.getPredicate())
+                                    & 
filter.getPredicate().toSql().contains("id > 1")),
                             logicalProject(
                                     logicalFilter(
                                             logicalOlapScan()
-                                    ).when(filter -> 
filter.getPredicate().toSql().contains("sid > 1"))
+                                    ).when(filter -> 
!ExpressionUtils.isInferred(filter.getPredicate())
+                                            & 
filter.getPredicate().toSql().contains("sid > 1"))
                             )
                         )
                     )
@@ -626,6 +664,7 @@ public class InferPredicatesTest extends TestWithFeService 
implements MemoPatter
                                 logicalFilter(
                                         logicalOlapScan()
                                 ).when(filter -> filter.getConjuncts().size() 
== 1
+                                        && 
!ExpressionUtils.isInferred(filter.getPredicate())
                                         && 
filter.getPredicate().toSql().contains("id = 2")),
                                 any()
                         ).when(join -> join.getJoinType() == 
JoinType.LEFT_OUTER_JOIN)


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


Reply via email to