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/minikql/computation | |
parent | 6b17ad8c52e16d0088291781e1b5a9e28d028b9b (diff) |
YQL-19861 abi, udf resolvers, test, pass via yt gateways
commit_hash:6e3f5fac6a8598586987b52d749644d1ce1fccbe
Diffstat (limited to 'yql/essentials/minikql/computation')
5 files changed, 41 insertions, 24 deletions
diff --git a/yql/essentials/minikql/computation/mkql_computation_node.h b/yql/essentials/minikql/computation/mkql_computation_node.h index 7238f1ed418..b1004629394 100644 --- a/yql/essentials/minikql/computation/mkql_computation_node.h +++ b/yql/essentials/minikql/computation/mkql_computation_node.h @@ -11,6 +11,7 @@ #include <yql/essentials/minikql/mkql_stats_registry.h> #include <yql/essentials/minikql/mkql_terminator.h> +#include <yql/essentials/public/langver/yql_langver.h> #include <yql/essentials/public/udf/udf_value.h> #include <yql/essentials/public/udf/udf_validate.h> #include <yql/essentials/public/udf/udf_value_builder.h> @@ -46,7 +47,7 @@ struct TComputationOpts { struct TComputationOptsFull: public TComputationOpts { TComputationOptsFull(IStatsRegistry* stats, TAllocState& allocState, const TTypeEnvironment& typeEnv, IRandomProvider& randomProvider, ITimeProvider& timeProvider, NUdf::EValidatePolicy validatePolicy, const NUdf::ISecureParamsProvider* secureParamsProvider, - NUdf::ICountersProvider* countersProvider, const NUdf::ILogProvider* logProvider) + NUdf::ICountersProvider* countersProvider, const NUdf::ILogProvider* logProvider, NYql::TLangVersion langver) : TComputationOpts(stats) , AllocState(allocState) , TypeEnv(typeEnv) @@ -56,6 +57,7 @@ struct TComputationOptsFull: public TComputationOpts { , SecureParamsProvider(secureParamsProvider) , CountersProvider(countersProvider) , LogProvider(logProvider) + , LangVer(langver) {} TAllocState& AllocState; @@ -66,6 +68,7 @@ struct TComputationOptsFull: public TComputationOpts { const NUdf::ISecureParamsProvider *const SecureParamsProvider; NUdf::ICountersProvider *const CountersProvider; const NUdf::ILogProvider* const LogProvider; + const NYql::TLangVersion LangVer; }; struct TWideFieldsInitInfo { @@ -121,6 +124,7 @@ struct TComputationContext : public TComputationContextLLVM { NUdf::ICountersProvider *const CountersProvider; const NUdf::ISecureParamsProvider *const SecureParamsProvider; const NUdf::ILogProvider* LogProvider; + NYql::TLangVersion LangVer = NYql::UnknownLangVersion; TComputationContext(const THolderFactory& holderFactory, const NUdf::IValueBuilder* builder, @@ -280,6 +284,7 @@ struct TComputationNodeFactoryContext { NUdf::ICountersProvider* CountersProvider; const NUdf::ISecureParamsProvider* SecureParamsProvider; const NUdf::ILogProvider* LogProvider; + NYql::TLangVersion LangVer; const TNodeFactory& NodeFactory; const THolderFactory& HolderFactory; const NUdf::IValueBuilder *const Builder; @@ -291,23 +296,24 @@ struct TComputationNodeFactoryContext { const TNodePushBack NodePushBack; TComputationNodeFactoryContext( - const TNodeLocator& nodeLocator, - const IFunctionRegistry& functionRegistry, - const TTypeEnvironment& env, - NUdf::ITypeInfoHelper::TPtr typeInfoHelper, - NUdf::ICountersProvider* countersProvider, - const NUdf::ISecureParamsProvider* secureParamsProvider, - const NUdf::ILogProvider* logProvider, - const TNodeFactory& nodeFactory, - const THolderFactory& holderFactory, - const NUdf::IValueBuilder* builder, - NUdf::EValidateMode validateMode, - NUdf::EValidatePolicy validatePolicy, - EGraphPerProcess graphPerProcess, - TComputationMutables& mutables, - TComputationNodeOnNodeMap& elementsCache, - TNodePushBack&& nodePushBack - ) + const TNodeLocator& nodeLocator, + const IFunctionRegistry& functionRegistry, + const TTypeEnvironment& env, + NUdf::ITypeInfoHelper::TPtr typeInfoHelper, + NUdf::ICountersProvider* countersProvider, + const NUdf::ISecureParamsProvider* secureParamsProvider, + const NUdf::ILogProvider* logProvider, + NYql::TLangVersion langver, + const TNodeFactory& nodeFactory, + const THolderFactory& holderFactory, + const NUdf::IValueBuilder* builder, + NUdf::EValidateMode validateMode, + NUdf::EValidatePolicy validatePolicy, + EGraphPerProcess graphPerProcess, + TComputationMutables& mutables, + TComputationNodeOnNodeMap& elementsCache, + TNodePushBack&& nodePushBack + ) : NodeLocator(nodeLocator) , FunctionRegistry(functionRegistry) , Env(env) @@ -315,6 +321,7 @@ struct TComputationNodeFactoryContext { , CountersProvider(countersProvider) , SecureParamsProvider(secureParamsProvider) , LogProvider(logProvider) + , LangVer(langver) , NodeFactory(nodeFactory) , HolderFactory(holderFactory) , Builder(builder) @@ -350,7 +357,8 @@ struct TComputationPatternOpts { IStatsRegistry* stats = nullptr, NUdf::ICountersProvider* countersProvider = nullptr, const NUdf::ISecureParamsProvider* secureParamsProvider = nullptr, - const NUdf::ILogProvider* logProvider = nullptr) + const NUdf::ILogProvider* logProvider = nullptr, + NYql::TLangVersion langver = NYql::UnknownLangVersion) : AllocState(allocState) , Env(env) , Factory(factory) @@ -363,6 +371,7 @@ struct TComputationPatternOpts { , CountersProvider(countersProvider) , SecureParamsProvider(secureParamsProvider) , LogProvider(logProvider) + , LangVer(langver) {} void SetOptions(TComputationNodeFactory factory, const IFunctionRegistry* functionRegistry, @@ -370,7 +379,7 @@ struct TComputationPatternOpts { const TString& optLLVM, EGraphPerProcess graphPerProcess, IStatsRegistry* stats = nullptr, NUdf::ICountersProvider* counters = nullptr, const NUdf::ISecureParamsProvider* secureParamsProvider = nullptr, - const NUdf::ILogProvider* logProvider = nullptr) { + const NUdf::ILogProvider* logProvider = nullptr, NYql::TLangVersion langver = NYql::UnknownLangVersion) { Factory = factory; FunctionRegistry = functionRegistry; ValidateMode = validateMode; @@ -381,6 +390,7 @@ struct TComputationPatternOpts { CountersProvider = counters; SecureParamsProvider = secureParamsProvider; LogProvider = logProvider; + LangVer = langver; } void SetPatternEnv(std::shared_ptr<TPatternCacheEntry> cacheEnv) { @@ -401,10 +411,11 @@ struct TComputationPatternOpts { NUdf::ICountersProvider* CountersProvider = nullptr; const NUdf::ISecureParamsProvider* SecureParamsProvider = nullptr; const NUdf::ILogProvider* LogProvider = nullptr; + NYql::TLangVersion LangVer = NYql::UnknownLangVersion; TComputationOptsFull ToComputationOptions(IRandomProvider& randomProvider, ITimeProvider& timeProvider, TAllocState* allocStatePtr = nullptr) const { return TComputationOptsFull(Stats, allocStatePtr ? *allocStatePtr : AllocState, Env, randomProvider, timeProvider, - ValidatePolicy, SecureParamsProvider, CountersProvider, LogProvider); + ValidatePolicy, SecureParamsProvider, CountersProvider, LogProvider, LangVer); } }; diff --git a/yql/essentials/minikql/computation/mkql_computation_node_graph.cpp b/yql/essentials/minikql/computation/mkql_computation_node_graph.cpp index 9f2e182acc8..c2c26a2cd79 100644 --- a/yql/essentials/minikql/computation/mkql_computation_node_graph.cpp +++ b/yql/essentials/minikql/computation/mkql_computation_node_graph.cpp @@ -239,6 +239,7 @@ public: , CountersProvider(opts.CountersProvider) , SecureParamsProvider(opts.SecureParamsProvider) , LogProvider(opts.LogProvider) + , LangVer(opts.LangVer) , Factory(opts.Factory) , FunctionRegistry(*opts.FunctionRegistry) , ValidateMode(opts.ValidateMode) @@ -465,6 +466,7 @@ private: CountersProvider, SecureParamsProvider, LogProvider, + LangVer, *NodeFactory, *PatternNodes->HolderFactory, PatternNodes->ValueBuilder.Get(), @@ -562,6 +564,7 @@ private: NUdf::ICountersProvider* CountersProvider; const NUdf::ISecureParamsProvider* SecureParamsProvider; const NUdf::ILogProvider* LogProvider; + const NYql::TLangVersion LangVer; const TComputationNodeFactory Factory; const IFunctionRegistry& FunctionRegistry; TIntrusivePtr<TMemoryUsageInfo> MemInfo; diff --git a/yql/essentials/minikql/computation/mkql_validate_ut.cpp b/yql/essentials/minikql/computation/mkql_validate_ut.cpp index 3a1d0588ff6..b4e4d50670a 100644 --- a/yql/essentials/minikql/computation/mkql_validate_ut.cpp +++ b/yql/essentials/minikql/computation/mkql_validate_ut.cpp @@ -683,7 +683,8 @@ Y_UNIT_TEST_SUITE(TMiniKQLValidateTest) { TFunctionTypeInfo funcInfo; TType* userType = nullptr; TStringBuf typeConfig; - TStatus status = functionRegistry->FindFunctionTypeInfo(env, typeInfoHelper, nullptr, udfFuncName, userType, typeConfig, flags, {}, nullptr, nullptr, &funcInfo); + TStatus status = functionRegistry->FindFunctionTypeInfo(NYql::UnknownLangVersion, env, typeInfoHelper, + nullptr, udfFuncName, userType, typeConfig, flags, {}, nullptr, nullptr, &funcInfo); MKQL_ENSURE(status.IsOk(), status.GetError()); auto type = funcInfo.FunctionType->GetReturnType(); fullValidateFunc(value, builder, type); @@ -733,7 +734,8 @@ Y_UNIT_TEST_SUITE(TMiniKQLValidateTest) { TType* userType = nullptr; TStringBuf typeConfig; NUdf::ITypeInfoHelper::TPtr typeInfoHelper(new TTypeInfoHelper); - TStatus status = functionRegistry.FindFunctionTypeInfo(pgmBuilder.GetTypeEnvironment(), typeInfoHelper, nullptr, + TStatus status = functionRegistry.FindFunctionTypeInfo(NYql::UnknownLangVersion, + pgmBuilder.GetTypeEnvironment(), typeInfoHelper, nullptr, udfFuncName, userType, typeConfig, flags, {}, nullptr, nullptr, &funcInfo); MKQL_ENSURE(status.IsOk(), status.GetError()); auto callable = pgmBuilder.Udf(udfFuncName); diff --git a/yql/essentials/minikql/computation/mkql_value_builder_ut.cpp b/yql/essentials/minikql/computation/mkql_value_builder_ut.cpp index 4d1e90a950e..127c55bc9b2 100644 --- a/yql/essentials/minikql/computation/mkql_value_builder_ut.cpp +++ b/yql/essentials/minikql/computation/mkql_value_builder_ut.cpp @@ -44,7 +44,7 @@ public: , HolderFactory(Alloc.Ref(), MemInfo, FunctionRegistry.Get()) , Builder(HolderFactory, NUdf::EValidatePolicy::Exception) , TypeInfoHelper(new TTypeInfoHelper()) - , FunctionTypeInfoBuilder(Env, TypeInfoHelper, "", nullptr, {}) + , FunctionTypeInfoBuilder(NYql::UnknownLangVersion, Env, TypeInfoHelper, "", nullptr, {}) { BoolOid = NYql::NPg::LookupType("bool").TypeId; } diff --git a/yql/essentials/minikql/computation/ya.make.inc b/yql/essentials/minikql/computation/ya.make.inc index 14f51bfceed..5f7cdd929bd 100644 --- a/yql/essentials/minikql/computation/ya.make.inc +++ b/yql/essentials/minikql/computation/ya.make.inc @@ -22,6 +22,7 @@ PEERDIR( yql/essentials/minikql/arrow yql/essentials/minikql/computation yql/essentials/parser/pg_wrapper/interface + yql/essentials/public/langver yql/essentials/public/udf yql/essentials/public/udf/arrow yql/essentials/utils |