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 041a1fe0958 branch-2.1: [fix](nereids) fix compare with long min for 
simplify comparison rule (#44922)
041a1fe0958 is described below

commit 041a1fe09587ddcd17520ff1edb2ea76e81d52c4
Author: yujun <yu...@selectdb.com>
AuthorDate: Fri Dec 6 09:31:02 2024 +0800

    branch-2.1: [fix](nereids) fix compare with long min for simplify 
comparison rule (#44922)
---
 .../rules/expression/rules/SimplifyComparisonPredicate.java    | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/SimplifyComparisonPredicate.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/SimplifyComparisonPredicate.java
index cb617958652..55cd74c0839 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/SimplifyComparisonPredicate.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/SimplifyComparisonPredicate.java
@@ -281,7 +281,8 @@ public class SimplifyComparisonPredicate extends 
AbstractExpressionRewriteRule i
     private static Expression processIntegerDecimalLiteralComparison(
             ComparisonPredicate comparisonPredicate, Expression left, 
BigDecimal literal) {
         // we only process isIntegerLikeType, which are tinyint, smallint, 
int, bigint
-        if (literal.compareTo(new BigDecimal(Long.MAX_VALUE)) <= 0) {
+        if (literal.compareTo(new BigDecimal(Long.MIN_VALUE)) >= 0
+                && literal.compareTo(new BigDecimal(Long.MAX_VALUE)) <= 0) {
             literal = literal.stripTrailingZeros();
             if (literal.scale() > 0) {
                 if (comparisonPredicate instanceof EqualTo) {
@@ -321,9 +322,10 @@ public class SimplifyComparisonPredicate extends 
AbstractExpressionRewriteRule i
     }
 
     private static IntegerLikeLiteral 
convertDecimalToIntegerLikeLiteral(BigDecimal decimal) {
-        Preconditions.checkArgument(
-                decimal.scale() <= 0 && decimal.compareTo(new 
BigDecimal(Long.MAX_VALUE)) <= 0,
-                "decimal literal must have 0 scale and smaller than 
Long.MAX_VALUE");
+        Preconditions.checkArgument(decimal.scale() <= 0
+                && decimal.compareTo(new BigDecimal(Long.MIN_VALUE)) >= 0
+                && decimal.compareTo(new BigDecimal(Long.MAX_VALUE)) <= 0,
+                "decimal literal must have 0 scale and in range 
[Long.MIN_VALUE, Long.MAX_VALUE]");
         long val = decimal.longValue();
         if (val >= Byte.MIN_VALUE && val <= Byte.MAX_VALUE) {
             return new TinyIntLiteral((byte) val);


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

Reply via email to