diff options
| author | vitya-smirnov <[email protected]> | 2026-07-15 19:09:58 +0300 |
|---|---|---|
| committer | vitya-smirnov <[email protected]> | 2026-07-15 19:35:20 +0300 |
| commit | 0527fcfdf47ed2baf07f27023af6552cfdbcfa9b (patch) | |
| tree | f1e770a1bf3abc52a4601563e2f00d4fd52762ac | |
| parent | f78985152c38431acc43c25a1612f874ef4fd98a (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.cpp | 13 | ||||
| -rw-r--r-- | yql/essentials/core/facade/yql_facade.h | 3 | ||||
| -rw-r--r-- | yql/essentials/tools/yql_facade_run/yql_facade_run.cpp | 5 | ||||
| -rw-r--r-- | yql/essentials/tools/yql_facade_run/yql_facade_run.h | 1 |
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; |
