diff --git a/velox/functions/sparksql/Register.cpp b/velox/functions/sparksql/Register.cpp index fa44e98c27fa..61aa0600b464 100644 --- a/velox/functions/sparksql/Register.cpp +++ b/velox/functions/sparksql/Register.cpp @@ -23,6 +23,7 @@ #include "velox/functions/lib/RegistrationHelpers.h" #include "velox/functions/lib/Repeat.h" #include "velox/functions/prestosql/ArrayFunctions.h" +#include "velox/functions/prestosql/BinaryFunctions.h" #include "velox/functions/prestosql/DateTimeFunctions.h" #include "velox/functions/prestosql/StringFunctions.h" #include "velox/functions/sparksql/ArrayMinMaxFunction.h" @@ -95,6 +96,13 @@ static void workAroundRegistrationMacro(const std::string& prefix) { VELOX_REGISTER_VECTOR_FUNCTION(udf_array_contains, prefix + "array_contains"); VELOX_REGISTER_VECTOR_FUNCTION( udf_array_intersect, prefix + "array_intersect"); + VELOX_REGISTER_VECTOR_FUNCTION(udf_array_distinct, prefix + "array_distinct"); + VELOX_REGISTER_VECTOR_FUNCTION(udf_array_except, prefix + "array_except"); + VELOX_REGISTER_VECTOR_FUNCTION(udf_array_position, prefix + "array_position"); + VELOX_REGISTER_VECTOR_FUNCTION(udf_map_entries, prefix + "map_entries"); + VELOX_REGISTER_VECTOR_FUNCTION(udf_map_keys, prefix + "map_keys"); + VELOX_REGISTER_VECTOR_FUNCTION(udf_map_values, prefix + "map_values"); + // This is the semantics of spark.sql.ansi.enabled = false. registerElementAtFunction(prefix + "element_at", true); @@ -208,6 +216,7 @@ void registerFunctions(const std::string& prefix) { Varchar, Varchar, Varchar>({prefix + "str_to_map"}); + VELOX_REGISTER_VECTOR_FUNCTION(udf_reverse, prefix + "reverse"); registerFunction( {prefix + "left"}); @@ -229,11 +238,18 @@ void registerFunctions(const std::string& prefix) { {prefix + "sha1"}); registerFunction( {prefix + "sha2"}); + registerFunction({prefix + "crc32"}); exec::registerStatefulVectorFunction( prefix + "regexp_extract", re2ExtractSignatures(), makeRegexExtract); + exec::registerStatefulVectorFunction( + prefix + "regexp_extract_all", + re2ExtractAllSignatures(), + makeRe2ExtractAll); exec::registerStatefulVectorFunction( prefix + "rlike", re2SearchSignatures(), makeRLike); + exec::registerStatefulVectorFunction( + prefix + "like", likeSignatures(), makeLike); VELOX_REGISTER_VECTOR_FUNCTION(udf_regexp_split, prefix + "split"); exec::registerStatefulVectorFunction( diff --git a/velox/functions/sparksql/RegisterArithmetic.cpp b/velox/functions/sparksql/RegisterArithmetic.cpp index 50d516823cc2..3409c0d4c088 100644 --- a/velox/functions/sparksql/RegisterArithmetic.cpp +++ b/velox/functions/sparksql/RegisterArithmetic.cpp @@ -40,15 +40,27 @@ void registerArithmeticFunctions(const std::string& prefix) { registerUnaryNumeric({prefix + "unaryminus"}); // Math functions. registerUnaryNumeric({prefix + "abs"}); + registerFunction< + DecimalAbsFunction, + LongDecimal, + LongDecimal>({prefix + "abs"}); + registerFunction< + DecimalAbsFunction, + ShortDecimal, + ShortDecimal>({prefix + "abs"}); registerFunction({prefix + "acos"}); + registerFunction({prefix + "asin"}); registerFunction({prefix + "acosh"}); registerFunction({prefix + "asinh"}); + registerFunction({prefix + "atan"}); registerFunction({prefix + "atanh"}); registerFunction({prefix + "sec"}); registerFunction({prefix + "csc"}); registerFunction({prefix + "sinh"}); + registerFunction({prefix + "cos"}); registerFunction({prefix + "cosh"}); registerFunction({prefix + "cot"}); + registerFunction({prefix + "degrees"}); registerFunction({prefix + "atan2"}); registerFunction({prefix + "log1p"}); registerFunction({prefix + "bin"});