diff options
author | vvvv <[email protected]> | 2025-04-21 20:53:56 +0300 |
---|---|---|
committer | vvvv <[email protected]> | 2025-04-21 21:26:59 +0300 |
commit | 108c1aa409626aa29ca728edafd01fbbd7a1b00e (patch) | |
tree | b88c1e3b690a29b0ed4f505f05990d656d6373ec /yql/essentials/udfs | |
parent | 6b17ad8c52e16d0088291781e1b5a9e28d028b9b (diff) |
YQL-19861 abi, udf resolvers, test, pass via yt gateways
commit_hash:6e3f5fac6a8598586987b52d749644d1ce1fccbe
Diffstat (limited to 'yql/essentials/udfs')
7 files changed, 38 insertions, 14 deletions
diff --git a/yql/essentials/udfs/common/python/bindings/py_test_engine.h b/yql/essentials/udfs/common/python/bindings/py_test_engine.h index c86febf779d..ff0a61cbb8a 100644 --- a/yql/essentials/udfs/common/python/bindings/py_test_engine.h +++ b/yql/essentials/udfs/common/python/bindings/py_test_engine.h @@ -46,7 +46,7 @@ public: , Alloc_(__LOCATION__) , Env_(Alloc_) , TypeInfoHelper_(new TTypeInfoHelper) - , FunctionInfoBuilder_(Env_, TypeInfoHelper_, "", nullptr, {}) + , FunctionInfoBuilder_(NYql::UnknownLangVersion, Env_, TypeInfoHelper_, "", nullptr, {}) { HolderFactory_ = MakeHolder<THolderFactory>( Alloc_.Ref(), diff --git a/yql/essentials/udfs/common/string/string_udf.cpp b/yql/essentials/udfs/common/string/string_udf.cpp index 92a1fe6b5af..9d2920ec804 100644 --- a/yql/essentials/udfs/common/string/string_udf.cpp +++ b/yql/essentials/udfs/common/string/string_udf.cpp @@ -1,6 +1,7 @@ #include <yql/essentials/public/udf/udf_allocator.h> #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 <library/cpp/deprecated/split/split_iterator.h> #include <library/cpp/html/pcdata/pcdata.h> @@ -85,18 +86,20 @@ namespace { \ END_SIMPLE_ARROW_UDF(T##udfName, T##udfName##KernelExec::Do) -#define STROKA_UDF(udfName, function) \ - SIMPLE_STRICT_UDF(T##udfName, TOptional<char*>(TOptional<char*>)) { \ - EMPTY_RESULT_ON_EMPTY_ARG(0) \ - const TString input(args[0].AsStringRef()); \ - try { \ - TUtf16String wide = UTF8ToWide(input); \ - function(wide); \ - return valueBuilder->NewString(WideToUTF8(wide)); \ - } catch (yexception&) { \ - return TUnboxedValue(); \ - } \ +// NOTE: The functions below are marked as deprecated, so block implementation +// is not required for them +SIMPLE_STRICT_UDF_OPTIONS(TReverse, TOptional<char*>(TOptional<char*>), + builder.SetMaxLangVer(NYql::MakeLangVersion(2025, 1))) { + EMPTY_RESULT_ON_EMPTY_ARG(0) + const TString input(args[0].AsStringRef()); + try { + TUtf16String wide = UTF8ToWide(input); + ReverseInPlace(wide); + return valueBuilder->NewString(WideToUTF8(wide)); + } catch (yexception&) { + return TUnboxedValue(); } +} #define STROKA_CASE_UDF(udfName, function) \ SIMPLE_STRICT_UDF(T##udfName, TOptional<char*>(TOptional<char*>)) { \ @@ -876,7 +879,6 @@ namespace { STRING_UDF_MAP(STRING_UDF) STRING_UNSAFE_UDF_MAP(STRING_UNSAFE_UDF) - STROKA_UDF_MAP(STROKA_UDF) STROKA_CASE_UDF_MAP(STROKA_CASE_UDF) STROKA_ASCII_CASE_UDF_MAP(STROKA_ASCII_CASE_UDF) STROKA_FIND_UDF_MAP(STROKA_FIND_UDF) @@ -902,6 +904,7 @@ namespace { STRING_STREAM_NUM_FORMATTER_UDF_MAP(STRING_REGISTER_UDF) STRING_STREAM_TEXT_FORMATTER_UDF_MAP(STRING_REGISTER_UDF) STRING_STREAM_HRSZ_FORMATTER_UDF_MAP(STRING_REGISTER_UDF) + TReverse, TCollapseText, TReplaceAll, TReplaceFirst, diff --git a/yql/essentials/udfs/common/string/test/canondata/result.json b/yql/essentials/udfs/common/string/test/canondata/result.json index f9e3a670c2c..596f9a72180 100644 --- a/yql/essentials/udfs/common/string/test/canondata/result.json +++ b/yql/essentials/udfs/common/string/test/canondata/result.json @@ -89,6 +89,11 @@ "uri": "file://test.test_Replace_/results.txt" } ], + "test.test[Reverse_2025.02]": [ + { + "uri": "file://test.test_Reverse_2025.02_/extracted" + } + ], "test.test[StreamFormat]": [ { "uri": "file://test.test_StreamFormat_/results.txt" diff --git a/yql/essentials/udfs/common/string/test/canondata/test.test_Reverse_2025.02_/extracted b/yql/essentials/udfs/common/string/test/canondata/test.test_Reverse_2025.02_/extracted new file mode 100644 index 00000000000..2f258b4fc38 --- /dev/null +++ b/yql/essentials/udfs/common/string/test/canondata/test.test_Reverse_2025.02_/extracted @@ -0,0 +1,11 @@ +<tmp_path>/program.sql:<main>: Error: Type annotation + + <tmp_path>/program.sql:<main>:2:1: Error: At function: RemovePrefixMembers, At function: Unordered, At function: PersistableRepr, At function: OrderedSqlProject, At function: SqlProjectItem + select String::Reverse('ab') + ^ + <tmp_path>/program.sql:<main>:2:16: Error: At function: Apply, At function: Udf + select String::Reverse('ab') + ^ + <tmp_path>/program.sql:<main>:2:16: Error: UDF 'String.Reverse' is not available after version 2025.01 + select String::Reverse('ab') + ^
\ No newline at end of file diff --git a/yql/essentials/udfs/common/string/test/cases/Reverse_2025.02.cfg b/yql/essentials/udfs/common/string/test/cases/Reverse_2025.02.cfg new file mode 100644 index 00000000000..989226cf3d4 --- /dev/null +++ b/yql/essentials/udfs/common/string/test/cases/Reverse_2025.02.cfg @@ -0,0 +1,2 @@ +xfail +langver 2025.02 diff --git a/yql/essentials/udfs/common/string/test/cases/Reverse_2025.02.sql b/yql/essentials/udfs/common/string/test/cases/Reverse_2025.02.sql new file mode 100644 index 00000000000..3b388c36154 --- /dev/null +++ b/yql/essentials/udfs/common/string/test/cases/Reverse_2025.02.sql @@ -0,0 +1,2 @@ +select String::Reverse('ab') + diff --git a/yql/essentials/udfs/common/string/ya.make b/yql/essentials/udfs/common/string/ya.make index 280686fb467..bd83c78b8c1 100644 --- a/yql/essentials/udfs/common/string/ya.make +++ b/yql/essentials/udfs/common/string/ya.make @@ -2,7 +2,7 @@ YQL_UDF_CONTRIB(string_udf) YQL_ABI_VERSION( 2 - 37 + 43 0 ) @@ -11,6 +11,7 @@ YQL_UDF_CONTRIB(string_udf) ) PEERDIR( + yql/essentials/public/langver yql/essentials/public/udf/arrow library/cpp/deprecated/split library/cpp/html/pcdata |