This is an automated email from the ASF dual-hosted git repository.
gabriellee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new d5486726de [Bug](date) Fix wrong result produced by date function
(#12720)
d5486726de is described below
commit d5486726de0a078b4230d83352b2a31ee2548288
Author: Gabriel <[email protected]>
AuthorDate: Tue Sep 20 21:09:26 2022 +0800
[Bug](date) Fix wrong result produced by date function (#12720)
---
.../org/apache/doris/analysis/DateLiteral.java | 6 ++-
.../org/apache/doris/analysis/InPredicateTest.java | 2 +-
.../org/apache/doris/rewrite/FEFunctionsTest.java | 49 ++++------------------
3 files changed, 14 insertions(+), 43 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 2bdb3e43ac..9cd48b53ae 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
@@ -600,7 +600,11 @@ public class DateLiteral extends LiteralExpr {
@Override
public long getLongValue() {
- return (year * 10000 + month * 100 + day) * 1000000L + hour * 10000 +
minute * 100 + second;
+ if (this.getType().isDate() || this.getType().isDateV2()) {
+ return year * 10000 + month * 100 + day;
+ } else {
+ return (year * 10000 + month * 100 + day) * 1000000L + hour *
10000 + minute * 100 + second;
+ }
}
@Override
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/InPredicateTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/InPredicateTest.java
index 7c45237296..1175db44a5 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/InPredicateTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/InPredicateTest.java
@@ -175,7 +175,7 @@ public class InPredicateTest {
InPredicate union = inPredicate1.union(inPredicate2);
Assert.assertEquals(slotRef1, union.getChild(0));
Assert.assertTrue(union.isLiteralChildren());
- Assert.assertEquals(2, union.getListChildren().size());
+ Assert.assertEquals(3, union.getListChildren().size());
Assert.assertTrue(union.getListChildren().contains(literalChild1));
Assert.assertTrue(union.getListChildren().contains(literalChild2));
Assert.assertTrue(union.getListChildren().contains(literalChild5));
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/rewrite/FEFunctionsTest.java
b/fe/fe-core/src/test/java/org/apache/doris/rewrite/FEFunctionsTest.java
index eb9f18684d..70ec805e64 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/rewrite/FEFunctionsTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/rewrite/FEFunctionsTest.java
@@ -146,49 +146,33 @@ public class FEFunctionsTest {
public void dateAddTest() throws AnalysisException {
DateLiteral actualResult = FEFunctions.dateAdd(new
DateLiteral("2018-08-08", Type.DATE),
new IntLiteral(1));
- DateLiteral expectedResult = new DateLiteral("2018-08-09 00:00:00",
Type.DATETIME);
+ DateLiteral expectedResult = new DateLiteral("2018-08-09", Type.DATE);
Assert.assertEquals(expectedResult, actualResult);
actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08",
Type.DATE), new IntLiteral(-1));
- expectedResult = new DateLiteral("2018-08-07 00:00:00", Type.DATETIME);
+ expectedResult = new DateLiteral("2018-08-07", Type.DATE);
Assert.assertEquals(expectedResult, actualResult);
}
@Test
public void dateV2AddTest() throws AnalysisException {
DateLiteral actualResult = FEFunctions.dateAdd(new
DateLiteral("2018-08-08", Type.DATEV2), new IntLiteral(1));
- DateLiteral expectedResult = new DateLiteral("2018-08-09 00:00:00",
Type.DATETIMEV2);
- Assert.assertEquals(expectedResult, actualResult);
-
- actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08",
Type.DATE), new IntLiteral(1));
- expectedResult = new DateLiteral("2018-08-09 00:00:00",
Type.DATETIMEV2);
- Assert.assertEquals(expectedResult, actualResult);
-
- actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08",
Type.DATEV2), new IntLiteral(1));
- expectedResult = new DateLiteral("2018-08-09 00:00:00", Type.DATETIME);
- Assert.assertEquals(expectedResult, actualResult);
-
- actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08",
Type.DATEV2), new IntLiteral(-1));
- expectedResult = new DateLiteral("2018-08-07 00:00:00",
Type.DATETIMEV2);
- Assert.assertEquals(expectedResult, actualResult);
-
- actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08",
Type.DATE), new IntLiteral(-1));
- expectedResult = new DateLiteral("2018-08-07 00:00:00",
Type.DATETIMEV2);
+ DateLiteral expectedResult = new DateLiteral("2018-08-09",
Type.DATEV2);
Assert.assertEquals(expectedResult, actualResult);
actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08",
Type.DATEV2), new IntLiteral(-1));
- expectedResult = new DateLiteral("2018-08-07 00:00:00", Type.DATETIME);
+ expectedResult = new DateLiteral("2018-08-07", Type.DATEV2);
Assert.assertEquals(expectedResult, actualResult);
}
@Test
public void addDateTest() throws AnalysisException {
DateLiteral actualResult = FEFunctions.addDate(new
DateLiteral("2018-08-08", Type.DATE), new IntLiteral(1));
- DateLiteral expectedResult = new DateLiteral("2018-08-09 00:00:00",
Type.DATETIME);
+ DateLiteral expectedResult = new DateLiteral("2018-08-09", Type.DATE);
Assert.assertEquals(expectedResult, actualResult);
actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08",
Type.DATE), new IntLiteral(-1));
- expectedResult = new DateLiteral("2018-08-07 00:00:00", Type.DATETIME);
+ expectedResult = new DateLiteral("2018-08-07", Type.DATE);
Assert.assertEquals(expectedResult, actualResult);
}
@@ -196,29 +180,12 @@ public class FEFunctionsTest {
@Test
public void addDateV2Test() throws AnalysisException {
DateLiteral actualResult = FEFunctions.addDate(new
DateLiteral("2018-08-08", Type.DATEV2), new IntLiteral(1));
- DateLiteral expectedResult = new DateLiteral("2018-08-09 00:00:00",
Type.DATETIMEV2);
- Assert.assertEquals(expectedResult, actualResult);
-
- actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08",
Type.DATE), new IntLiteral(1));
- expectedResult = new DateLiteral("2018-08-09 00:00:00",
Type.DATETIMEV2);
- Assert.assertEquals(expectedResult, actualResult);
-
- actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08",
Type.DATEV2), new IntLiteral(1));
- expectedResult = new DateLiteral("2018-08-09 00:00:00", Type.DATETIME);
- Assert.assertEquals(expectedResult, actualResult);
-
- actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08",
Type.DATEV2), new IntLiteral(-1));
- expectedResult = new DateLiteral("2018-08-07 00:00:00",
Type.DATETIMEV2);
- Assert.assertEquals(expectedResult, actualResult);
-
- actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08",
Type.DATE), new IntLiteral(-1));
- expectedResult = new DateLiteral("2018-08-07 00:00:00",
Type.DATETIMEV2);
+ DateLiteral expectedResult = new DateLiteral("2018-08-09",
Type.DATEV2);
Assert.assertEquals(expectedResult, actualResult);
actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08",
Type.DATEV2), new IntLiteral(-1));
- expectedResult = new DateLiteral("2018-08-07 00:00:00", Type.DATETIME);
+ expectedResult = new DateLiteral("2018-08-07", Type.DATEV2);
Assert.assertEquals(expectedResult, actualResult);
-
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]