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]