From 1db7882bb5313f71e06456639ed0bb9fb31da5d7 Mon Sep 17 00:00:00 2001 From: mch_ucchi <41606806+sohardforaname@users.noreply.github.com> Date: Sun, 29 Jan 2023 20:42:30 +0800 Subject: [PATCH] [Fix](Nereids): fix error of X-Z function for nereids (#16171) --- .../nereids/parser/LogicalPlanBuilder.java | 5 - .../scalar_function/A-F.out | 102 +++++++++++- .../scalar_function/X-Z.out | 150 ++++++++++++++++++ .../scalar_function/A-F.groovy | 15 +- .../scalar_function/X-Z.groovy | 23 ++- 5 files changed, 262 insertions(+), 33 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java index 575f20c994..db976292b1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java @@ -215,8 +215,6 @@ import org.apache.doris.nereids.trees.plans.logical.LogicalUnion; import org.apache.doris.nereids.trees.plans.logical.RelationUtil; import org.apache.doris.nereids.trees.plans.logical.UsingJoin; import org.apache.doris.nereids.types.DataType; -import org.apache.doris.nereids.types.IntegerType; -import org.apache.doris.nereids.types.TinyIntType; import org.apache.doris.nereids.util.ExpressionUtils; import org.apache.doris.policy.PolicyTypeEnum; import org.apache.doris.qe.ConnectContext; @@ -828,9 +826,6 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor { public Expression visitDate_sub(Date_subContext ctx) { Expression timeStamp = (Expression) visit(ctx.timestamp); Expression amount = (Expression) visit(ctx.unitsAmount); - if (! (amount.getDataType() instanceof TinyIntType)) { - amount = new Cast(amount, IntegerType.INSTANCE); - } if (ctx.unit == null) { //use "DAY" as unit by default return new DaysSub(timeStamp, amount); diff --git a/regression-test/data/nereids_function_p0/scalar_function/A-F.out b/regression-test/data/nereids_function_p0/scalar_function/A-F.out index d59832d042..9a405a8c16 100644 --- a/regression-test/data/nereids_function_p0/scalar_function/A-F.out +++ b/regression-test/data/nereids_function_p0/scalar_function/A-F.out @@ -346,15 +346,15 @@ -- !sql -- \N -0.4641588833612779 -0.5848035476425733 -0.6694329500821695 -0.7368062997280773 +0.46415888336127786 +0.5848035476425731 +0.6694329500821694 +0.7368062997280772 0.7937005259840998 0.8434326653017492 0.8879040017426008 -0.9283177667225558 -0.9654893846056298 +0.9283177667225557 +0.9654893846056297 1.0 1.0322801154563672 1.0626585691826111 @@ -1229,6 +1229,21 @@ varchar13 2012-03-11T11:10:11 2012-03-12T12:11:12 +-- !sql -- +\N +2012-03-01T01:00:01 +2012-03-02T02:01:02 +2012-03-03T03:02:03 +2012-03-04T04:03:04 +2012-03-05T05:04:05 +2012-03-06T06:05:06 +2012-03-07T07:06:07 +2012-03-08T08:07:08 +2012-03-09T09:08:09 +2012-03-10T10:09:10 +2012-03-11T11:10:11 +2012-03-12T12:11:12 + -- !sql -- \N 2012-03-01 @@ -1394,6 +1409,21 @@ varchar13 2012-03-11T11:10:11 2012-03-12T12:11:12 +-- !sql -- +\N +2012-03-01T01:00:01 +2012-03-02T02:01:02 +2012-03-03T03:02:03 +2012-03-04T04:03:04 +2012-03-05T05:04:05 +2012-03-06T06:05:06 +2012-03-07T07:06:07 +2012-03-08T08:07:08 +2012-03-09T09:08:09 +2012-03-10T10:09:10 +2012-03-11T11:10:11 +2012-03-12T12:11:12 + -- !sql -- \N 2012-03-01 @@ -1784,6 +1814,66 @@ Monday 0 0 +-- !sql -- +\N +2012-02-29T01:00:01 +2012-02-29T02:01:02 +2012-02-29T03:02:03 +2012-02-29T04:03:04 +2012-02-29T05:04:05 +2012-02-29T06:05:06 +2012-02-29T07:06:07 +2012-02-29T08:07:08 +2012-02-29T09:08:09 +2012-02-29T10:09:10 +2012-02-29T11:10:11 +2012-02-29T12:11:12 + +-- !sql -- +\N +2012-02-29T01:00:01 +2012-02-29T02:01:02 +2012-02-29T03:02:03 +2012-02-29T04:03:04 +2012-02-29T05:04:05 +2012-02-29T06:05:06 +2012-02-29T07:06:07 +2012-02-29T08:07:08 +2012-02-29T09:08:09 +2012-02-29T10:09:10 +2012-02-29T11:10:11 +2012-02-29T12:11:12 + +-- !sql -- +\N +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 + +-- !sql -- +\N +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 +2012-02-29 + -- !sql -- \N 1.0 diff --git a/regression-test/data/nereids_function_p0/scalar_function/X-Z.out b/regression-test/data/nereids_function_p0/scalar_function/X-Z.out index 4e91706419..9c6ca6ad01 100644 --- a/regression-test/data/nereids_function_p0/scalar_function/X-Z.out +++ b/regression-test/data/nereids_function_p0/scalar_function/X-Z.out @@ -494,6 +494,81 @@ 201210 201211 +-- !sql -- +\N +2013-03-01T01:00:01 +2014-03-02T02:01:02 +2015-03-03T03:02:03 +2016-03-04T04:03:04 +2017-03-05T05:04:05 +2018-03-06T06:05:06 +2019-03-07T07:06:07 +2020-03-08T08:07:08 +2021-03-09T09:08:09 +2022-03-10T10:09:10 +2023-03-11T11:10:11 +2024-03-12T12:11:12 + +-- !sql -- +\N +2013-03-01T01:00:01 +2014-03-02T02:01:02 +2015-03-03T03:02:03 +2016-03-04T04:03:04 +2017-03-05T05:04:05 +2018-03-06T06:05:06 +2019-03-07T07:06:07 +2020-03-08T08:07:08 +2021-03-09T09:08:09 +2022-03-10T10:09:10 +2023-03-11T11:10:11 +2024-03-12T12:11:12 + +-- !sql -- +\N +2013-03-01 +2014-03-02 +2015-03-03 +2016-03-04 +2017-03-05 +2018-03-06 +2019-03-07 +2020-03-08 +2021-03-09 +2022-03-10 +2023-03-11 +2024-03-12 + +-- !sql -- +\N +2013-03-01 +2014-03-02 +2015-03-03 +2016-03-04 +2017-03-05 +2018-03-06 +2019-03-07 +2020-03-08 +2021-03-09 +2022-03-10 +2023-03-11 +2024-03-12 + +-- !sql -- +\N +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 + -- !sql -- \N 0 @@ -599,3 +674,78 @@ 0 0 +-- !sql -- +\N +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 + +-- !sql -- +\N +2011-03-01T01:00:01 +2010-03-02T02:01:02 +2009-03-03T03:02:03 +2008-03-04T04:03:04 +2007-03-05T05:04:05 +2006-03-06T06:05:06 +2005-03-07T07:06:07 +2004-03-08T08:07:08 +2003-03-09T09:08:09 +2002-03-10T10:09:10 +2001-03-11T11:10:11 +2000-03-12T12:11:12 + +-- !sql -- +\N +2011-03-01T01:00:01 +2010-03-02T02:01:02 +2009-03-03T03:02:03 +2008-03-04T04:03:04 +2007-03-05T05:04:05 +2006-03-06T06:05:06 +2005-03-07T07:06:07 +2004-03-08T08:07:08 +2003-03-09T09:08:09 +2002-03-10T10:09:10 +2001-03-11T11:10:11 +2000-03-12T12:11:12 + +-- !sql -- +\N +2011-03-01 +2010-03-02 +2009-03-03 +2008-03-04 +2007-03-05 +2006-03-06 +2005-03-07 +2004-03-08 +2003-03-09 +2002-03-10 +2001-03-11 +2000-03-12 + +-- !sql -- +\N +2011-03-01 +2010-03-02 +2009-03-03 +2008-03-04 +2007-03-05 +2006-03-06 +2005-03-07 +2004-03-08 +2003-03-09 +2002-03-10 +2001-03-11 +2000-03-12 + diff --git a/regression-test/suites/nereids_function_p0/scalar_function/A-F.groovy b/regression-test/suites/nereids_function_p0/scalar_function/A-F.groovy index f97796c346..8ea8296e1d 100644 --- a/regression-test/suites/nereids_function_p0/scalar_function/A-F.groovy +++ b/regression-test/suites/nereids_function_p0/scalar_function/A-F.groovy @@ -145,8 +145,7 @@ suite("nereids_scalar_fn_1") { qt_sql "select day_ceil(kdtmv2s1, kint) from fn_test order by kdtmv2s1, kint" qt_sql "select day_ceil(kdtv2, kdtv2) from fn_test order by kdtv2, kdtv2" qt_sql "select day_ceil(kdtv2, kint) from fn_test order by kdtv2, kint" - // core - // qt_sql "select day_ceil(kdtm, kint, kdtm) from fn_test order by kdtm, kint, kdtm" + qt_sql "select day_ceil(kdtm, kint, kdtm) from fn_test order by kdtm, kint, kdtm" qt_sql "select day_ceil(kdtmv2s1, kint, kdtmv2s1) from fn_test order by kdtmv2s1, kint, kdtmv2s1" qt_sql "select day_ceil(kdtv2, kint, kdtv2) from fn_test order by kdtv2, kint, kdtv2" qt_sql "select day_floor(kdtm) from fn_test order by kdtm" @@ -158,8 +157,7 @@ suite("nereids_scalar_fn_1") { qt_sql "select day_floor(kdtmv2s1, kint) from fn_test order by kdtmv2s1, kint" qt_sql "select day_floor(kdtv2, kdtv2) from fn_test order by kdtv2, kdtv2" qt_sql "select day_floor(kdtv2, kint) from fn_test order by kdtv2, kint" - // core - // qt_sql "select day_floor(kdtm, kint, kdtm) from fn_test order by kdtm, kint, kdtm" + qt_sql "select day_floor(kdtm, kint, kdtm) from fn_test order by kdtm, kint, kdtm" qt_sql "select day_floor(kdtmv2s1, kint, kdtmv2s1) from fn_test order by kdtmv2s1, kint, kdtmv2s1" qt_sql "select day_floor(kdtv2, kint, kdtv2) from fn_test order by kdtv2, kint, kdtv2" qt_sql "select dayname(kdtm) from fn_test order by kdtm" @@ -187,11 +185,10 @@ suite("nereids_scalar_fn_1") { qt_sql "select days_diff(kdtm, kdtv2) from fn_test order by kdtm, kdtv2" qt_sql "select days_diff(kdtmv2s1, kdtm) from fn_test order by kdtmv2s1, kdtm" qt_sql "select days_diff(kdtm, kdtmv2s1) from fn_test order by kdtm, kdtmv2s1" - // cannot find function - // qt_sql "select days_sub(kdtm, kint) from fn_test order by kdtm, kint" - // qt_sql "select days_sub(kdtmv2s1, kint) from fn_test order by kdtmv2s1, kint" - // qt_sql "select days_sub(kdt, kint) from fn_test order by kdt, kint" - // qt_sql "select days_sub(kdtv2, kint) from fn_test order by kdtv2, kint" + qt_sql "select days_sub(kdtm, kint) from fn_test order by kdtm, kint" + qt_sql "select days_sub(kdtmv2s1, kint) from fn_test order by kdtmv2s1, kint" + qt_sql "select days_sub(kdt, kint) from fn_test order by kdt, kint" + qt_sql "select days_sub(kdtv2, kint) from fn_test order by kdtv2, kint" qt_sql "select dceil(kdbl) from fn_test order by kdbl" qt_sql "select degrees(kdbl) from fn_test order by kdbl" // data out of double range diff --git a/regression-test/suites/nereids_function_p0/scalar_function/X-Z.groovy b/regression-test/suites/nereids_function_p0/scalar_function/X-Z.groovy index 57832c5414..1769146a3d 100644 --- a/regression-test/suites/nereids_function_p0/scalar_function/X-Z.groovy +++ b/regression-test/suites/nereids_function_p0/scalar_function/X-Z.groovy @@ -47,30 +47,27 @@ suite("nereids_scalar_fn_5") { qt_sql "select year_floor(kdtm, kint, kdtm) from fn_test order by kdtm, kint, kdtm" qt_sql "select year_floor(kdtmv2s1, kint, kdtmv2s1) from fn_test order by kdtmv2s1, kint, kdtmv2s1" qt_sql "select year_floor(kdtv2, kint, kdtv2) from fn_test order by kdtv2, kint, kdtv2" - // cannot find function qt_sql "select yearweek(kdtm) from fn_test order by kdtm" qt_sql "select yearweek(kdtmv2s1) from fn_test order by kdtmv2s1" qt_sql "select yearweek(kdtv2) from fn_test order by kdtv2" qt_sql "select yearweek(kdtm, kint) from fn_test order by kdtm, kint" qt_sql "select yearweek(kdtmv2s1, kint) from fn_test order by kdtmv2s1, kint" qt_sql "select yearweek(kdtv2, kint) from fn_test order by kdtv2, kint" - // qt_sql "select years_add(kdtm, kint) from fn_test order by kdtm, kint" - // qt_sql "select years_add(kdtmv2s1, kint) from fn_test order by kdtmv2s1, kint" - // qt_sql "select years_add(kdt, kint) from fn_test order by kdt, kint" - // qt_sql "select years_add(kdtv2, kint) from fn_test order by kdtv2, kint" + qt_sql "select years_add(kdtm, kint) from fn_test order by kdtm, kint" + qt_sql "select years_add(kdtmv2s1, kint) from fn_test order by kdtmv2s1, kint" + qt_sql "select years_add(kdt, kint) from fn_test order by kdt, kint" + qt_sql "select years_add(kdtv2, kint) from fn_test order by kdtv2, kint" qt_sql "select years_diff(kdtm, kdtm) from fn_test order by kdtm, kdtm" qt_sql "select years_diff(kdtmv2s1, kdtmv2s1) from fn_test order by kdtmv2s1, kdtmv2s1" qt_sql "select years_diff(kdtv2, kdtmv2s1) from fn_test order by kdtv2, kdtmv2s1" qt_sql "select years_diff(kdtmv2s1, kdtv2) from fn_test order by kdtmv2s1, kdtv2" qt_sql "select years_diff(kdtv2, kdtv2) from fn_test order by kdtv2, kdtv2" - // result error - // qt_sql "select years_diff(kdtv2, kdtm) from fn_test order by kdtv2, kdtm" - // qt_sql "select years_diff(kdtm, kdtv2) from fn_test order by kdtm, kdtv2" + qt_sql "select years_diff(kdtv2, kdtm) from fn_test order by kdtv2, kdtm" + qt_sql "select years_diff(kdtm, kdtv2) from fn_test order by kdtm, kdtv2" qt_sql "select years_diff(kdtmv2s1, kdtm) from fn_test order by kdtmv2s1, kdtm" qt_sql "select years_diff(kdtm, kdtmv2s1) from fn_test order by kdtm, kdtmv2s1" - // cannot find function - // qt_sql "select years_sub(kdtm, kint) from fn_test order by kdtm, kint" - // qt_sql "select years_sub(kdtmv2s1, kint) from fn_test order by kdtmv2s1, kint" - // qt_sql "select years_sub(kdt, kint) from fn_test order by kdt, kint" - // qt_sql "select years_sub(kdtv2, kint) from fn_test order by kdtv2, kint" + qt_sql "select years_sub(kdtm, kint) from fn_test order by kdtm, kint" + qt_sql "select years_sub(kdtmv2s1, kint) from fn_test order by kdtmv2s1, kint" + qt_sql "select years_sub(kdt, kint) from fn_test order by kdt, kint" + qt_sql "select years_sub(kdtv2, kint) from fn_test order by kdtv2, kint" } \ No newline at end of file