[Fix](Nereids): fix error of X-Z function for nereids (#16171)

This commit is contained in:
mch_ucchi
2023-01-29 20:42:30 +08:00
committed by GitHub
parent 1ec88cbff6
commit 1db7882bb5
5 changed files with 262 additions and 33 deletions

View File

@ -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<Object> {
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);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"
}