From 30cdcd982d5bf48f119f4d4c9e36e4658c76fb28 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Mon, 19 Sep 2022 10:55:59 +0800 Subject: [PATCH 1/4] [Bug](date) Fix wrong result produced by date function --- .../main/java/org/apache/doris/analysis/DateLiteral.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 2bdb3e43ac1360..9cd48b53ae4242 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 @@ private String convertToString(PrimitiveType type) { @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 From c2570dcbe073d6127548bda51671099d0c4ffe09 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Mon, 19 Sep 2022 11:30:20 +0800 Subject: [PATCH 2/4] update --- .../test/java/org/apache/doris/analysis/InPredicateTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7c45237296ee23..1175db44a5e74e 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 void testUnionWithDateV2() throws AnalysisException { 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)); From 6c492ae14c488c9bf47adb30e11542dd9ab6d5ed Mon Sep 17 00:00:00 2001 From: Gabriel Date: Mon, 19 Sep 2022 12:41:40 +0800 Subject: [PATCH 3/4] update --- .../apache/doris/rewrite/FEFunctionsTest.java | 49 +++---------------- 1 file changed, 8 insertions(+), 41 deletions(-) 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 eb9f18684d69ec..63dff4c45258af 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 void dateV2DiffTest() throws AnalysisException { 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 void addDateTest() throws AnalysisException { @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.DATETIMEV2); Assert.assertEquals(expectedResult, actualResult); - } @Test From fb848f54e52ef24af40a8d38acffe1d3386dbffd Mon Sep 17 00:00:00 2001 From: Gabriel Date: Mon, 19 Sep 2022 13:37:55 +0800 Subject: [PATCH 4/4] update --- .../src/test/java/org/apache/doris/rewrite/FEFunctionsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 63dff4c45258af..70ec805e64aff7 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 @@ -184,7 +184,7 @@ public void addDateV2Test() throws AnalysisException { Assert.assertEquals(expectedResult, actualResult); actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08", Type.DATEV2), new IntLiteral(-1)); - expectedResult = new DateLiteral("2018-08-07", Type.DATETIMEV2); + expectedResult = new DateLiteral("2018-08-07", Type.DATEV2); Assert.assertEquals(expectedResult, actualResult); }