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]

Reply via email to