summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvitya-smirnov <[email protected]>2026-07-15 19:09:58 +0300
committervitya-smirnov <[email protected]>2026-07-15 19:35:20 +0300
commit0527fcfdf47ed2baf07f27023af6552cfdbcfa9b (patch)
treef1e770a1bf3abc52a4601563e2f00d4fd52762ac
parentf78985152c38431acc43c25a1612f874ef4fd98a (diff)
YQL-21401: Introduce AutoUseYqlLibs
#### Introduce AutoUseYqlLibs flag to automatically treat yql_libs files as libraries ✎ - Added a new flag `AutoUseYqlLibs` that automatically marks files with the `yql_libs/` prefix as libraries without requiring explicit configuration - The feature is controlled via a new command-line option and can be enabled in various execution contexts - Removed manual library marking logic from task processing, centralizing the behavior in the facade layer - Updated internal logic to apply the library usage flag based on the new auto-detection mechanism <a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"><font size="2">Autodescription by Yandex Code Assistant</font></a> commit_hash:4168a7b05ff2755093b9de0e43a3995ef2fe0290
-rw-r--r--yql/essentials/core/facade/yql_facade.cpp13
-rw-r--r--yql/essentials/core/facade/yql_facade.h3
-rw-r--r--yql/essentials/tools/yql_facade_run/yql_facade_run.cpp5
-rw-r--r--yql/essentials/tools/yql_facade_run/yql_facade_run.h1
4 files changed, 21 insertions, 1 deletions
diff --git a/yql/essentials/core/facade/yql_facade.cpp b/yql/essentials/core/facade/yql_facade.cpp
index 93f64023586..60595a52c1a 100644
--- a/yql/essentials/core/facade/yql_facade.cpp
+++ b/yql/essentials/core/facade/yql_facade.cpp
@@ -214,6 +214,10 @@ void TProgramFactory::EnableRangeComputeFor() {
EnableRangeComputeFor_ = true;
}
+void TProgramFactory::EnableAutoUseYqlLibs() {
+ AutoUseYqlLibs_ = true;
+}
+
void TProgramFactory::SetIssueReportTarget(const TString& reportTarget) {
IssueReportTarget_ = reportTarget;
}
@@ -317,7 +321,7 @@ TProgramPtr TProgramFactory::Create(
return new TProgram(IssueReportTarget_, FunctionRegistry_, randomProvider, timeProvider, NextUniqueId_, DataProvidersInit_,
LangVer_, MaxLangVer_, VolatileResults_, UserDataTable_, Credentials_, moduleResolver, urlListerManager,
udfResolver, udfIndex, udfIndexPackageSet, FileStorage_, UrlPreprocessing_,
- GatewaysConfig_, filename, sourceCode, sessionId, Runner_, EnableRangeComputeFor_, ArrowResolver_, hiddenMode,
+ GatewaysConfig_, filename, sourceCode, sessionId, Runner_, EnableRangeComputeFor_, AutoUseYqlLibs_, ArrowResolver_, hiddenMode,
qContext, RemoteLayersProviders_);
}
@@ -349,6 +353,7 @@ TProgram::TProgram(
TString sessionId,
const TString& runner,
bool enableRangeComputeFor,
+ bool autoUseYqlLibs,
IArrowResolver::TPtr arrowResolver,
EHiddenMode hiddenMode,
const TQContext& qContext,
@@ -441,6 +446,12 @@ TProgram::TProgram(
}
}
+ for (auto& [key, block] : SavedUserDataTable_) {
+ if (autoUseYqlLibs && key.Alias().StartsWith(NYql::GetDefaultFilePrefix() + "yql_libs/")) {
+ block.Usage.Set(EUserDataBlockUsage::Library, /*val=*/true); // See YQL-21401
+ }
+ }
+
UserDataStorage_ = MakeIntrusive<TUserDataStorage>(fileStorage, SavedUserDataTable_, udfResolver, udfIndex);
if (auto modules = dynamic_cast<TModuleResolver*>(Modules_.get())) {
modules->AttachUserData(UserDataStorage_);
diff --git a/yql/essentials/core/facade/yql_facade.h b/yql/essentials/core/facade/yql_facade.h
index f4c0a4e1049..80635a8e9d4 100644
--- a/yql/essentials/core/facade/yql_facade.h
+++ b/yql/essentials/core/facade/yql_facade.h
@@ -64,6 +64,7 @@ public:
void SetFileStorage(TFileStoragePtr fileStorage);
void SetUrlPreprocessing(IUrlPreprocessing::TPtr urlPreprocessing);
void EnableRangeComputeFor();
+ void EnableAutoUseYqlLibs();
void SetArrowResolver(IArrowResolver::TPtr arrowResolver);
void SetUdfResolverLogfile(const TString& path);
void AddRemoteLayersProvider(const TString& alias, NLayers::IRemoteLayerProviderPtr provider);
@@ -104,6 +105,7 @@ private:
IUrlPreprocessing::TPtr UrlPreprocessing_;
TString Runner_;
bool EnableRangeComputeFor_ = false;
+ bool AutoUseYqlLibs_ = false;
IArrowResolver::TPtr ArrowResolver_;
TMaybe<TString> UdfResolverLogfile_;
THashMap<TString, NLayers::IRemoteLayerProviderPtr> RemoteLayersProviders_;
@@ -403,6 +405,7 @@ private:
TString sessionId,
const TString& runner,
bool enableRangeComputeFor,
+ bool autoUseYqlLibs,
IArrowResolver::TPtr arrowResolver,
EHiddenMode hiddenMode,
const TQContext& qContext,
diff --git a/yql/essentials/tools/yql_facade_run/yql_facade_run.cpp b/yql/essentials/tools/yql_facade_run/yql_facade_run.cpp
index 98b43d63c7c..6f55213a283 100644
--- a/yql/essentials/tools/yql_facade_run/yql_facade_run.cpp
+++ b/yql/essentials/tools/yql_facade_run/yql_facade_run.cpp
@@ -364,6 +364,7 @@ void TFacadeRunOptions::Parse(int argc, const char** argv) {
opts.AddLongOption("sql-flags", "SQL translator pragma flags").SplitHandler(&sqlFlags, ',');
opts.AddLongOption("syntax-version", "SQL syntax version").StoreResult(&SyntaxVersion).DefaultValue(1);
opts.AddLongOption("ansi-lexer", "Use ansi lexer").NoArgument().SetFlag(&AnsiLexer);
+ opts.AddLongOption("auto-use-yql-libs", "Implicitly mark yql_libs/* files as libraries").NoArgument().SetFlag(&AutoUseYqlLibs);
opts.AddLongOption("assume-ydb-on-slash", "Assume YDB provider if cluster name starts with '/'").NoArgument().SetFlag(&AssumeYdbOnClusterWithSlash);
opts.AddLongOption("with-final-issues", "Include some final messages (like statistic) in issues").NoArgument().SetFlag(&WithFinalIssues);
@@ -787,6 +788,10 @@ int TFacadeRunner::DoMain(int argc, const char** argv) {
factory.SetCredentials(RunOptions_.Credentials);
factory.EnableRangeComputeFor();
+ if (RunOptions_.AutoUseYqlLibs) {
+ factory.EnableAutoUseYqlLibs();
+ }
+
if (!urlListers.empty()) {
factory.SetUrlListerManager(MakeUrlListerManager(urlListers));
}
diff --git a/yql/essentials/tools/yql_facade_run/yql_facade_run.h b/yql/essentials/tools/yql_facade_run/yql_facade_run.h
index aea93600061..a960ffb3764 100644
--- a/yql/essentials/tools/yql_facade_run/yql_facade_run.h
+++ b/yql/essentials/tools/yql_facade_run/yql_facade_run.h
@@ -91,6 +91,7 @@ public:
bool AnsiLexer = false;
bool TestAntlr4 = false;
bool AssumeYdbOnClusterWithSlash = false;
+ bool AutoUseYqlLibs = false;
bool TestSqlFormat = false;
bool TestLexers = false;
bool TestComplete = false;