summaryrefslogtreecommitdiffstats
path: root/yql/essentials/udfs
diff options
context:
space:
mode:
authorpanikku <[email protected]>2025-06-10 10:02:54 +0300
committerpanikku <[email protected]>2025-06-10 10:36:35 +0300
commit45966dca2c7cab568298300ac96febfa18cc27c8 (patch)
treeaa8b73476325b35ade36d86e372420d5b80edc60 /yql/essentials/udfs
parent122b12bf7d3aaae96c42611e1e1003d04a4c6d7f (diff)
YQL-19819: Add udf/sha512
commit_hash:66268a673a500f22e3a4c728f5f24c4a821458ae
Diffstat (limited to 'yql/essentials/udfs')
-rw-r--r--yql/essentials/udfs/common/digest/digest_udf.cpp12
-rw-r--r--yql/essentials/udfs/common/digest/test/canondata/result.json10
-rw-r--r--yql/essentials/udfs/common/digest/test/canondata/test.test_Sha512VersionFail_2025.02_/extracted11
-rw-r--r--yql/essentials/udfs/common/digest/test/canondata/test.test_Sha512_2025.03_/results.txt45
-rw-r--r--yql/essentials/udfs/common/digest/test/cases/Sha512VersionFail_2025.02.cfg3
-rw-r--r--yql/essentials/udfs/common/digest/test/cases/Sha512VersionFail_2025.02.sql5
-rw-r--r--yql/essentials/udfs/common/digest/test/cases/Sha512_2025.03.cfg2
-rw-r--r--yql/essentials/udfs/common/digest/test/cases/Sha512_2025.03.sql5
-rw-r--r--yql/essentials/udfs/common/digest/ya.make2
9 files changed, 94 insertions, 1 deletions
diff --git a/yql/essentials/udfs/common/digest/digest_udf.cpp b/yql/essentials/udfs/common/digest/digest_udf.cpp
index fb473bafdeb..5f87d42bfd2 100644
--- a/yql/essentials/udfs/common/digest/digest_udf.cpp
+++ b/yql/essentials/udfs/common/digest/digest_udf.cpp
@@ -1,5 +1,6 @@
#include <yql/essentials/public/udf/udf_helpers.h>
#include <yql/essentials/public/udf/udf_value_builder.h>
+#include <yql/essentials/public/langver/yql_langver.h>
#include <util/digest/murmur.h>
#include <util/digest/city.h>
@@ -380,6 +381,16 @@ namespace {
return valueBuilder->NewString(TStringRef(reinterpret_cast<char*>(hash), sizeof(hash)));
}
+ SIMPLE_STRICT_UDF_OPTIONS(TSha512, char*(TAutoMap<char*>), builder.SetMinLangVer(NYql::MakeLangVersion(2025, 3));) {
+ const auto& inputRef = args[0].AsStringRef();
+ SHA512_CTX sha;
+ SHA512_Init(&sha);
+ SHA512_Update(&sha, inputRef.Data(), inputRef.Size());
+ unsigned char hash[SHA512_DIGEST_LENGTH];
+ SHA512_Final(hash, &sha);
+ return valueBuilder->NewString(TStringRef(reinterpret_cast<char*>(hash), sizeof(hash)));
+ }
+
SIMPLE_STRICT_UDF(TIntHash64, ui64(TAutoMap<ui64>)) {
Y_UNUSED(valueBuilder);
ui64 x = args[0].Get<ui64>();
@@ -460,6 +471,7 @@ namespace {
TSuperFastHash,
TSha1,
TSha256,
+ TSha512,
TIntHash64,
TXXH3,
TXXH3_128
diff --git a/yql/essentials/udfs/common/digest/test/canondata/result.json b/yql/essentials/udfs/common/digest/test/canondata/result.json
index 5056bb47cb7..1d1bc9539f7 100644
--- a/yql/essentials/udfs/common/digest/test/canondata/result.json
+++ b/yql/essentials/udfs/common/digest/test/canondata/result.json
@@ -8,5 +8,15 @@
{
"uri": "file://test.test_Init_/results.txt"
}
+ ],
+ "test.test[Sha512VersionFail_2025.02]": [
+ {
+ "uri": "file://test.test_Sha512VersionFail_2025.02_/extracted"
+ }
+ ],
+ "test.test[Sha512_2025.03]": [
+ {
+ "uri": "file://test.test_Sha512_2025.03_/results.txt"
+ }
]
}
diff --git a/yql/essentials/udfs/common/digest/test/canondata/test.test_Sha512VersionFail_2025.02_/extracted b/yql/essentials/udfs/common/digest/test/canondata/test.test_Sha512VersionFail_2025.02_/extracted
new file mode 100644
index 00000000000..adbb4f73e3f
--- /dev/null
+++ b/yql/essentials/udfs/common/digest/test/canondata/test.test_Sha512VersionFail_2025.02_/extracted
@@ -0,0 +1,11 @@
+<tmp_path>/program.sql:<main>: Error: Type annotation
+
+ <tmp_path>/program.sql:<main>:4:1: Error: At function: RemovePrefixMembers, At function: Unordered, At function: PersistableRepr, At function: OrderedSqlProject, At tuple, At function: SqlProjectItem, At lambda
+ SELECT
+ ^
+ <tmp_path>/program.sql:<main>:6:13: Error: At function: Apply, At function: Udf
+ Digest::Sha512(key) AS sha512
+ ^
+ <tmp_path>/program.sql:<main>:6:13: Error: UDF 'Digest.Sha512' is not available before version 2025.03
+ Digest::Sha512(key) AS sha512
+ ^ \ No newline at end of file
diff --git a/yql/essentials/udfs/common/digest/test/canondata/test.test_Sha512_2025.03_/results.txt b/yql/essentials/udfs/common/digest/test/canondata/test.test_Sha512_2025.03_/results.txt
new file mode 100644
index 00000000000..921ca3539cb
--- /dev/null
+++ b/yql/essentials/udfs/common/digest/test/canondata/test.test_Sha512_2025.03_/results.txt
@@ -0,0 +1,45 @@
+[
+ {
+ "Write" = [
+ {
+ "Type" = [
+ "ListType";
+ [
+ "StructType";
+ [
+ [
+ "sha512";
+ [
+ "DataType";
+ "String"
+ ]
+ ]
+ ]
+ ]
+ ];
+ "Data" = [
+ [
+ [
+ "Tf9Oo0DwqCPxXT9PAati6uDl2lecy4Ufjbnf6ExYsrN7iZA6dA4e4XLaeTpuedVg5ff5vQWKEqKAQz7W+kZRCg=="
+ ]
+ ];
+ [
+ [
+ "QLJEESZB3XjdT5O2yRkN1G4AmRlNWkQle3761u+f9Gg9oe2gJERIyzQ6poj10+/XMU2v5YCsC8vxFa7Kno3BFA=="
+ ]
+ ];
+ [
+ [
+ "O6+/CIgqLRATMJOhuEM/UFY7k8FKzQW3kCjrHRJ5kCckFFCYBlGZRQFCOmbCdq4mxDtzm8ZcThaxDDr2wgKuuw=="
+ ]
+ ];
+ [
+ [
+ "z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg=="
+ ]
+ ]
+ ]
+ }
+ ]
+ }
+] \ No newline at end of file
diff --git a/yql/essentials/udfs/common/digest/test/cases/Sha512VersionFail_2025.02.cfg b/yql/essentials/udfs/common/digest/test/cases/Sha512VersionFail_2025.02.cfg
new file mode 100644
index 00000000000..c47a076455d
--- /dev/null
+++ b/yql/essentials/udfs/common/digest/test/cases/Sha512VersionFail_2025.02.cfg
@@ -0,0 +1,3 @@
+xfail
+in plato.Input Basic.in
+langver 2025.02
diff --git a/yql/essentials/udfs/common/digest/test/cases/Sha512VersionFail_2025.02.sql b/yql/essentials/udfs/common/digest/test/cases/Sha512VersionFail_2025.02.sql
new file mode 100644
index 00000000000..43e80b4e83f
--- /dev/null
+++ b/yql/essentials/udfs/common/digest/test/cases/Sha512VersionFail_2025.02.sql
@@ -0,0 +1,5 @@
+/* syntax version 1 */
+SELECT
+ Digest::Sha512(key) AS sha512
+
+FROM Input;
diff --git a/yql/essentials/udfs/common/digest/test/cases/Sha512_2025.03.cfg b/yql/essentials/udfs/common/digest/test/cases/Sha512_2025.03.cfg
new file mode 100644
index 00000000000..3a5a47b1dfb
--- /dev/null
+++ b/yql/essentials/udfs/common/digest/test/cases/Sha512_2025.03.cfg
@@ -0,0 +1,2 @@
+in plato.Input Basic.in
+langver 2025.03
diff --git a/yql/essentials/udfs/common/digest/test/cases/Sha512_2025.03.sql b/yql/essentials/udfs/common/digest/test/cases/Sha512_2025.03.sql
new file mode 100644
index 00000000000..43e80b4e83f
--- /dev/null
+++ b/yql/essentials/udfs/common/digest/test/cases/Sha512_2025.03.sql
@@ -0,0 +1,5 @@
+/* syntax version 1 */
+SELECT
+ Digest::Sha512(key) AS sha512
+
+FROM Input;
diff --git a/yql/essentials/udfs/common/digest/ya.make b/yql/essentials/udfs/common/digest/ya.make
index aa9c164770d..565e77a3013 100644
--- a/yql/essentials/udfs/common/digest/ya.make
+++ b/yql/essentials/udfs/common/digest/ya.make
@@ -2,7 +2,7 @@ YQL_UDF_CONTRIB(digest_udf)
YQL_ABI_VERSION(
2
- 28
+ 43
0
)