diff options
-rw-r--r-- | yql/essentials/core/facade/yql_facade.cpp | 17 | ||||
-rw-r--r-- | yql/essentials/core/facade/yql_facade.h | 10 |
2 files changed, 19 insertions, 8 deletions
diff --git a/yql/essentials/core/facade/yql_facade.cpp b/yql/essentials/core/facade/yql_facade.cpp index 4f0cf16b93..be39c97b57 100644 --- a/yql/essentials/core/facade/yql_facade.cpp +++ b/yql/essentials/core/facade/yql_facade.cpp @@ -206,10 +206,11 @@ void TProgramFactory::SetUrlListerManager(IUrlListerManagerPtr urlListerManager) TProgramPtr TProgramFactory::Create( const TFile& file, const TString& sessionId, - const TQContext& qContext) + const TQContext& qContext, + TMaybe<TString> gatewaysForMerge) { TString sourceCode = TFileInput(file).ReadAll(); - return Create(file.GetName(), sourceCode, sessionId, EHiddenMode::Disable, qContext); + return Create(file.GetName(), sourceCode, sessionId, EHiddenMode::Disable, qContext, gatewaysForMerge); } TProgramPtr TProgramFactory::Create( @@ -217,7 +218,8 @@ TProgramPtr TProgramFactory::Create( const TString& sourceCode, const TString& sessionId, EHiddenMode hiddenMode, - const TQContext& qContext) + const TQContext& qContext, + TMaybe<TString> gatewaysForMerge) { auto randomProvider = UseRepeatableRandomAndTimeProviders_ && !UseUnrepeatableRandom && hiddenMode == EHiddenMode::Disable ? CreateDeterministicRandomProvider(1) : CreateDefaultRandomProvider(); @@ -235,7 +237,7 @@ TProgramPtr TProgramFactory::Create( UserDataTable_, Credentials_, moduleResolver, urlListerManager, udfResolver, udfIndex, udfIndexPackageSet, FileStorage_, UrlPreprocessing_, GatewaysConfig_, filename, sourceCode, sessionId, Runner_, EnableRangeComputeFor_, ArrowResolver_, hiddenMode, - qContext); + qContext, gatewaysForMerge); } /////////////////////////////////////////////////////////////////////////////// @@ -264,7 +266,8 @@ TProgram::TProgram( bool enableRangeComputeFor, const IArrowResolver::TPtr& arrowResolver, EHiddenMode hiddenMode, - const TQContext& qContext + const TQContext& qContext, + TMaybe<TString> gatewaysForMerge ) : FunctionRegistry_(functionRegistry) , RandomProvider_(randomProvider) @@ -294,6 +297,7 @@ TProgram::TProgram( , ArrowResolver_(arrowResolver) , HiddenMode_(hiddenMode) , QContext_(qContext) + , GatewaysForMerge_(gatewaysForMerge) { if (SessionId_.empty()) { SessionId_ = CreateGuidAsString(); @@ -376,6 +380,9 @@ TProgram::TProgram( auto item = QContext_.GetReader()->Get({FacadeComponent, GatewaysLabel}).GetValueSync(); if (item) { YQL_ENSURE(LoadedGatewaysConfig_.ParseFromString(item->Value)); + if (GatewaysForMerge_) { + YQL_ENSURE(LoadedGatewaysConfig_.MergeFromString(*GatewaysForMerge_)); + } GatewaysConfig_ = &LoadedGatewaysConfig_; } } else if (QContext_.CanWrite() && GatewaysConfig_) { diff --git a/yql/essentials/core/facade/yql_facade.h b/yql/essentials/core/facade/yql_facade.h index 23aa2bd2b4..58f78cdde6 100644 --- a/yql/essentials/core/facade/yql_facade.h +++ b/yql/essentials/core/facade/yql_facade.h @@ -65,14 +65,16 @@ public: TProgramPtr Create( const TFile& file, const TString& sessionId = TString(), - const TQContext& qContext = {}); + const TQContext& qContext = {}, + TMaybe<TString> gatewaysForMerge = {}); TProgramPtr Create( const TString& filename, const TString& sourceCode, const TString& sessionId = TString(), EHiddenMode hiddenMode = EHiddenMode::Disable, - const TQContext& qContext = {}); + const TQContext& qContext = {}, + TMaybe<TString> gatewaysForMerge = {}); void UnrepeatableRandom(); private: @@ -349,7 +351,8 @@ private: bool enableRangeComputeFor, const IArrowResolver::TPtr& arrowResolver, EHiddenMode hiddenMode, - const TQContext& qContext); + const TQContext& qContext, + TMaybe<TString> gatewaysForMerge); TTypeAnnotationContextPtr BuildTypeAnnotationContext(const TString& username); TTypeAnnotationContextPtr GetAnnotationContext() const; @@ -443,6 +446,7 @@ private: TMaybe<TString> LineageStr_; TQContext QContext_; + TMaybe<TString> GatewaysForMerge_; TIssues FinalIssues_; }; |