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

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

commit 15ebebbe60909bdc70676fdc8dcbee9738ef8a16
Author: zclllyybb <zhaochan...@selectdb.com>
AuthorDate: Thu Sep 14 16:51:50 2023 +0800

    [fix](datetime) fix compare of DatetimeLiteral (#24343)
    
    fix compare of DatetimeLiteral
---
 .../org/apache/doris/analysis/DateLiteral.java     |  2 +-
 .../doris/analysis/LiteralExprCompareTest.java     | 24 +++++++++++-----------
 .../data/datatype_p0/datetimev2/test_exprs.out     |  6 ++++++
 .../datatype_p0/datetimev2/test_exprs.groovy       |  3 +++
 4 files changed, 22 insertions(+), 13 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java
index 11d17ec816..71c6f171c0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java
@@ -583,7 +583,7 @@ public class DateLiteral extends LiteralExpr {
             return -1;
         }
         // date time will not overflow when doing addition and subtraction
-        return Long.signum(getLongValue() - expr.getLongValue());
+        return getStringValue().compareTo(expr.getStringValue());
     }
 
     @Override
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/analysis/LiteralExprCompareTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/analysis/LiteralExprCompareTest.java
index e0d6b77ab0..4134f2cb0e 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/analysis/LiteralExprCompareTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/analysis/LiteralExprCompareTest.java
@@ -127,10 +127,10 @@ public class LiteralExprCompareTest {
         Assert.assertTrue(maxDatetime1.equals(date9) && 
maxDatetime1.compareLiteral(date9) == 0);
         Assert.assertTrue(minDatetime1.equals(date11) && 
minDatetime1.compareLiteral(date11) == 0);
 
-        Assert.assertTrue(!maxDate1.equals(date1) && 1 == 
maxDate1.compareLiteral(date1));
-        Assert.assertTrue(!minDate1.equals(date1) && -1 == 
minDate1.compareLiteral(date1));
-        Assert.assertTrue(!maxDatetime1.equals(datetime1) && 1 == 
maxDatetime1.compareLiteral(datetime1));
-        Assert.assertTrue(!minDatetime1.equals(datetime1) && -1 == 
minDatetime1.compareLiteral(datetime1));
+        Assert.assertTrue(!maxDate1.equals(date1) && 
maxDate1.compareLiteral(date1) > 0);
+        Assert.assertTrue(!minDate1.equals(date1) && 
minDate1.compareLiteral(date1) < 0);
+        Assert.assertTrue(!maxDatetime1.equals(datetime1) && 
maxDatetime1.compareLiteral(datetime1) > 0);
+        Assert.assertTrue(!minDatetime1.equals(datetime1) && 
minDatetime1.compareLiteral(datetime1) < 0);
     }
 
     @Test
@@ -181,10 +181,10 @@ public class LiteralExprCompareTest {
         Assert.assertTrue(maxDatetime1.equals(date9) && 
maxDatetime1.compareLiteral(date9) == 0);
         Assert.assertTrue(minDatetime1.equals(date11) && 
minDatetime1.compareLiteral(date11) == 0);
 
-        Assert.assertTrue(!maxDate1.equals(date1) && 1 == 
maxDate1.compareLiteral(date1));
-        Assert.assertTrue(!minDate1.equals(date1) && -1 == 
minDate1.compareLiteral(date1));
-        Assert.assertTrue(!maxDatetime1.equals(datetime1) && 1 == 
maxDatetime1.compareLiteral(datetime1));
-        Assert.assertTrue(!minDatetime1.equals(datetime1) && -1 == 
minDatetime1.compareLiteral(datetime1));
+        Assert.assertTrue(!maxDate1.equals(date1) && 
maxDate1.compareLiteral(date1) > 0);
+        Assert.assertTrue(!minDate1.equals(date1) && 
minDate1.compareLiteral(date1) < 0);
+        Assert.assertTrue(!maxDatetime1.equals(datetime1) && 
maxDatetime1.compareLiteral(datetime1) > 0);
+        Assert.assertTrue(!minDatetime1.equals(datetime1) && 
minDatetime1.compareLiteral(datetime1) < 0);
     }
 
     @Test
@@ -235,10 +235,10 @@ public class LiteralExprCompareTest {
         Assert.assertTrue(maxDatetime1.equals(date9) && 
maxDatetime1.compareLiteral(date9) == 0);
         Assert.assertTrue(minDatetime1.equals(date11) && 
minDatetime1.compareLiteral(date11) == 0);
 
-        Assert.assertTrue(!maxDate1.equals(date1) && 1 == 
maxDate1.compareLiteral(date1));
-        Assert.assertTrue(!minDate1.equals(date1) && -1 == 
minDate1.compareLiteral(date1));
-        Assert.assertTrue(!maxDatetime1.equals(datetime1) && 1 == 
maxDatetime1.compareLiteral(datetime1));
-        Assert.assertTrue(!minDatetime1.equals(datetime1) && -1 == 
minDatetime1.compareLiteral(datetime1));
+        Assert.assertTrue(!maxDate1.equals(date1) && 
maxDate1.compareLiteral(date1) > 0);
+        Assert.assertTrue(!minDate1.equals(date1) && 
minDate1.compareLiteral(date1) < 0);
+        Assert.assertTrue(!maxDatetime1.equals(datetime1) && 
maxDatetime1.compareLiteral(datetime1) > 0);
+        Assert.assertTrue(!minDatetime1.equals(datetime1) && 
minDatetime1.compareLiteral(datetime1) < 0);
     }
 
     @Test
diff --git a/regression-test/data/datatype_p0/datetimev2/test_exprs.out 
b/regression-test/data/datatype_p0/datetimev2/test_exprs.out
index b04eacdfb5..d1d28acc1d 100644
--- a/regression-test/data/datatype_p0/datetimev2/test_exprs.out
+++ b/regression-test/data/datatype_p0/datetimev2/test_exprs.out
@@ -43,3 +43,9 @@
 2022-01-01T11:11:11.911
 2022-01-01T11:11:12.022
 
+-- !compare_dt1 --
+false
+
+-- !compare_dt2 --
+false
+
diff --git a/regression-test/suites/datatype_p0/datetimev2/test_exprs.groovy 
b/regression-test/suites/datatype_p0/datetimev2/test_exprs.groovy
index bf935cc823..ef285df524 100644
--- a/regression-test/suites/datatype_p0/datetimev2/test_exprs.groovy
+++ b/regression-test/suites/datatype_p0/datetimev2/test_exprs.groovy
@@ -62,4 +62,7 @@ suite("test_exprs") {
     qt_sql_microseconds_sub_datetimev2_3 " select microseconds_sub(col, 
-200000) col1 from ${table1} order by col1; "
     // 2.2 Negative microseconds delta affects second change
     qt_sql_microseconds_sub_datetimev2_4 " select microseconds_sub(col, 
-800000) col1 from ${table1} order by col1; "
+
+    qt_compare_dt1 "select 
/*SET_VAR(experimental_enable_nereids_planner=true)*/ cast('2020-12-12 
12:12:12.123456' as datetime(6)) = cast('2020-12-12 12:12:12.123455' as 
datetime(6));"
+    qt_compare_dt2 "select 
/*SET_VAR(experimental_enable_nereids_planner=false)*/ cast('2020-12-12 
12:12:12.123456' as datetime(6)) = cast('2020-12-12 12:12:12.123455' as 
datetime(6));"
 }


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

Reply via email to