diff --git a/datafusion/tests/test_functions.py b/datafusion/tests/test_functions.py index 1727e7e5..1a0133f2 100644 --- a/datafusion/tests/test_functions.py +++ b/datafusion/tests/test_functions.py @@ -131,6 +131,7 @@ def test_math_functions(): f.sinh(col_v), f.tanh(col_v), f.factorial(literal(6)), + f.isnan(col_nav), ) batches = df.collect() assert len(batches) == 1 @@ -185,6 +186,7 @@ def test_math_functions(): np.testing.assert_array_almost_equal(result.column(32), np.sinh(values)) np.testing.assert_array_almost_equal(result.column(33), np.tanh(values)) np.testing.assert_array_almost_equal(result.column(34), math.factorial(6)) + np.testing.assert_array_almost_equal(result.column(35), np.isnan(na_values)) def test_string_functions(df): diff --git a/src/functions.rs b/src/functions.rs index 6037ce19..80a2dffc 100644 --- a/src/functions.rs +++ b/src/functions.rs @@ -230,6 +230,11 @@ scalar_function!(factorial, Factorial); scalar_function!(floor, Floor); scalar_function!(gcd, Gcd); scalar_function!(initcap, InitCap, "Converts the first letter of each word to upper case and the rest to lower case. Words are sequences of alphanumeric characters separated by non-alphanumeric characters."); +scalar_function!( + isnan, + Isnan, + "Returns true if a given number is +NaN or -NaN otherwise returns false." +); scalar_function!(lcm, Lcm); scalar_function!(left, Left, "Returns first n characters in the string, or when n is negative, returns all but last |n| characters."); scalar_function!(ln, Ln); @@ -247,7 +252,7 @@ scalar_function!( scalar_function!( nanvl, Nanvl, - "Computes the MD5 hash of the argument, with the result written in hexadecimal." + "Returns x if x is not NaN otherwise returns y." ); scalar_function!(octet_length, OctetLength, "Returns number of bytes in the string. Since this version of the function accepts type character directly, it will not strip trailing spaces."); scalar_function!(pi, Pi);