This is an automated email from the ASF dual-hosted git repository.
jakevin 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 7d648a94d0 [fix](Nereids): fix scalar_function A-F. (#16209)
7d648a94d0 is described below
commit 7d648a94d08d6152714749846ee2337d0a1c2a50
Author: jakevin <[email protected]>
AuthorDate: Mon Jan 30 00:37:34 2023 +0800
[fix](Nereids): fix scalar_function A-F. (#16209)
* [fix](Nereids): fix scalar_function A-F.
* [Fix](regression-test)fix regression test framework cannot compare double
value nan and inf.
* revert dround()
---
.../doris/catalog/BuiltinScalarFunctions.java | 4 +-
.../expressions/functions/scalar/DaysSub.java | 2 +-
.../nereids_function_p0/scalar_function/A-F.out | 109 ++++++++++++++++++++-
.../doris/regression/util/OutputUtils.groovy | 15 ++-
.../nereids_function_p0/scalar_function/A-F.groovy | 43 +++-----
5 files changed, 133 insertions(+), 40 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
index 0074ac03db..e060b13905 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
@@ -420,9 +420,9 @@ public class BuiltinScalarFunctions implements
FunctionHelper {
scalar(DayOfMonth.class, "day", "dayofmonth"),
scalar(DayOfWeek.class, "dayofweek"),
scalar(DayOfYear.class, "dayofyear"),
- scalar(DaysAdd.class, "days_add"),
+ scalar(DaysAdd.class, "days_add", "date_add", "adddate"),
scalar(DaysDiff.class, "days_diff"),
- scalar(DaysSub.class, "days_sub"),
+ scalar(DaysSub.class, "days_sub", "date_sub", "subdate"),
scalar(Dceil.class, "dceil"),
scalar(Degrees.class, "degrees"),
scalar(Dexp.class, "dexp"),
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/DaysSub.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/DaysSub.java
index 63064481b6..04a68bd8b4 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/DaysSub.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/DaysSub.java
@@ -36,7 +36,7 @@ import com.google.common.collect.ImmutableList;
import java.util.List;
/**
- * ScalarFunction 'days_add'.
+ * ScalarFunction 'days_sub'.
*/
public class DaysSub extends ScalarFunction implements BinaryExpression,
ExplicitlyCastableSignature, AlwaysNullable {
//When enable_date_conversion is true, we prefer to V2 signature.
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 9a405a8c16..ac75c271fc 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
@@ -119,6 +119,21 @@
1.100000000
1.200000000
+-- !sql --
+\N
+1.4706289056333368
+1.369438406004566
+1.2661036727794992
+1.1592794807274085
+1.0471975511965979
+0.9272952180016123
+0.7953988301841436
+0.6435011087932843
+0.45102681179626236
+0.0
+nan
+nan
+
-- !sql --
\N
\N
@@ -179,6 +194,21 @@
115
115
+-- !sql --
+\N
+0.1001674211615598
+0.2013579207903308
+0.30469265401539747
+0.41151684606748806
+0.5235987755982988
+0.6435011087932844
+0.775397496610753
+0.9272952180016123
+1.1197695149986342
+1.5707963267948966
+nan
+nan
+
-- !sql --
\N
0.09966865249116204
@@ -1904,6 +1934,21 @@ Monday
63.02535746439057
68.75493541569878
+-- !sql --
+\N
+1.1051709180756477
+1.2214027581601699
+1.3498588075760032
+1.4918246976412703
+1.6487212707001282
+1.8221188003905089
+2.0137527074704766
+2.225540928492468
+2.45960311115695
+2.718281828459045
+3.0041660239464334
+3.3201169227365472
+
-- !sql --
\N
0.0
@@ -1956,12 +2001,12 @@ Monday
-0.5228787452803376
-0.3979400086720376
-0.3010299956639812
--0.22184874961635637
+-0.2218487496163564
-0.1549019599857432
-0.09691001300805639
-0.045757490560675115
0.0
-0.04139268515822507
+0.04139268515822508
0.07918124604762482
-- !sql --
@@ -1994,6 +2039,36 @@ Monday
+-- !sql --
+\N
+0.7943282347242815
+0.7247796636776955
+0.696845301935949
+0.6931448431551464
+0.7071067811865476
+0.7360219228178333
+0.779055912670449
+0.8365116420730186
+0.9095325760829622
+1.0
+1.1105342410545758
+1.2445647472039776
+
+-- !sql --
+\N
+0.31622776601683794
+0.4472135954999579
+0.5477225575051661
+0.6324555320336759
+0.7071067811865476
+0.7745966692414834
+0.8366600265340756
+0.8944271909999159
+0.9486832980505138
+1.0
+1.0488088481701516
+1.0954451150103321
+
-- !sql --
2.718281828459045
2.718281828459045
@@ -2040,6 +2115,21 @@ true
true
-- !sql --
+\N
+1.1051709180756477
+1.2214027581601699
+1.3498588075760032
+1.4918246976412703
+1.6487212707001282
+1.8221188003905089
+2.0137527074704766
+2.225540928492468
+2.45960311115695
+2.718281828459045
+3.0041660239464334
+3.3201169227365472
+
+-- !sql --
@@ -2129,6 +2219,21 @@ true
0.0
0.0
+-- !sql --
+\N
+0.7943282347242815
+0.7247796636776955
+0.696845301935949
+0.6931448431551464
+0.7071067811865476
+0.7360219228178333
+0.779055912670449
+0.8365116420730186
+0.9095325760829622
+1.0
+1.1105342410545758
+1.2445647472039776
+
-- !sql --
\N
0000-01-01
diff --git
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/OutputUtils.groovy
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/OutputUtils.groovy
index 957f3fb570..96be849b90 100644
---
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/OutputUtils.groovy
+++
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/OutputUtils.groovy
@@ -59,10 +59,19 @@ class OutputUtils {
if (dataType == "FLOAT" || dataType == "DOUBLE" || dataType ==
"DECIMAL") {
Boolean expectNull = expectCell.equals("\\\\N")
Boolean actualNull = realCell.equals("\\\\N")
-
- if (expectNull != actualNull) {
+ Boolean expectNan = expectCell.equals("nan")
+ Boolean actualNan = realCell.equals("nan")
+ Boolean expectInf = expectCell.equals("inf")
+ Boolean actualInf = realCell.equals("inf")
+ Boolean expectMinusInf = expectCell.equals("-inf")
+ Boolean actualMinusInf = realCell.equals("-inf")
+
+ if (expectNull != actualNull || expectNan != actualNan ||
expectInf != actualInf || expectMinusInf != actualMinusInf) {
return "${info}, line ${line}, ${dataType} result
mismatch.\nExpect cell: ${expectCell}\nBut real is: ${realCell}"
} else if (!expectNull) {
+ if (expectNull || expectNan || expectInf || expectMinusInf) {
+ return null
+ }
// both are not null
double expectDouble = Double.parseDouble(expectCell)
double realDouble = Double.parseDouble(realCell)
@@ -70,7 +79,7 @@ class OutputUtils {
double realRelativeError = Math.abs(expectDouble - realDouble)
/ realDouble
double expectRelativeError = 1e-10
- if(expectRelativeError < realRelativeError) {
+ if (expectRelativeError < realRelativeError) {
// Keep the scale of low precision data to solve TPCH
cases like:
// "Expect cell is: 0.0395, But real is: 0.039535109"
int expectDecimalPlaces = expectCell.contains(".") ?
expectCell.length() - expectCell.lastIndexOf(".") - 1 : 0
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 8ea8296e1d..f7c923b021 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
@@ -28,8 +28,7 @@ suite("nereids_scalar_fn_1") {
qt_sql "select abs(kint) from fn_test order by kint"
qt_sql "select abs(ktint) from fn_test order by ktint"
qt_sql "select abs(kdcmls1) from fn_test order by kdcmls1"
- // data out of function definition field
- // qt_sql "select acos(kdbl) from fn_test order by kdbl"
+ qt_sql "select acos(kdbl) from fn_test order by kdbl"
sql "select aes_decrypt(kvchrs1, kvchrs1) from fn_test order by kvchrs1,
kvchrs1"
sql "select aes_decrypt(kstr, kstr) from fn_test order by kstr, kstr"
sql "select aes_decrypt(kvchrs1, kvchrs1, kvchrs1) from fn_test order by
kvchrs1, kvchrs1, kvchrs1"
@@ -48,37 +47,19 @@ suite("nereids_scalar_fn_1") {
qt_sql "select append_trailing_char_if_absent(kstr, kstr) from fn_test
order by kstr, kstr"
qt_sql "select ascii(kvchrs1) from fn_test order by kvchrs1"
qt_sql "select ascii(kstr) from fn_test order by kstr"
- // data out of function definition field
- // qt_sql "select asin(kdbl) from fn_test order by kdbl"
+ qt_sql "select asin(kdbl) from fn_test order by kdbl"
qt_sql "select atan(kdbl) from fn_test order by kdbl"
qt_sql "select bin(kbint) from fn_test order by kbint"
qt_sql "select bit_length(kvchrs1) from fn_test order by kvchrs1"
qt_sql "select bit_length(kstr) from fn_test order by kstr"
-// function bitmap_and(bitmap, bitmap) is unsupported for the test suite.
-// function bitmap_and_count(bitmap, bitmap) is unsupported for the test suite.
-// function bitmap_and_not(bitmap, bitmap) is unsupported for the test suite.
-// function bitmap_and_not_count(bitmap, bitmap) is unsupported for the test
suite.
-// function bitmap_contains(bitmap, bigint) is unsupported for the test suite.
-// function bitmap_count(bitmap) is unsupported for the test suite.
+ // bitmap test in
nereids_p0/sql_functions/bitmap_functions/test_bitmap_function.groovy
qt_sql "select bitmap_empty() from fn_test"
qt_sql "select bitmap_from_string(kvchrs1) from fn_test order by kvchrs1"
qt_sql "select bitmap_from_string(kstr) from fn_test order by kstr"
-// function bitmap_has_all(bitmap, bitmap) is unsupported for the test suite.
-// function bitmap_has_any(bitmap, bitmap) is unsupported for the test suite.
qt_sql "select bitmap_hash(kvchrs1) from fn_test order by kvchrs1"
qt_sql "select bitmap_hash(kstr) from fn_test order by kstr"
qt_sql "select bitmap_hash64(kvchrs1) from fn_test order by kvchrs1"
qt_sql "select bitmap_hash64(kstr) from fn_test order by kstr"
-// function bitmap_max(bitmap) is unsupported for the test suite.
-// function bitmap_min(bitmap) is unsupported for the test suite.
-// function bitmap_not(bitmap, bitmap) is unsupported for the test suite.
-// function bitmap_or(bitmap, bitmap) is unsupported for the test suite.
-// function bitmap_or_count(bitmap, bitmap) is unsupported for the test suite.
-// function bitmap_subset_in_range(bitmap, bigint, bigint) is unsupported for
the test suite.
-// function bitmap_subset_limit(bitmap, bigint, bigint) is unsupported for the
test suite.
-// function bitmap_to_string(bitmap) is unsupported for the test suite.
-// function bitmap_xor(bitmap, bitmap) is unsupported for the test suite.
-// function bitmap_xor_count(bitmap, bitmap) is unsupported for the test suite.
qt_sql "select cbrt(kdbl) from fn_test order by kdbl"
qt_sql "select ceil(kdbl) from fn_test order by kdbl"
qt_sql "select ceiling(kdbl) from fn_test order by kdbl"
@@ -97,7 +78,7 @@ suite("nereids_scalar_fn_1") {
qt_sql "select coalesce(kdtmv2s1) from fn_test order by kdtmv2s1"
qt_sql "select coalesce(kdtv2) from fn_test order by kdtv2"
qt_sql "select coalesce(kdcmls1) from fn_test order by kdcmls1"
-// function coalesce(bitmap) is unsupported for the test suite.
+ // function coalesce(bitmap) is unsupported for the test suite.
qt_sql "select coalesce(kvchrs1) from fn_test order by kvchrs1"
qt_sql "select coalesce(kstr) from fn_test order by kstr"
qt_sql "select concat(kvchrs1) from fn_test order by kvchrs1"
@@ -114,6 +95,8 @@ suite("nereids_scalar_fn_1") {
sql "select current_date() from fn_test"
sql "select current_time() from fn_test"
sql "select current_timestamp() from fn_test"
+ // core
+ // qt_sql "select current_timestamp(kint) from fn_test order by kint"
sql "select current_user() from fn_test"
sql "select curtime() from fn_test"
sql "select database() from fn_test"
@@ -191,19 +174,17 @@ suite("nereids_scalar_fn_1") {
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
- // qt_sql "select dexp(kdbl) from fn_test order by kdbl"
+ qt_sql "select dexp(kdbl) from fn_test order by kdbl"
qt_sql "select dfloor(kdbl) from fn_test order by kdbl"
qt_sql "select digital_masking(kbint) from fn_test order by kbint"
qt_sql "select dlog1(kdbl) from fn_test order by kdbl"
qt_sql "select dlog10(kdbl) from fn_test order by kdbl"
qt_sql "select domain(kstr) from fn_test order by kstr"
qt_sql "select domain_without_www(kstr) from fn_test order by kstr"
- // data out of double range
- // qt_sql "select dpow(kdbl, kdbl) from fn_test order by kdbl, kdbl"
+ qt_sql "select dpow(kdbl, kdbl) from fn_test order by kdbl, kdbl"
// qt_sql "select dround(kdbl) from fn_test order by kdbl"
// qt_sql "select dround(kdbl, kint) from fn_test order by kdbl, kint"
- // qt_sql "select dsqrt(kdbl) from fn_test order by kdbl"
+ qt_sql "select dsqrt(kdbl) from fn_test order by kdbl"
qt_sql "select e() from fn_test"
// result error
// qt_sql "select elt(kint, kvchrs1) from fn_test order by kint, kvchrs1"
@@ -212,8 +193,7 @@ suite("nereids_scalar_fn_1") {
qt_sql "select ends_with(kstr, kstr) from fn_test order by kstr, kstr"
// cannot find function
// qt_sql "select es_query(kvchrs1, kvchrs1) from fn_test order by
kvchrs1, kvchrs1"
- // data out of range
- // qt_sql "select exp(kdbl) from fn_test order by kdbl"
+ qt_sql "select exp(kdbl) from fn_test order by kdbl"
qt_sql "select extract_url_parameter(kvchrs1, kvchrs1) from fn_test order
by kvchrs1, kvchrs1"
// must be less than 2, but some data fit.
// qt_sql "select field(ktint) from fn_test order by ktint"
@@ -233,8 +213,7 @@ suite("nereids_scalar_fn_1") {
qt_sql "select floor(kdbl) from fn_test order by kdbl"
qt_sql "select fmod(kfloat, kfloat) from fn_test order by kfloat, kfloat"
qt_sql "select fmod(kdbl, kdbl) from fn_test order by kdbl, kdbl"
- // data out of float range
- // qt_sql "select fpow(kdbl, kdbl) from fn_test order by kdbl, kdbl"
+ qt_sql "select fpow(kdbl, kdbl) from fn_test order by kdbl, kdbl"
sql "select from_base64(kvchrs1) from fn_test order by kvchrs1"
sql "select from_base64(kstr) from fn_test order by kstr"
qt_sql "select from_days(kint) from fn_test order by kint"
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]