From 11059ca4edcf34f9c00cae44ae3688e38e37e255 Mon Sep 17 00:00:00 2001 From: starocean999 <40539150+starocean999@users.noreply.github.com> Date: Fri, 3 Nov 2023 20:38:07 +0800 Subject: [PATCH] [fix](nereids)SimplifyRange rule may mess up and/or predicate (#26304) --- .../doris/nereids/rules/expression/rules/SimplifyRange.java | 2 +- .../doris/nereids/rules/expression/SimplifyRangeTest.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/SimplifyRange.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/SimplifyRange.java index 392207bf9a..2fd7f4167d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/SimplifyRange.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/SimplifyRange.java @@ -450,7 +450,7 @@ public class SimplifyRange extends AbstractExpressionRewriteRule { @Override public ValueDesc intersect(ValueDesc other) { Expression originExpr = ExpressionUtils.and(expr, other.expr); - return new UnknownValue(ImmutableList.of(this, other), originExpr, ExpressionUtils::or); + return new UnknownValue(ImmutableList.of(this, other), originExpr, ExpressionUtils::and); } @Override diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/SimplifyRangeTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/SimplifyRangeTest.java index 8058137b6f..33a22dae78 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/SimplifyRangeTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/SimplifyRangeTest.java @@ -104,6 +104,7 @@ public class SimplifyRangeTest { assertRewrite("TA in (1) and TA in (1)", "TA = 1"); assertRewrite("(TA > 3 and TA < 1) and TB < 5", "FALSE"); assertRewrite("(TA > 3 and TA < 1) or TB < 5", "TB < 5"); + assertRewrite("((IA = 1 AND SC ='1') OR SC = '1212') AND IA =1", "((IA = 1 AND SC ='1') OR SC = '1212') AND IA =1"); } private void assertRewrite(String expression, String expected) {