Skip to content

Commit a689229

Browse files
authored
Fix sql flags for module resolver in query replay (#10405)
1 parent dbfaa72 commit a689229

File tree

3 files changed

+29
-6
lines changed

3 files changed

+29
-6
lines changed

ydb/library/yql/core/facade/yql_facade.cpp

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,30 @@ void TProgram::HandleSourceCode(TString& sourceCode) {
607607
}
608608
}
609609

610+
namespace {
611+
612+
THashSet<TString> ExtractSqlFlags(const NYT::TNode& dataNode) {
613+
THashSet<TString> result;
614+
for (const auto& f : dataNode["SqlFlags"].AsList()) {
615+
result.insert(f.AsString());
616+
}
617+
return result;
618+
}
619+
620+
} // namespace
621+
622+
void UpdateSqlFlagsFromQContext(const TQContext& qContext, THashSet<TString>& flags) {
623+
if (qContext.CanRead()) {
624+
auto loaded = qContext.GetReader()->Get({FacadeComponent, TranslationLabel}).GetValueSync();
625+
if (!loaded) {
626+
return;
627+
}
628+
629+
auto dataNode = NYT::NodeFromYsonString(loaded->Value);
630+
flags = ExtractSqlFlags(dataNode);
631+
}
632+
}
633+
610634
void TProgram::HandleTranslationSettings(NSQLTranslation::TTranslationSettings& loadedSettings,
611635
const NSQLTranslation::TTranslationSettings*& currentSettings)
612636
{
@@ -643,11 +667,7 @@ void TProgram::HandleTranslationSettings(NSQLTranslation::TTranslationSettings&
643667
loadedSettings.ClusterMapping[c.first] = c.second.AsString();
644668
}
645669

646-
loadedSettings.Flags.clear();
647-
for (const auto& f : dataNode["SqlFlags"].AsList()) {
648-
loadedSettings.Flags.insert(f.AsString());
649-
}
650-
670+
loadedSettings.Flags = ExtractSqlFlags(dataNode);
651671
loadedSettings.V0Behavior = (NSQLTranslation::EV0Behavior)dataNode["V0Behavior"].AsUint64();
652672
loadedSettings.V0WarnAsError = NSQLTranslation::ISqlFeaturePolicy::Make(dataNode["V0WarnAsError"].AsBool());
653673
loadedSettings.DqDefaultAuto = NSQLTranslation::ISqlFeaturePolicy::Make(dataNode["DqDefaultAuto"].AsBool());

ydb/library/yql/core/facade/yql_facade.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,4 +446,6 @@ class TProgram: public TThrRefBase, private TNonCopyable
446446
TIssues FinalIssues_;
447447
};
448448

449+
void UpdateSqlFlagsFromQContext(const TQContext& qContext, THashSet<TString>& flags);
450+
449451
} // namspace NYql

ydb/library/yql/tools/dqrun/dqrun.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -911,6 +911,7 @@ int RunMain(int argc, const char* argv[])
911911

912912
TGatewaysConfig gatewaysConfig;
913913
ReadGatewaysConfig(gatewaysCfgFile, &gatewaysConfig, sqlFlags);
914+
UpdateSqlFlagsFromQContext(qContext, sqlFlags);
914915
PatchGatewaysConfig(&gatewaysConfig, mrJobBin, mrJobUdfsDir, numYtThreads, res.Has("keep-temp"));
915916
if (runOptions.AnalyzeQuery) {
916917
auto* setting = gatewaysConfig.MutableDq()->AddDefaultSettings();
@@ -1136,7 +1137,7 @@ int RunMain(int argc, const char* argv[])
11361137

11371138
moduleResolver = std::make_shared<TModuleResolver>(std::move(modules), ctx.NextUniqueId, clusterMapping, sqlFlags, hasValidate);
11381139
} else {
1139-
if (!GetYqlDefaultModuleResolver(ctx, moduleResolver, clusters)) {
1140+
if (GetYqlModuleResolver(ctx, moduleResolver, {}, clusters, sqlFlags).empty()) {
11401141
*runOptions.ErrStream << "Errors loading default YQL libraries:" << Endl;
11411142
ctx.IssueManager.GetIssues().PrintTo(*runOptions.ErrStream);
11421143
return 1;

0 commit comments

Comments
 (0)