diff --git a/velox/functions/prestosql/Cardinality.h b/velox/functions/prestosql/Cardinality.h index d2dfc07851ae..28fde43cae53 100644 --- a/velox/functions/prestosql/Cardinality.h +++ b/velox/functions/prestosql/Cardinality.h @@ -23,11 +23,13 @@ template struct CardinalityFunction { VELOX_DEFINE_FUNCTION_TYPES(T); - void call(int64_t& out, const arg_type>& input) { + void call(int64_t& out, const arg_type>>& input) { out = input.size(); } - void call(int64_t& out, const arg_type>& input) { + void call( + int64_t& out, + const arg_type, Generic>>& input) { out = input.size(); } }; diff --git a/velox/functions/prestosql/registration/GeneralFunctionsRegistration.cpp b/velox/functions/prestosql/registration/GeneralFunctionsRegistration.cpp index a00fe1d5f32a..bb154865e672 100644 --- a/velox/functions/prestosql/registration/GeneralFunctionsRegistration.cpp +++ b/velox/functions/prestosql/registration/GeneralFunctionsRegistration.cpp @@ -102,9 +102,9 @@ void registerGeneralFunctions(const std::string& prefix) { registerAllGreatestLeastFunctions(prefix); - registerFunction>( + registerFunction>>( {prefix + "cardinality"}); - registerFunction>( + registerFunction, Generic>>( {prefix + "cardinality"}); registerFailFunction({prefix + "fail"}); diff --git a/velox/functions/prestosql/tests/HyperLogLogFunctionsTest.cpp b/velox/functions/prestosql/tests/HyperLogLogFunctionsTest.cpp index cf729881f585..a6062e3a30a3 100644 --- a/velox/functions/prestosql/tests/HyperLogLogFunctionsTest.cpp +++ b/velox/functions/prestosql/tests/HyperLogLogFunctionsTest.cpp @@ -57,8 +57,8 @@ TEST_F(HyperLogLogFunctionsTest, cardinalitySignatures) { auto signatures = getSignatureStrings("cardinality"); ASSERT_EQ(3, signatures.size()); - ASSERT_EQ(1, signatures.count("(map(any,any)) -> bigint")); - ASSERT_EQ(1, signatures.count("(array(any)) -> bigint")); + ASSERT_EQ(1, signatures.count("(map(__user_T1,__user_T2)) -> bigint")); + ASSERT_EQ(1, signatures.count("(array(__user_T1)) -> bigint")); ASSERT_EQ(1, signatures.count("(hyperloglog) -> bigint")); }