diff options
author | ignatloskutov <ignatloskutov@yandex-team.com> | 2023-03-20 17:49:44 +0300 |
---|---|---|
committer | ignatloskutov <ignatloskutov@yandex-team.com> | 2023-03-20 17:49:44 +0300 |
commit | e0305489c73afe7196823399dc37f5d8031c0ca2 (patch) | |
tree | d062f717a2dc6e8f74a9f47ee1fd7779129f1d4a | |
parent | ef2805fc73eed81da2e02b0c8e45e67366a4ab62 (diff) | |
download | ydb-e0305489c73afe7196823399dc37f5d8031c0ca2.tar.gz |
YQL-15751: Add TMurMurHash2A{,32} to Digest
3 files changed, 24 insertions, 1 deletions
diff --git a/ydb/docs/en/core/yql/reference/yql-core/udf/list/digest.md b/ydb/docs/en/core/yql/reference/yql-core/udf/list/digest.md index f861fe8c7cf..e6c35803ca8 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/udf/list/digest.md +++ b/ydb/docs/en/core/yql/reference/yql-core/udf/list/digest.md @@ -8,6 +8,9 @@ A set of commonly used hash functions. * ```Digest::Fnv32(String{Flags::AutoMap}) -> Uint32``` * ```Digest::Fnv64(String{Flags::AutoMap}) -> Uint64``` * ```Digest::MurMurHash(String{Flags:AutoMap}) -> Uint64``` +* ```Digest::MurMurHash32(String{Flags:AutoMap}) -> Uint32``` +* ```Digest::MurMurHash2A(String{Flags:AutoMap}) -> Uint64``` +* ```Digest::MurMurHash2A32(String{Flags:AutoMap}) -> Uint32``` * ```Digest::CityHash(String{Flags:AutoMap}) -> Uint64``` * ```Digest::CityHash128(String{Flags:AutoMap}) -> Tuple<Uint64,Uint64>``` * ```Digest::NumericHash(Uint64{Flags:AutoMap}) -> Uint64``` diff --git a/ydb/docs/ru/core/yql/reference/yql-core/udf/list/digest.md b/ydb/docs/ru/core/yql/reference/yql-core/udf/list/digest.md index 8e9383addad..ea8398014cd 100644 --- a/ydb/docs/ru/core/yql/reference/yql-core/udf/list/digest.md +++ b/ydb/docs/ru/core/yql/reference/yql-core/udf/list/digest.md @@ -11,6 +11,9 @@ * ```Digest::Fnv32(String{Flags::AutoMap}) -> Uint32``` * ```Digest::Fnv64(String{Flags::AutoMap}) -> Uint64``` * ```Digest::MurMurHash(String{Flags:AutoMap}) -> Uint64``` +* ```Digest::MurMurHash32(String{Flags:AutoMap}) -> Uint32``` +* ```Digest::MurMurHash2A(String{Flags:AutoMap}) -> Uint64``` +* ```Digest::MurMurHash2A32(String{Flags:AutoMap}) -> Uint32``` * ```Digest::CityHash(String{Flags:AutoMap}) -> Uint64``` * ```Digest::CityHash128(String{Flags:AutoMap}) -> Tuple<Uint64,Uint64>``` @@ -111,4 +114,4 @@ select Digest::FarmHashFingerprint128("Who set this ancient quarrel new abroach? XXH3 - некриптографическая хеш-функция из семейста xxxHash. XXH3_128 генерит 128 битный хеш, результат представлен как пара из двух uint64 чисел <low, high> ```sql select Digest::XXH3_128("Who set this ancient quarrel new abroach?"); -- (17117571879768798812, 14282600258804776266) -```
\ No newline at end of file +``` diff --git a/ydb/library/yql/udfs/common/digest/digest_udf.cpp b/ydb/library/yql/udfs/common/digest/digest_udf.cpp index ce8c7e1d4e2..a8f494cf8ea 100644 --- a/ydb/library/yql/udfs/common/digest/digest_udf.cpp +++ b/ydb/library/yql/udfs/common/digest/digest_udf.cpp @@ -10,6 +10,7 @@ #include <library/cpp/digest/argonish/blake2b.h> #include <library/cpp/digest/crc32c/crc32c.h> #include <library/cpp/digest/md5/md5.h> +#include <library/cpp/digest/murmur/murmur.h> #include <library/cpp/digest/old_crc/crc.h> #include <library/cpp/digest/sfh/sfh.h> @@ -67,6 +68,20 @@ namespace { return TUnboxedValuePod(hash); } + SIMPLE_STRICT_UDF(TMurMurHash2A, ui64(TAutoMap<char*>)) { + Y_UNUSED(valueBuilder); + const auto& inputRef = args[0].AsStringRef(); + ui64 hash = TMurmurHash2A<ui64>{}.Update(inputRef.Data(), inputRef.Size()).Value(); + return TUnboxedValuePod(hash); + } + + SIMPLE_STRICT_UDF(TMurMurHash2A32, ui32(TAutoMap<char*>)) { + Y_UNUSED(valueBuilder); + const auto& inputRef = args[0].AsStringRef(); + ui32 hash = TMurmurHash2A<ui32>{}.Update(inputRef.Data(), inputRef.Size()).Value(); + return TUnboxedValuePod(hash); + } + SIMPLE_STRICT_UDF(TCityHash, ui64(TAutoMap<char*>)) { Y_UNUSED(valueBuilder); const auto& inputRef = args[0].AsStringRef(); @@ -360,6 +375,8 @@ namespace { TFnv64, TMurMurHash, TMurMurHash32, + TMurMurHash2A, + TMurMurHash2A32, TCityHash, TCityHash128, TNumericHash, |