diff options
| author | vvvv <[email protected]> | 2025-08-05 20:15:00 +0300 |
|---|---|---|
| committer | vvvv <[email protected]> | 2025-08-05 20:39:19 +0300 |
| commit | 4d576a194855d3d3725914b7330af3f6478e0e13 (patch) | |
| tree | ef481798b85b977c0a1d80b666a5dc23af8eedb3 /yql/essentials/sql/v1/builtin.cpp | |
| parent | da1999f1ebaafdac5c571ef4ec01f82368cc3a19 (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.cpp | 16 |
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) { |
