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

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


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new ee60560fa68 branch-2.1: [opt](nereids) support simplify string range 
(#55378) (#55459)
ee60560fa68 is described below

commit ee60560fa68e60ddaf1bd96ee932c3fcdc87c480
Author: 924060929 <[email protected]>
AuthorDate: Wed Sep 3 19:51:51 2025 +0800

    branch-2.1: [opt](nereids) support simplify string range (#55378) (#55459)
    
    cherry pick from #55378
---
 .../apache/doris/nereids/rules/expression/rules/SimplifyRange.java | 7 +++++--
 .../apache/doris/nereids/rules/expression/SimplifyRangeTest.java   | 2 ++
 2 files changed, 7 insertions(+), 2 deletions(-)

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 434f7a6f5bd..4cf3e57e38e 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
@@ -38,6 +38,7 @@ 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.ExpressionVisitor;
 import org.apache.doris.nereids.types.BooleanType;
+import org.apache.doris.nereids.types.DataType;
 import org.apache.doris.nereids.util.ExpressionUtils;
 
 import com.google.common.collect.BoundType;
@@ -113,8 +114,10 @@ public class SimplifyRange implements 
ExpressionPatternRuleFactory {
             if (right.isNullLiteral()) {
                 return new UnknownValue(context, predicate);
             }
-            // only handle `NumericType` and `DateLikeType`
-            if (right.isLiteral() && (right.getDataType().isNumericType() || 
right.getDataType().isDateLikeType())) {
+            // only handle `NumericType` and `DateLikeType` and 
`StringLikeType`
+            DataType rightDataType = right.getDataType();
+            if (right.isLiteral() && (rightDataType.isNumericType() || 
rightDataType.isDateLikeType()
+                    || rightDataType.isStringLikeType())) {
                 return ValueDesc.range(context, predicate);
             }
             return new UnknownValue(context, predicate);
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 ca2cab9905b..899f342f8a3 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
@@ -198,6 +198,8 @@ public class SimplifyRangeTest extends ExpressionRewrite {
         assertRewrite("(TA + TC > 3 and TA + TC < 1) or TB < 5", "((TA + TC) 
is null and null) OR TB < 5");
 
         assertRewrite("(TA + TC > 3 OR TA < 1) AND TB = 2) AND IA =1", "(TA + 
TC > 3 OR TA < 1) AND TB = 2) AND IA =1");
+        assertRewrite("SA = '20250101' and SA < '20200101'", "SA is null and 
null");
+        assertRewrite("SA > '20250101' and SA > '20260110'", "SA > 
'20260110'");
 
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to