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/providers/common | |
parent | 6b17ad8c52e16d0088291781e1b5a9e28d028b9b (diff) |
YQL-19861 abi, udf resolvers, test, pass via yt gateways
commit_hash:6e3f5fac6a8598586987b52d749644d1ce1fccbe
Diffstat (limited to 'yql/essentials/providers/common')
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 |