aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorepbugaev <epbugaev@yandex-team.com>2023-06-02 11:50:05 +0300
committerepbugaev <epbugaev@yandex-team.com>2023-06-02 11:50:05 +0300
commit4170d875a85af95c7ac004ecbd22029641fa8bb1 (patch)
treed40a430763343af82e721032ef41d9c06fe30ae3
parent08d91bb04ec2af62585ca20110a65332d9f53612 (diff)
downloadydb-4170d875a85af95c7ac004ecbd22029641fa8bb1.tar.gz
Block TLD udfs
BlockUDFs: GetTLD IsKnownTLD IsWellKnownTLD
-rw-r--r--ydb/library/yql/udfs/common/url_base/lib/url_base_udf.h28
1 files changed, 25 insertions, 3 deletions
diff --git a/ydb/library/yql/udfs/common/url_base/lib/url_base_udf.h b/ydb/library/yql/udfs/common/url_base/lib/url_base_udf.h
index c430452e6f0..b5311ec8d26 100644
--- a/ydb/library/yql/udfs/common/url_base/lib/url_base_udf.h
+++ b/ydb/library/yql/udfs/common/url_base/lib/url_base_udf.h
@@ -246,10 +246,18 @@ SIMPLE_UDF(TGetDomain, TOptional<char*>(TOptional<char*>, ui8)) {
return TUnboxedValue();
}
-SIMPLE_UDF(TGetTLD, char*(TAutoMap<char*>)) {
+BEGIN_SIMPLE_ARROW_UDF(TGetTLD, char*(TAutoMap<char*>)) {
const TStringBuf url(args[0].AsStringRef());
return valueBuilder->NewString(GetZone(GetOnlyHost(url)));
}
+struct TGetTLDKernelExec : public TUnaryKernelExec<TGetTLDKernelExec> {
+ template <typename TSink>
+ static void Process(TBlockItem arg, const TSink& sink) {
+ const TStringBuf url(arg.AsStringRef());
+ return sink(TBlockItem(GetZone(GetOnlyHost(url))));
+ }
+};
+END_SIMPLE_ARROW_UDF(TGetTLD, TGetTLDKernelExec::Do);
SIMPLE_UDF(TGetDomainLevel, ui64(TAutoMap<char*>)) {
Y_UNUSED(valueBuilder);
@@ -381,15 +389,29 @@ struct TDecodeKernelExec : public TUnaryKernelExec<TDecodeKernelExec> {
};
END_SIMPLE_ARROW_UDF(TDecode, TDecodeKernelExec::Do);
-SIMPLE_UDF(TIsKnownTLD, bool(TAutoMap<char*>)) {
+BEGIN_SIMPLE_ARROW_UDF(TIsKnownTLD, bool(TAutoMap<char*>)) {
Y_UNUSED(valueBuilder);
return TUnboxedValuePod(IsTld(args[0].AsStringRef()));
}
+struct TIsKnownTLDKernelExec : public TUnaryKernelExec<TIsKnownTLDKernelExec> {
+ template <typename TSink>
+ static void Process(TBlockItem arg, const TSink& sink) {
+ sink(TBlockItem(static_cast<ui8>(IsTld(arg.AsStringRef()))));
+ }
+};
+END_SIMPLE_ARROW_UDF(TIsKnownTLD, TIsKnownTLDKernelExec::Do);
-SIMPLE_UDF(TIsWellKnownTLD, bool(TAutoMap<char*>)) {
+BEGIN_SIMPLE_ARROW_UDF(TIsWellKnownTLD, bool(TAutoMap<char*>)) {
Y_UNUSED(valueBuilder);
return TUnboxedValuePod(IsVeryGoodTld(args[0].AsStringRef()));
}
+struct TIsWellKnownTLDKernelExec : public TUnaryKernelExec<TIsWellKnownTLDKernelExec> {
+ template <typename TSink>
+ static void Process(TBlockItem arg, const TSink& sink) {
+ sink(TBlockItem(static_cast<ui8>(IsVeryGoodTld(arg.AsStringRef()))));
+ }
+};
+END_SIMPLE_ARROW_UDF(TIsWellKnownTLD, TIsWellKnownTLDKernelExec::Do);
SIMPLE_UDF(THostNameToPunycode, TOptional<char*>(TAutoMap<char*>)) try {
const TUtf16String& input = UTF8ToWide(args[0].AsStringRef());