diff options
| author | panikku <[email protected]> | 2025-06-10 10:02:54 +0300 |
|---|---|---|
| committer | panikku <[email protected]> | 2025-06-10 10:36:35 +0300 |
| commit | 45966dca2c7cab568298300ac96febfa18cc27c8 (patch) | |
| tree | aa8b73476325b35ade36d86e372420d5b80edc60 /yql/essentials/udfs | |
| parent | 122b12bf7d3aaae96c42611e1e1003d04a4c6d7f (diff) | |
YQL-19819: Add udf/sha512
commit_hash:66268a673a500f22e3a4c728f5f24c4a821458ae
Diffstat (limited to 'yql/essentials/udfs')
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 ) |
