Skip to content

Commit

Permalink
Merge 572bf62 into 0964dfd
Browse files Browse the repository at this point in the history
  • Loading branch information
vitstn authored May 27, 2024
2 parents 0964dfd + 572bf62 commit 875dd42
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 8 deletions.
26 changes: 24 additions & 2 deletions ydb/library/yql/core/facade/yql_facade.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -572,13 +572,24 @@ void TProgram::HandleTranslationSettings(NSQLTranslation::TTranslationSettings&
const NSQLTranslation::TTranslationSettings*& currentSettings)
{
if (QContext_.CanWrite()) {
auto clusterMappingsNode = NYT::TNode();
auto clusterMappingsNode = NYT::TNode::CreateMap();
for (const auto& c : currentSettings->ClusterMapping) {
clusterMappingsNode(c.first, c.second);
}

auto sqlFlagsNode = NYT::TNode::CreateList();
for (const auto& f : currentSettings->Flags) {
sqlFlagsNode.Add(f);
}

auto dataNode = NYT::TNode()
("ClusterMapping", clusterMappingsNode);
("ClusterMapping", clusterMappingsNode)
("V0Behavior", ui64(currentSettings->V0Behavior))
("V0WarnAsError", currentSettings->V0WarnAsError->Allow())
("DqDefaultAuto", currentSettings->DqDefaultAuto->Allow())
("BlockDefaultAuto", currentSettings->BlockDefaultAuto->Allow())
("SqlFlags", sqlFlagsNode);

auto data = NYT::NodeToYsonString(dataNode, NYT::NYson::EYsonFormat::Binary);
QContext_.GetWriter()->Put({FacadeComponent, TranslationLabel}, data).GetValueSync();
} else if (QContext_.CanRead()) {
Expand All @@ -588,10 +599,20 @@ void TProgram::HandleTranslationSettings(NSQLTranslation::TTranslationSettings&
}

auto dataNode = NYT::NodeFromYsonString(loaded->Value);
loadedSettings.ClusterMapping.clear();
for (const auto& c : dataNode["ClusterMapping"].AsMap()) {
loadedSettings.ClusterMapping[c.first] = c.second.AsString();
}

loadedSettings.Flags.clear();
for (const auto& f : dataNode["SqlFlags"].AsList()) {
loadedSettings.Flags.insert(f.AsString());
}

loadedSettings.V0Behavior = (NSQLTranslation::EV0Behavior)dataNode["V0Behavior"].AsUint64();
loadedSettings.V0WarnAsError = NSQLTranslation::ISqlFeaturePolicy::Make(dataNode["V0WarnAsError"].AsBool());
loadedSettings.DqDefaultAuto = NSQLTranslation::ISqlFeaturePolicy::Make(dataNode["DqDefaultAuto"].AsBool());
loadedSettings.BlockDefaultAuto = NSQLTranslation::ISqlFeaturePolicy::Make(dataNode["BlockDefaultAuto"].AsBool());
currentSettings = &loadedSettings;
}
}
Expand Down Expand Up @@ -629,6 +650,7 @@ bool TProgram::ParseSql(const NSQLTranslation::TTranslationSettings& settings)
HandleSourceCode(sourceCode);
const NSQLTranslation::TTranslationSettings* currentSettings = &settings;
NSQLTranslation::TTranslationSettings loadedSettings;
loadedSettings.PgParser = settings.PgParser;
if (QContext_) {
HandleTranslationSettings(loadedSettings, currentSettings);
}
Expand Down
19 changes: 14 additions & 5 deletions ydb/library/yql/core/ut/yql_qplayer_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ void WithTables(const F&& f) {

struct TRunSettings {
bool IsSql = true;
bool IsPg = false;
THashMap<TString, TString> Tables;
TMaybe<TString> ParametersYson;
THashMap<TString, TString> StaticFiles, DynamicFiles;
Expand Down Expand Up @@ -114,16 +115,17 @@ bool RunProgram(bool replay, const TString& query, const TQContext& qContext, co
program->AddUserDataTable(MakeUserTables(runSettings.DynamicFiles));
}

if (runSettings.IsSql) {
if (runSettings.IsSql || runSettings.IsPg) {
NSQLTranslation::TTranslationSettings settings;
settings.PgParser = runSettings.IsPg;
if (!replay) {
settings.ClusterMapping["plato"] = TString(YtProviderName);
}

if (!program->ParseSql(settings)) {
program->PrintErrorsTo(Cerr);
return false;
}
}
} else if (!program->ParseYql()) {
program->PrintErrorsTo(Cerr);
return false;
Expand All @@ -134,7 +136,7 @@ bool RunProgram(bool replay, const TString& query, const TQContext& qContext, co
return false;
}

TProgram::TStatus status = replay ?
TProgram::TStatus status = replay ?
program->Optimize(GetUsername()) :
program->Run(GetUsername());
if (status == TProgram::TStatus::Error) {
Expand Down Expand Up @@ -188,7 +190,7 @@ Y_UNIT_TEST_SUITE(QPlayerTests) {
(return world)
)
)";

TRunSettings runSettings;
runSettings.IsSql = false;
CheckProgram(s, runSettings);
Expand All @@ -200,12 +202,19 @@ Y_UNIT_TEST_SUITE(QPlayerTests) {
CheckProgram(s, runSettings);
}

Y_UNIT_TEST(SimplePg) {
auto s = "select 1::text";
TRunSettings runSettings;
runSettings.IsPg = true;
CheckProgram(s, runSettings);
}

Y_UNIT_TEST(Udf) {
auto s = "select String::AsciiToUpper('a')";
TRunSettings runSettings;
CheckProgram(s, runSettings);
}

Y_UNIT_TEST(YtGetFolder) {
auto s = "select * from plato.folder('','_yql_row_spec')";
WithTables([&](const auto& tables) {
Expand Down
4 changes: 4 additions & 0 deletions ydb/library/yql/sql/settings/translation_settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ namespace NSQLTranslation {
return new TAlwaysAllowPolicy;
}

ISqlFeaturePolicy::TPtr ISqlFeaturePolicy::Make(bool allow) {
return allow ? MakeAlwaysAllow() : MakeAlwaysDisallow();
}

TTranslationSettings::TTranslationSettings()
: ModuleMapping({{"core", "/lib/yql/core.yql"}})
, BindingsMode(EBindingsMode::ENABLED)
Expand Down
5 changes: 4 additions & 1 deletion ydb/library/yql/sql/settings/translation_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ namespace NSQLTranslation {

using TIncrementMonCounterFunction = std::function<void(const TString&, const TString&)>;

enum class EV0Behavior {
// persisted
enum class EV0Behavior : ui32 {
Silent = 0,
Report,
Disable
Expand All @@ -60,6 +61,8 @@ namespace NSQLTranslation {
static TPtr MakeAlwaysDisallow();

static TPtr MakeAlwaysAllow();

static TPtr Make(bool allow);
};

struct TTableBindingSettings {
Expand Down

0 comments on commit 875dd42

Please sign in to comment.