diff --git a/src/function/function_collection.cpp b/src/function/function_collection.cpp index 9e11550c6a..313ee6ce66 100644 --- a/src/function/function_collection.cpp +++ b/src/function/function_collection.cpp @@ -21,7 +21,7 @@ #include "function/table/call_functions.h" #include "function/timestamp/vector_timestamp_functions.h" #include "function/union/vector_union_functions.h" -#include "function/utility/scalar_utility_functions.h" +#include "function/utility/vector_utility_functions.h" #include "function/uuid/vector_uuid_functions.h" #include "processor/operator/persistent/reader/csv/parallel_csv_reader.h" #include "processor/operator/persistent/reader/csv/serial_csv_reader.h" diff --git a/src/function/utility/CMakeLists.txt b/src/function/utility/CMakeLists.txt index b386d3884a..81fbd97989 100644 --- a/src/function/utility/CMakeLists.txt +++ b/src/function/utility/CMakeLists.txt @@ -1,6 +1,8 @@ add_library(kuzu_utility_function OBJECT - coalesce.cpp) + coalesce.cpp + md5.cpp + sha256.cpp) set(ALL_OBJECT_FILES ${ALL_OBJECT_FILES} $ diff --git a/src/function/utility/coalesce.cpp b/src/function/utility/coalesce.cpp index b4391e4fef..72b9f69281 100644 --- a/src/function/utility/coalesce.cpp +++ b/src/function/utility/coalesce.cpp @@ -1,7 +1,7 @@ #include "binder/expression/expression_util.h" #include "common/exception/binder.h" #include "function/scalar_function.h" -#include "function/utility/scalar_utility_functions.h" +#include "function/utility/vector_utility_functions.h" using namespace kuzu::common; diff --git a/src/include/function/hash/functions/md5_function.h b/src/function/utility/md5.cpp similarity index 52% rename from src/include/function/hash/functions/md5_function.h rename to src/function/utility/md5.cpp index c3e5645a05..574474e557 100644 --- a/src/include/function/hash/functions/md5_function.h +++ b/src/function/utility/md5.cpp @@ -1,7 +1,7 @@ -#pragma once - #include "common/md5.h" -#include "common/vector/value_vector.h" + +#include "function/hash/vector_hash_functions.h" +#include "function/scalar_function.h" using namespace kuzu::common; @@ -16,5 +16,13 @@ struct MD5Operator { } }; +function_set MD5Function::getFunctionSet() { + function_set functionSet; + functionSet.push_back(std::make_unique(name, + std::vector{LogicalTypeID::STRING}, LogicalTypeID::STRING, + ScalarFunction::UnaryStringExecFunction)); + return functionSet; +} + } // namespace function } // namespace kuzu diff --git a/src/include/function/hash/functions/sha256_function.h b/src/function/utility/sha256.cpp similarity index 54% rename from src/include/function/hash/functions/sha256_function.h rename to src/function/utility/sha256.cpp index c24dfe1583..30fd8e44ea 100644 --- a/src/include/function/hash/functions/sha256_function.h +++ b/src/function/utility/sha256.cpp @@ -1,7 +1,7 @@ -#pragma once - #include "common/sha256.h" -#include "common/vector/value_vector.h" + +#include "function/hash/vector_hash_functions.h" +#include "function/scalar_function.h" using namespace kuzu::common; @@ -17,5 +17,13 @@ struct SHA256Operator { } }; +function_set SHA256Function::getFunctionSet() { + function_set functionSet; + functionSet.push_back(std::make_unique(name, + std::vector{LogicalTypeID::STRING}, LogicalTypeID::STRING, + ScalarFunction::UnaryStringExecFunction)); + return functionSet; +} + } // namespace function } // namespace kuzu diff --git a/src/function/vector_hash_functions.cpp b/src/function/vector_hash_functions.cpp index d74027b1a2..ad71cc3c43 100644 --- a/src/function/vector_hash_functions.cpp +++ b/src/function/vector_hash_functions.cpp @@ -1,8 +1,6 @@ #include "function/hash/vector_hash_functions.h" #include "function/binary_function_executor.h" -#include "function/hash/functions/md5_function.h" -#include "function/hash/functions/sha256_function.h" #include "function/hash/hash_functions.h" #include "function/scalar_function.h" @@ -200,22 +198,6 @@ void VectorHashFunction::combineHash(ValueVector* left, ValueVector* right, Valu BinaryFunctionExecutor::execute(*left, *right, *result); } -function_set MD5Function::getFunctionSet() { - function_set functionSet; - functionSet.push_back(std::make_unique(name, - std::vector{LogicalTypeID::STRING}, LogicalTypeID::STRING, - ScalarFunction::UnaryStringExecFunction)); - return functionSet; -} - -function_set SHA256Function::getFunctionSet() { - function_set functionSet; - functionSet.push_back(std::make_unique(name, - std::vector{LogicalTypeID::STRING}, LogicalTypeID::STRING, - ScalarFunction::UnaryStringExecFunction)); - return functionSet; -} - static void HashExecFunc(const std::vector>& params, common::ValueVector& result, void* /*dataPtr*/ = nullptr) { KU_ASSERT(params.size() == 1); diff --git a/src/include/function/utility/scalar_utility_functions.h b/src/include/function/utility/vector_utility_functions.h similarity index 100% rename from src/include/function/utility/scalar_utility_functions.h rename to src/include/function/utility/vector_utility_functions.h diff --git a/test/test_files/function/hash/hash.test b/test/test_files/function/hash/hash.test index ff4f5908a7..4c8404eda0 100644 --- a/test/test_files/function/hash/hash.test +++ b/test/test_files/function/hash/hash.test @@ -47,3 +47,18 @@ -STATEMENT RETURN hash(list_creation(1,2,3,4,5,56,2)); ---- 1 5340394995802248375 + +-LOG MD5Example +-STATEMENT RETURN md5('kuzu') +---- 1 +caca2358cada60d679fc0310d440f8ca + +-LOG SHA256Example +-STATEMENT RETURN sha256('kuzu') +---- 1 +e129f5000a4b71ccc3a0e6353a86cc57989106e670793db98efa34b7527aefa5 + +-LOG Murmurhash64Example +-STATEMENT RETURN hash('kuzu') +---- 1 +-144620710730482887 diff --git a/test/test_files/function/utility/coalesce.test b/test/test_files/function/utility/coalesce.test index 57db6c6a3d..d318b0acbd 100644 --- a/test/test_files/function/utility/coalesce.test +++ b/test/test_files/function/utility/coalesce.test @@ -192,3 +192,11 @@ Binder exception: Expression t.c has data type STRING but expected INT32. Implic -STATEMENT MATCH (t:tbl) WHERE NOT ifnull(NULL, t.bool) RETURN t.id; ---- 1 2 + +-LOG Example +-STATEMENT RETURN coalesce(NULL, 'a', NULL); +---- 1 +a +-STATEMENT RETURN ifnull(NULL, 'a') +---- 1 +a