aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorignatloskutov <ignatloskutov@yandex-team.com>2023-03-20 17:49:44 +0300
committerignatloskutov <ignatloskutov@yandex-team.com>2023-03-20 17:49:44 +0300
commite0305489c73afe7196823399dc37f5d8031c0ca2 (patch)
treed062f717a2dc6e8f74a9f47ee1fd7779129f1d4a
parentef2805fc73eed81da2e02b0c8e45e67366a4ab62 (diff)
downloadydb-e0305489c73afe7196823399dc37f5d8031c0ca2.tar.gz
YQL-15751: Add TMurMurHash2A{,32} to Digest
-rw-r--r--ydb/docs/en/core/yql/reference/yql-core/udf/list/digest.md3
-rw-r--r--ydb/docs/ru/core/yql/reference/yql-core/udf/list/digest.md5
-rw-r--r--ydb/library/yql/udfs/common/digest/digest_udf.cpp17
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,