aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkniv <kniv@yandex-team.ru>2022-03-18 02:27:57 +0300
committerkniv <kniv@yandex-team.ru>2022-03-18 02:27:57 +0300
commit7531a3b1a493b9cdc57a28f665cef2644c613473 (patch)
tree4e939756f3c9108d6bad98026b2bc4fc86e05d49
parent46c694c1d56b522b7510176d21b2ec89743ccc32 (diff)
downloadydb-7531a3b1a493b9cdc57a28f665cef2644c613473.tar.gz
YQL-11066: Preserve backward-compatibility and remove *AnyOf() UDFs
YQL-11066: Preserve backward-compatibility and remove *AnyOf() UDFs ref:cf16e8e4b6d2feb96ba5ca1e79c20ef308bafc89
-rw-r--r--ydb/library/yql/udfs/common/string/string_udf.cpp38
-rw-r--r--ydb/library/yql/udfs/common/unicode_base/lib/unicode_base_udf.h56
2 files changed, 17 insertions, 77 deletions
diff --git a/ydb/library/yql/udfs/common/string/string_udf.cpp b/ydb/library/yql/udfs/common/string/string_udf.cpp
index 17a335f5a3..ad657feb2f 100644
--- a/ydb/library/yql/udfs/common/string/string_udf.cpp
+++ b/ydb/library/yql/udfs/common/string/string_udf.cpp
@@ -192,13 +192,6 @@ namespace {
return args[0];
}
- SIMPLE_UDF(TRemoveAll, char*(TAutoMap<char*>, char*)) {
- if (TString result(args[0].AsStringRef()); SubstGlobal(result, args[1].AsStringRef(), ""))
- return valueBuilder->NewString(result);
- else
- return args[0];
- }
-
SIMPLE_UDF(TReplaceFirst, char*(TAutoMap<char*>, char*, char*)) {
std::string result(args[0].AsStringRef());
const std::string_view what(args[1].AsStringRef());
@@ -209,16 +202,6 @@ namespace {
return args[0];
}
- SIMPLE_UDF(TRemoveFirst, char*(TAutoMap<char*>, char*)) {
- std::string result(args[0].AsStringRef());
- const std::string_view what(args[1].AsStringRef());
- if (const auto index = result.find(what); index != std::string::npos) {
- result.erase(index, what.size());
- return valueBuilder->NewString(result);
- }
- return args[0];
- }
-
SIMPLE_UDF(TReplaceLast, char*(TAutoMap<char*>, char*, char*)) {
std::string result(args[0].AsStringRef());
const std::string_view what(args[1].AsStringRef());
@@ -229,17 +212,7 @@ namespace {
return args[0];
}
- SIMPLE_UDF(TRemoveLast, char*(TAutoMap<char*>, char*)) {
- std::string result(args[0].AsStringRef());
- const std::string_view what(args[1].AsStringRef());
- if (const auto index = result.rfind(what); index != std::string::npos) {
- result.erase(index, what.size());
- return valueBuilder->NewString(result);
- }
- return args[0];
- }
-
- SIMPLE_UDF(TRemoveAllAnyOf, char*(TAutoMap<char*>, char*)) {
+ SIMPLE_UDF(TRemoveAll, char*(TAutoMap<char*>, char*)) {
std::string input(args[0].AsStringRef());
const std::string_view remove(args[1].AsStringRef());
const std::unordered_set<char> chars(remove.cbegin(), remove.cend());
@@ -256,7 +229,7 @@ namespace {
return args[0];
}
- SIMPLE_UDF(TRemoveFirstAnyOf, char*(TAutoMap<char*>, char*)) {
+ SIMPLE_UDF(TRemoveFirst, char*(TAutoMap<char*>, char*)) {
std::string input(args[0].AsStringRef());
const std::string_view remove(args[1].AsStringRef());
std::unordered_set<char> chars(remove.cbegin(), remove.cend());
@@ -269,13 +242,13 @@ namespace {
return args[0];
}
- SIMPLE_UDF(TRemoveLastAnyOf, char*(TAutoMap<char*>, char*)) {
+ SIMPLE_UDF(TRemoveLast, char*(TAutoMap<char*>, char*)) {
std::string input(args[0].AsStringRef());
const std::string_view remove(args[1].AsStringRef());
std::unordered_set<char> chars(remove.cbegin(), remove.cend());
for (auto it = input.crbegin(); it != input.crend(); ++it) {
if (chars.contains(*it)) {
- input.erase(std::distance(it, input.crend()) - 1, 1);
+ input.erase(input.crend() - it - 1, 1);
return valueBuilder->NewString(input);
}
}
@@ -552,11 +525,8 @@ namespace {
TReplaceFirst,
TReplaceLast,
TRemoveAll,
- TRemoveAllAnyOf,
TRemoveFirst,
- TRemoveFirstAnyOf,
TRemoveLast,
- TRemoveLastAnyOf,
TContains,
TFind,
TReverseFind,
diff --git a/ydb/library/yql/udfs/common/unicode_base/lib/unicode_base_udf.h b/ydb/library/yql/udfs/common/unicode_base/lib/unicode_base_udf.h
index 7feeb84d57..1506456f50 100644
--- a/ydb/library/yql/udfs/common/unicode_base/lib/unicode_base_udf.h
+++ b/ydb/library/yql/udfs/common/unicode_base/lib/unicode_base_udf.h
@@ -272,13 +272,6 @@ namespace {
return args[0];
}
- SIMPLE_UDF(TRemoveAll, TUtf8(TAutoMap<TUtf8>, TUtf8)) {
- if (TString result(args[0].AsStringRef()); SubstGlobal(result, args[1].AsStringRef(), ""))
- return valueBuilder->NewString(result);
- else
- return args[0];
- }
-
SIMPLE_UDF(TReplaceFirst, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8)) {
std::string result(args[0].AsStringRef());
const std::string_view what(args[1].AsStringRef());
@@ -289,16 +282,6 @@ namespace {
return args[0];
}
- SIMPLE_UDF(TRemoveFirst, TUtf8(TAutoMap<TUtf8>, TUtf8)) {
- std::string result(args[0].AsStringRef());
- const std::string_view what(args[1].AsStringRef());
- if (const auto index = result.find(what); index != std::string::npos) {
- result.erase(index, what.size());
- return valueBuilder->NewString(result);
- }
- return args[0];
- }
-
SIMPLE_UDF(TReplaceLast, TUtf8(TAutoMap<TUtf8>, TUtf8, TUtf8)) {
std::string result(args[0].AsStringRef());
const std::string_view what(args[1].AsStringRef());
@@ -309,22 +292,12 @@ namespace {
return args[0];
}
- SIMPLE_UDF(TRemoveLast, TUtf8(TAutoMap<TUtf8>, TUtf8)) {
- std::string result(args[0].AsStringRef());
- const std::string_view what(args[1].AsStringRef());
- if (const auto index = result.rfind(what); index != std::string::npos) {
- result.erase(index, what.size());
- return valueBuilder->NewString(result);
- }
- return args[0];
- }
-
- SIMPLE_UDF(TRemoveAllAnyOf, TUtf8(TAutoMap<TUtf8>, TUtf8)) {
- TUtf16String input = UTF8ToWide(args[0].AsStringRef());
- const TUtf16String remove = UTF8ToWide(args[1].AsStringRef());
- const std::unordered_set<wchar16> chars(remove.cbegin(), remove.cend());
+ SIMPLE_UDF(TRemoveAll, TUtf8(TAutoMap<TUtf8>, TUtf8)) {
+ TUtf32String input = UTF8ToUTF32<true>(args[0].AsStringRef());
+ const TUtf32String remove = UTF8ToUTF32<true>(args[1].AsStringRef());
+ const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend());
size_t tpos = 0;
- for (const wchar16 c : input) {
+ for (const wchar32 c : input) {
if (!chars.contains(c)) {
input[tpos++] = c;
}
@@ -336,10 +309,10 @@ namespace {
return args[0];
}
- SIMPLE_UDF(TRemoveFirstAnyOf, TUtf8(TAutoMap<TUtf8>, TUtf8)) {
- TUtf16String input = UTF8ToWide(args[0].AsStringRef());
- const TUtf16String remove = UTF8ToWide(args[1].AsStringRef());
- const std::unordered_set<wchar16> chars(remove.cbegin(), remove.cend());
+ SIMPLE_UDF(TRemoveFirst, TUtf8(TAutoMap<TUtf8>, TUtf8)) {
+ TUtf32String input = UTF8ToUTF32<true>(args[0].AsStringRef());
+ const TUtf32String remove = UTF8ToUTF32<true>(args[1].AsStringRef());
+ const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend());
for (auto it = input.cbegin(); it != input.cend(); ++it) {
if (chars.contains(*it)) {
input.erase(it);
@@ -349,10 +322,10 @@ namespace {
return args[0];
}
- SIMPLE_UDF(TRemoveLastAnyOf, TUtf8(TAutoMap<TUtf8>, TUtf8)) {
- TUtf16String input = UTF8ToWide(args[0].AsStringRef());
- const TUtf16String remove = UTF8ToWide(args[1].AsStringRef());
- const std::unordered_set<wchar16> chars(remove.cbegin(), remove.cend());
+ SIMPLE_UDF(TRemoveLast, TUtf8(TAutoMap<TUtf8>, TUtf8)) {
+ TUtf32String input = UTF8ToUTF32<true>(args[0].AsStringRef());
+ const TUtf32String remove = UTF8ToUTF32<true>(args[1].AsStringRef());
+ const std::unordered_set<wchar32> chars(remove.cbegin(), remove.cend());
for (auto it = input.crbegin(); it != input.crend(); ++it) {
if (chars.contains(*it)) {
input.erase(input.crend() - it - 1, 1);
@@ -472,9 +445,6 @@ namespace {
TRemoveAll, \
TRemoveFirst, \
TRemoveLast, \
- TRemoveAllAnyOf, \
- TRemoveFirstAnyOf, \
- TRemoveLastAnyOf, \
TToCodePointList, \
TFromCodePointList, \
TReverse, \