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