aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--yql/essentials/core/facade/yql_facade.cpp17
-rw-r--r--yql/essentials/core/facade/yql_facade.h10
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_;
};