summaryrefslogtreecommitdiffstats
path: root/yql/essentials/minikql/computation
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/minikql/computation
parent6b17ad8c52e16d0088291781e1b5a9e28d028b9b (diff)
YQL-19861 abi, udf resolvers, test, pass via yt gateways
commit_hash:6e3f5fac6a8598586987b52d749644d1ce1fccbe
Diffstat (limited to 'yql/essentials/minikql/computation')
-rw-r--r--yql/essentials/minikql/computation/mkql_computation_node.h53
-rw-r--r--yql/essentials/minikql/computation/mkql_computation_node_graph.cpp3
-rw-r--r--yql/essentials/minikql/computation/mkql_validate_ut.cpp6
-rw-r--r--yql/essentials/minikql/computation/mkql_value_builder_ut.cpp2
-rw-r--r--yql/essentials/minikql/computation/ya.make.inc1
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