summaryrefslogtreecommitdiffstats
path: root/yql/essentials/providers/common
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/providers/common
parent6b17ad8c52e16d0088291781e1b5a9e28d028b9b (diff)
YQL-19861 abi, udf resolvers, test, pass via yt gateways
commit_hash:6e3f5fac6a8598586987b52d749644d1ce1fccbe
Diffstat (limited to 'yql/essentials/providers/common')
-rw-r--r--yql/essentials/providers/common/proto/udf_resolver.proto3
-rw-r--r--yql/essentials/providers/common/udf_resolve/yql_outproc_udf_resolver.cpp4
-rw-r--r--yql/essentials/providers/common/udf_resolve/yql_simple_udf_resolver.cpp4
3 files changed, 10 insertions, 1 deletions
diff --git a/yql/essentials/providers/common/proto/udf_resolver.proto b/yql/essentials/providers/common/proto/udf_resolver.proto
index 8693e9de4e5..b827d38dbfe 100644
--- a/yql/essentials/providers/common/proto/udf_resolver.proto
+++ b/yql/essentials/providers/common/proto/udf_resolver.proto
@@ -5,6 +5,7 @@ message TFunction {
required string Name = 1;
required string TypeConfig = 2;
optional string UserType = 3;
+ optional uint32 LangVer = 4;
};
message TArgResult {
@@ -30,6 +31,8 @@ message TFunctionResult {
optional bool SupportsBlocks = 14;
optional bool IsStrict = 15;
repeated string Messages = 16;
+ optional uint32 MinLangVer = 17;
+ optional uint32 MaxLangVer = 18;
};
message TImport {
diff --git a/yql/essentials/providers/common/udf_resolve/yql_outproc_udf_resolver.cpp b/yql/essentials/providers/common/udf_resolve/yql_outproc_udf_resolver.cpp
index 9858c6ee256..e598b2d370f 100644
--- a/yql/essentials/providers/common/udf_resolve/yql_outproc_udf_resolver.cpp
+++ b/yql/essentials/providers/common/udf_resolve/yql_outproc_udf_resolver.cpp
@@ -218,6 +218,8 @@ public:
if (udf->UserType) {
udfRequest->SetUserType(WriteTypeToYson(udf->UserType));
}
+
+ udfRequest->SetLangVer(udf->LangVer);
}
TResolveResult response;
@@ -368,6 +370,8 @@ private:
}
udf->SupportsBlocks = udfRes.GetSupportsBlocks();
udf->IsStrict = udfRes.GetIsStrict();
+ udf->MinLangVer = udfRes.GetMinLangVer();
+ udf->MaxLangVer = udfRes.GetMaxLangVer();
for (const auto& m : udfRes.GetMessages()) {
udf->Messages.push_back(m);
}
diff --git a/yql/essentials/providers/common/udf_resolve/yql_simple_udf_resolver.cpp b/yql/essentials/providers/common/udf_resolve/yql_simple_udf_resolver.cpp
index 8b19fdc1d85..fc9304bd4fc 100644
--- a/yql/essentials/providers/common/udf_resolve/yql_simple_udf_resolver.cpp
+++ b/yql/essentials/providers/common/udf_resolve/yql_simple_udf_resolver.cpp
@@ -211,7 +211,7 @@ bool LoadFunctionsMetadata(const TVector<IUdfResolver::TFunction*>& functions,
logLevel);
TFunctionTypeInfo funcInfo;
- auto status = functionRegistry.FindFunctionTypeInfo(env, typeInfoHelper, nullptr,
+ auto status = functionRegistry.FindFunctionTypeInfo(udf.LangVer, env, typeInfoHelper, nullptr,
udf.Name, mkqlUserType, udf.TypeConfig, NUdf::IUdfModule::TFlags::TypesOnly, {}, secureParamsProvider.get(),
logProvider.Get(), &funcInfo);
if (!status.IsOk()) {
@@ -236,6 +236,8 @@ bool LoadFunctionsMetadata(const TVector<IUdfResolver::TFunction*>& functions,
udf.SupportsBlocks = funcInfo.SupportsBlocks;
udf.IsStrict = funcInfo.IsStrict;
+ udf.MinLangVer = funcInfo.MinLangVer;
+ udf.MaxLangVer = funcInfo.MaxLangVer;
} catch (const std::exception& e) {
auto issue = TIssue(udf.Pos, TStringBuilder()
<< "Internal error was found when udf metadata is loading for function: " << udf.Name