summaryrefslogtreecommitdiffstats
path: root/yql/essentials/udfs
diff options
context:
space:
mode:
authorvvvv <[email protected]>2025-04-21 20:53:56 +0300
committervvvv <[email protected]>2025-04-21 21:26:59 +0300
commit108c1aa409626aa29ca728edafd01fbbd7a1b00e (patch)
treeb88c1e3b690a29b0ed4f505f05990d656d6373ec /yql/essentials/udfs
parent6b17ad8c52e16d0088291781e1b5a9e28d028b9b (diff)
YQL-19861 abi, udf resolvers, test, pass via yt gateways
commit_hash:6e3f5fac6a8598586987b52d749644d1ce1fccbe
Diffstat (limited to 'yql/essentials/udfs')
-rw-r--r--yql/essentials/udfs/common/python/bindings/py_test_engine.h2
-rw-r--r--yql/essentials/udfs/common/string/string_udf.cpp27
-rw-r--r--yql/essentials/udfs/common/string/test/canondata/result.json5
-rw-r--r--yql/essentials/udfs/common/string/test/canondata/test.test_Reverse_2025.02_/extracted11
-rw-r--r--yql/essentials/udfs/common/string/test/cases/Reverse_2025.02.cfg2
-rw-r--r--yql/essentials/udfs/common/string/test/cases/Reverse_2025.02.sql2
-rw-r--r--yql/essentials/udfs/common/string/ya.make3
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