summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/builtin.cpp
diff options
context:
space:
mode:
authorvvvv <[email protected]>2025-08-05 20:15:00 +0300
committervvvv <[email protected]>2025-08-05 20:39:19 +0300
commit4d576a194855d3d3725914b7330af3f6478e0e13 (patch)
treeef481798b85b977c0a1d80b666a5dc23af8eedb3 /yql/essentials/sql/v1/builtin.cpp
parentda1999f1ebaafdac5c571ef4ec01f82368cc3a19 (diff)
YQL-20247 Depends for Udf function
commit_hash:4ee9d9b9079b90e8eeb91accc41d6a3a30c3a18c
Diffstat (limited to 'yql/essentials/sql/v1/builtin.cpp')
-rw-r--r--yql/essentials/sql/v1/builtin.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/yql/essentials/sql/v1/builtin.cpp b/yql/essentials/sql/v1/builtin.cpp
index e31b0a1a4c4..995f31d7328 100644
--- a/yql/essentials/sql/v1/builtin.cpp
+++ b/yql/essentials/sql/v1/builtin.cpp
@@ -2287,7 +2287,7 @@ TVector<TNodePtr> BuildUdfArgs(const TContext& ctx, TPosition pos, const TVector
TNodePtr BuildSqlCall(TContext& ctx, TPosition pos, const TString& module, const TString& name, const TVector<TNodePtr>& args,
TNodePtr positionalArgs, TNodePtr namedArgs, TNodePtr customUserType, const TDeferredAtom& typeConfig, TNodePtr runConfig,
- TNodePtr options)
+ TNodePtr options, const TVector<TNodePtr>& depends)
{
const TString fullName = module + "." + name;
TNodePtr callable;
@@ -2319,24 +2319,30 @@ TNodePtr BuildSqlCall(TContext& ctx, TPosition pos, const TString& module, const
// optional arguments
if (customUserType) {
sqlCallArgs.push_back(customUserType);
- } else if (!typeConfig.Empty() || runConfig || options) {
+ } else if (!typeConfig.Empty() || runConfig || options || !depends.empty()) {
sqlCallArgs.push_back(new TCallNodeImpl(pos, "TupleType", {}));
}
if (!typeConfig.Empty()) {
sqlCallArgs.push_back(typeConfig.Build());
- } else if (runConfig || options) {
+ } else if (runConfig || options || !depends.empty()) {
sqlCallArgs.push_back(BuildQuotedAtom(pos, ""));
}
if (runConfig) {
sqlCallArgs.push_back(runConfig);
- } else if (options) {
+ } else if (options || !depends.empty()) {
sqlCallArgs.push_back(new TCallNodeImpl(pos, "Void", {}));
}
if (options) {
sqlCallArgs.push_back(options);
+ } else if (!depends.empty()) {
+ sqlCallArgs.push_back(BuildQuote(pos, BuildList(pos)));
+ }
+
+ for (const auto& d : depends) {
+ sqlCallArgs.push_back(new TCallNodeImpl(pos, "DependsOn", { d }));
}
return new TCallNodeImpl(pos, "SqlCall", sqlCallArgs);
@@ -3931,7 +3937,7 @@ TNodePtr BuildBuiltinFunc(TContext& ctx, TPosition pos, TString name, const TVec
TNodePtr typeConfig = MakeTypeConfig(pos, ns, usedArgs);
return BuildSqlCall(ctx, pos, nameSpace, name, usedArgs, positionalArgs, namedArgs, customUserType,
- TDeferredAtom(typeConfig, ctx), nullptr, nullptr);
+ TDeferredAtom(typeConfig, ctx), nullptr, nullptr, {});
}
void EnumerateBuiltins(const std::function<void(std::string_view name, std::string_view kind)>& callback) {