[Fix](Nereids): fix error of X-Z function for nereids (#16171)
This commit is contained in:
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
}
|
||||
Reference in New Issue
Block a user