summaryrefslogtreecommitdiffstats
path: root/yql/essentials/ast/yql_expr.cpp
diff options
context:
space:
mode:
authorpanikku <[email protected]>2025-07-18 21:25:55 +0300
committerpanikku <[email protected]>2025-07-18 21:43:51 +0300
commit0280a2fd6d6901bce8f7296f658d9cd63c1c4b31 (patch)
tree5cf6f12219ff1071be2dc673053effaea65172ee /yql/essentials/ast/yql_expr.cpp
parentf92ddb3a9ca8a03426a871f7fa1de63a7a128ebd (diff)
YQL-19448: Change url lister manager
-(Queue+ListUrl) +RecursiveListerUrl Create recursive func commit_hash:81c84c7bdd6f8408b4cee15a8b7f10a1acd573a4
Diffstat (limited to 'yql/essentials/ast/yql_expr.cpp')
-rw-r--r--yql/essentials/ast/yql_expr.cpp63
1 files changed, 16 insertions, 47 deletions
diff --git a/yql/essentials/ast/yql_expr.cpp b/yql/essentials/ast/yql_expr.cpp
index c5fa94ca732..4c596895077 100644
--- a/yql/essentials/ast/yql_expr.cpp
+++ b/yql/essentials/ast/yql_expr.cpp
@@ -1324,56 +1324,25 @@ namespace {
packageModuleName << Sep << part;
}
- auto queue = TVector<std::pair<TString, TString>> {
- {packageModuleName, url}
- };
-
- while (queue) {
- auto [prefix, url] = queue.back();
- queue.pop_back();
-
- TVector<TUrlListEntry> urlListEntries;
- try {
- urlListEntries = ctx.UrlListerManager->ListUrl(url, token);
- } catch (const std::exception& e) {
- ctx.AddError(*nameNode,
- TStringBuilder()
- << "UrlListerManager: failed to list URL \"" << url
- << "\", details: " << e.what()
- );
+ auto entries = ctx.UrlListerManager->ListUrlRecursive(url, token, TString(Sep), 0);
- return false;
+ for (auto& entry : entries) {
+ if (ctx.OverrideLibraries.contains(
+ TStringBuilder() << packageModuleName << entry.Name))
+ {
+ continue;
}
- for (auto& urlListEntry: urlListEntries) {
- switch (urlListEntry.Type) {
- case EUrlListEntryType::FILE: {
- auto moduleName = TStringBuilder()
- << prefix << Sep << urlListEntry.Name;
-
- if (ctx.OverrideLibraries.contains(moduleName)) {
- continue;
- }
-
- if (!ctx.ModuleResolver->AddFromUrl(
- moduleName, urlListEntry.Url, token, ctx.Expr,
- ctx.SyntaxVersion, 0, nameNode->GetPosition()
- )) {
- return false;
- }
-
- break;
- }
-
- case EUrlListEntryType::DIRECTORY: {
- queue.push_back({
- TStringBuilder() << prefix << Sep << urlListEntry.Name,
- urlListEntry.Url
- });
-
- break;
- }
- }
+ if (!ctx.ModuleResolver->AddFromUrl(
+ TStringBuilder() << packageModuleName << entry.Name,
+ entry.Url,
+ token,
+ ctx.Expr,
+ ctx.SyntaxVersion,
+ 0,
+ nameNode->GetPosition()))
+ {
+ return false;
}
}