summaryrefslogtreecommitdiffstats
path: root/yql/essentials/tools/sql2yql/sql2yql.cpp
diff options
context:
space:
mode:
authorYDBot <[email protected]>2025-10-07 00:52:12 +0000
committerYDBot <[email protected]>2025-10-07 00:52:12 +0000
commit0f7e91aa5ae33d20f2ef0d5cb2c80bb66924417f (patch)
tree6307f61a54aea3be0afeeaf766a30597fe047e81 /yql/essentials/tools/sql2yql/sql2yql.cpp
parent86c7a4b4c37e709428ebc61fb8a6e79c7260374c (diff)
parent3ab4f52f9654e20e38084313aa6861cb0c17eb1d (diff)
Sync branches 251007-0050
Diffstat (limited to 'yql/essentials/tools/sql2yql/sql2yql.cpp')
-rw-r--r--yql/essentials/tools/sql2yql/sql2yql.cpp64
1 files changed, 31 insertions, 33 deletions
diff --git a/yql/essentials/tools/sql2yql/sql2yql.cpp b/yql/essentials/tools/sql2yql/sql2yql.cpp
index 2e34c196694..5d891333c74 100644
--- a/yql/essentials/tools/sql2yql/sql2yql.cpp
+++ b/yql/essentials/tools/sql2yql/sql2yql.cpp
@@ -22,7 +22,6 @@
#include <yql/essentials/parser/pg_wrapper/interface/context.h>
#include <yql/essentials/providers/common/gateways_utils/gateways_utils.h>
-
#include <library/cpp/getopt/last_getopt.h>
#include <library/cpp/testing/unittest/registar.h>
@@ -107,8 +106,7 @@ bool TestFormat(
const TString& queryFile,
const NYql::TAstParseResult& parseRes,
const TString& outFileName,
- const bool checkDoubleFormatting
-) {
+ const bool checkDoubleFormatting) {
TStringStream yqlProgram;
parseRes.Root->PrettyPrintTo(yqlProgram, NYql::TAstPrintFlags::PerLine | NYql::TAstPrintFlags::ShortQuote);
@@ -128,7 +126,7 @@ bool TestFormat(
NYql::TAstParseResult frmParseRes = NSQLTranslation::SqlToYql(translators, frmQuery, settings);
if (!frmParseRes.Issues.Empty()) {
frmParseRes.Issues.PrintWithProgramTo(Cerr, queryFile, frmQuery);
- if (AnyOf(frmParseRes.Issues, [](const auto& issue) { return issue.GetSeverity() == NYql::TSeverityIds::S_ERROR;})) {
+ if (AnyOf(frmParseRes.Issues, [](const auto& issue) { return issue.GetSeverity() <= NYql::TSeverityIds::S_ERROR; })) {
return false;
}
}
@@ -204,7 +202,6 @@ private:
char Delim_;
};
-
void ParseProtoConfig(const TString& cfgFile, google::protobuf::Message* config) {
TString configData = TFileInput(cfgFile).ReadAll();
@@ -221,7 +218,6 @@ static THolder<TMessage> ParseProtoConfig(const TString& cfgFile) {
return config;
}
-
int BuildAST(int argc, char* argv[]) {
NLastGetopt::TOpts opts = NLastGetopt::TOpts::Default();
@@ -273,27 +269,26 @@ int BuildAST(int argc, char* argv[]) {
opts.AddLongOption("test-antlr4", "check antlr4 parser").NoArgument();
opts.AddLongOption("test-lexers", "check other lexers").NoArgument();
opts.AddLongOption("test-complete", "check completion engine").NoArgument();
+ opts.AddLongOption("test-syntax-ambiguity", "test syntax ambiguity").NoArgument();
+ opts.AddLongOption("debug-syntax-ambiguity", "debug syntax ambiguity").NoArgument();
opts.AddLongOption("format-output", "Saves formatted query to it").RequiredArgument("format-output").StoreResult(&outFileNameFormat);
opts.AddLongOption("langver", "Set current language version").Optional().RequiredArgument("VER").Handler1T<TString>(langVerHandler);
opts.AddLongOption("mem-limit", "Set memory limit in megabytes").Handler1T<ui32>(0, NYql::SetAddressSpaceLimit);
- opts.AddLongOption("gateways-cfg", "Gateways configuration file").Optional().RequiredArgument("FILE")
- .Handler1T<TString>([&gatewaysConfig, &clusterMapping](const TString& file) {
- gatewaysConfig = ParseProtoConfig<NYql::TGatewaysConfig>(file);
- GetClusterMappingFromGateways(*gatewaysConfig, clusterMapping);
- });
- opts.AddLongOption("pg-ext", "Pg extensions config file").Optional().RequiredArgument("FILE")
- .Handler1T<TString>([](const TString& file) {
-
- auto pgExtConfig = ParseProtoConfig<NYql::NProto::TPgExtensions>(file);
- if (!pgExtConfig) {
- throw yexception() << "Bad format of config file " << file;
- }
- TVector<NYql::NPg::TExtensionDesc> extensions;
- NYql::PgExtensionsFromProto(*pgExtConfig, extensions);
- NYql::NPg::RegisterExtensions(extensions, true,
- *NSQLTranslationPG::CreateExtensionSqlParser(),
- NKikimr::NMiniKQL::CreateExtensionLoader().get());
- });
+ opts.AddLongOption("gateways-cfg", "Gateways configuration file").Optional().RequiredArgument("FILE").Handler1T<TString>([&gatewaysConfig, &clusterMapping](const TString& file) {
+ gatewaysConfig = ParseProtoConfig<NYql::TGatewaysConfig>(file);
+ GetClusterMappingFromGateways(*gatewaysConfig, clusterMapping);
+ });
+ opts.AddLongOption("pg-ext", "Pg extensions config file").Optional().RequiredArgument("FILE").Handler1T<TString>([](const TString& file) {
+ auto pgExtConfig = ParseProtoConfig<NYql::NProto::TPgExtensions>(file);
+ if (!pgExtConfig) {
+ throw yexception() << "Bad format of config file " << file;
+ }
+ TVector<NYql::NPg::TExtensionDesc> extensions;
+ NYql::PgExtensionsFromProto(*pgExtConfig, extensions);
+ NYql::NPg::RegisterExtensions(extensions, true,
+ *NSQLTranslationPG::CreateExtensionSqlParser(),
+ NKikimr::NMiniKQL::CreateExtensionLoader().get());
+ });
opts.SetFreeArgDefaultTitle("query file");
opts.AddHelpOption();
@@ -321,14 +316,17 @@ int BuildAST(int argc, char* argv[]) {
lexers.Antlr4 = NSQLTranslationV1::MakeAntlr4LexerFactory();
lexers.Antlr4Ansi = NSQLTranslationV1::MakeAntlr4AnsiLexerFactory();
NSQLTranslationV1::TParsers parsers;
- parsers.Antlr4 = NSQLTranslationV1::MakeAntlr4ParserFactory();
- parsers.Antlr4Ansi = NSQLTranslationV1::MakeAntlr4AnsiParserFactory();
+ parsers.Antlr4 = NSQLTranslationV1::MakeAntlr4ParserFactory(
+ res.Has("test-syntax-ambiguity"),
+ res.Has("debug-syntax-ambiguity"));
+ parsers.Antlr4Ansi = NSQLTranslationV1::MakeAntlr4AnsiParserFactory(
+ res.Has("test-syntax-ambiguity"),
+ res.Has("debug-syntax-ambiguity"));
NSQLTranslation::TTranslators translators(
nullptr,
NSQLTranslationV1::MakeTranslator(lexers, parsers),
- NSQLTranslationPG::MakeTranslator()
- );
+ NSQLTranslationPG::MakeTranslator());
TVector<TString> queries;
int errors = 0;
@@ -365,7 +363,7 @@ int BuildAST(int argc, char* argv[]) {
queries.push_back(queryString);
}
- for (const auto& query: queries) {
+ for (const auto& query : queries) {
if (query.empty()) {
continue;
}
@@ -400,7 +398,7 @@ int BuildAST(int argc, char* argv[]) {
issues.PrintTo(Cerr);
}
- bool hasError = AnyOf(issues, [](const auto& issue) { return issue.GetSeverity() == NYql::TSeverityIds::S_ERROR;});
+ bool hasError = AnyOf(issues, [](const auto& issue) { return issue.GetSeverity() == NYql::TSeverityIds::S_ERROR; });
if (hasError) {
++errors;
}
@@ -413,7 +411,7 @@ int BuildAST(int argc, char* argv[]) {
} else {
if (res.Has("tree") || res.Has("diff") || res.Has("dump")) {
google::protobuf::Message* ast(NSQLTranslation::SqlAST(translators, query, queryFile, parseRes.Issues,
- NSQLTranslation::SQL_MAX_PARSER_ERRORS, settings));
+ NSQLTranslation::SQL_MAX_PARSER_ERRORS, settings));
if (ast) {
if (res.Has("tree")) {
out << ast->DebugString() << Endl;
@@ -430,7 +428,7 @@ int BuildAST(int argc, char* argv[]) {
NSQLTranslation::TSQLHints hints;
auto lexer = SqlLexer(translators, query, parseRes.Issues, settings);
if (lexer && CollectSqlHints(*lexer, query, queryFile, settings.File, hints, parseRes.Issues,
- settings.MaxErrors, settings.Antlr4Parser)) {
+ settings.MaxErrors, settings.Antlr4Parser)) {
parseRes = NSQLTranslation::SqlASTToYql(translators, query, *ast, hints, settings);
}
}
@@ -455,7 +453,7 @@ int BuildAST(int argc, char* argv[]) {
bool hasError = false;
if (!parseRes.Issues.Empty()) {
- hasError = AnyOf(parseRes.Issues, [](const auto& issue) { return issue.GetSeverity() == NYql::TSeverityIds::S_ERROR;});
+ hasError = AnyOf(parseRes.Issues, [](const auto& issue) { return issue.GetSeverity() <= NYql::TSeverityIds::S_ERROR; });
if (hasError || !noDebug) {
parseRes.Issues.PrintWithProgramTo(Cerr, queryFile, query);