diff options
author | robot-piglet <[email protected]> | 2025-04-22 12:45:53 +0300 |
---|---|---|
committer | robot-piglet <[email protected]> | 2025-04-22 13:07:14 +0300 |
commit | 57c56063ee203e5fb003e293f449a635f46053e0 (patch) | |
tree | 4673a1f3b4adcfbf0a0e1b908e961b92dda24aa9 | |
parent | 3fbc0ac208bdd777ebadfe80a34bee4c1aa2be61 (diff) |
Intermediate changes
commit_hash:112bf21627e2883a424e58d1a65caf7af62c24c8
-rw-r--r-- | yql/essentials/public/fastcheck/format.cpp | 1 | ||||
-rw-r--r-- | yql/essentials/tools/sql_formatter/sql_formatter.cpp | 18 | ||||
-rw-r--r-- | yql/essentials/tools/sql_formatter/ya.make | 2 | ||||
-rw-r--r-- | yql/essentials/tools/yql_linter/yql_linter.cpp | 11 |
4 files changed, 30 insertions, 2 deletions
diff --git a/yql/essentials/public/fastcheck/format.cpp b/yql/essentials/public/fastcheck/format.cpp index d016b959777..c17b2a027c3 100644 --- a/yql/essentials/public/fastcheck/format.cpp +++ b/yql/essentials/public/fastcheck/format.cpp @@ -83,6 +83,7 @@ private: settings.File = request.File; settings.Antlr4Parser = true; settings.AnsiLexer = request.IsAnsiLexer; + settings.LangVer = request.LangVer; NSQLTranslationV1::TLexers lexers; lexers.Antlr4 = NSQLTranslationV1::MakeAntlr4LexerFactory(); diff --git a/yql/essentials/tools/sql_formatter/sql_formatter.cpp b/yql/essentials/tools/sql_formatter/sql_formatter.cpp index b5dc06db418..d25e4817c91 100644 --- a/yql/essentials/tools/sql_formatter/sql_formatter.cpp +++ b/yql/essentials/tools/sql_formatter/sql_formatter.cpp @@ -3,6 +3,8 @@ #include <yql/essentials/sql/v1/lexer/antlr4_ansi/lexer.h> #include <yql/essentials/sql/v1/proto_parser/antlr4/proto_parser.h> #include <yql/essentials/sql/v1/proto_parser/antlr4_ansi/proto_parser.h> +#include <yql/essentials/public/langver/yql_langver.h> +#include <yql/essentials/core/langver/yql_core_langver.h> #include <library/cpp/getopt/last_getopt.h> #include <google/protobuf/arena.h> @@ -15,15 +17,28 @@ int RunFormat(int argc, char* argv[]) { TString outFileName; TString inFileName; TString queryString; + NYql::TLangVersion langver = NYql::GetMaxReleasedLangVersion(); opts.AddLongOption('o', "output", "save output to file").RequiredArgument("file").StoreResult(&outFileName); opts.AddLongOption('i', "input", "input file").RequiredArgument("input").StoreResult(&inFileName); opts.AddLongOption('p', "print-query", "print given query before parsing").NoArgument(); opts.AddLongOption('f', "obfuscate", "obfuscate query").NoArgument(); opts.AddLongOption("ansi-lexer", "use ansi lexer").NoArgument(); + opts.AddLongOption("langver", "Set current language version").Optional().RequiredArgument("VER") + .Handler1T<TString>([&](const TString& str) { + if (!NYql::ParseLangVersion(str, langver)) { + throw yexception() << "Failed to parse language version: " << str; + } + }); + + opts.SetFreeArgsNum(0); opts.AddHelpOption(); NLastGetopt::TOptsParseResult res(&opts, argc, argv); + TMaybe<NYql::TIssue> verIssue; + if (!NYql::CheckLangVersion(langver, NYql::GetMaxReleasedLangVersion(), verIssue)) { + throw yexception() << verIssue->ToString(); + } THolder<TFixedBufferFileOutput> outFile; if (!outFileName.empty()) { @@ -45,6 +60,7 @@ int RunFormat(int argc, char* argv[]) { } google::protobuf::Arena arena; NSQLTranslation::TTranslationSettings settings; + settings.LangVer = langver; settings.Arena = &arena; settings.AnsiLexer = res.Has("ansi-lexer"); NSQLTranslationV1::TLexers lexers; @@ -72,7 +88,7 @@ int main(int argc, char* argv[]) { try { return RunFormat(argc, argv); } catch (const yexception& e) { - Cerr << "Caught exception:" << e.what() << Endl; + Cerr << "Caught exception: " << e.what() << Endl; return 1; } catch (...) { Cerr << CurrentExceptionMessage() << Endl; diff --git a/yql/essentials/tools/sql_formatter/ya.make b/yql/essentials/tools/sql_formatter/ya.make index 18d6c3ba3b5..558dbe3bd5a 100644 --- a/yql/essentials/tools/sql_formatter/ya.make +++ b/yql/essentials/tools/sql_formatter/ya.make @@ -10,6 +10,8 @@ PEERDIR( yql/essentials/sql/v1/lexer/antlr4_ansi yql/essentials/sql/v1/proto_parser/antlr4 yql/essentials/sql/v1/proto_parser/antlr4_ansi + yql/essentials/public/langver + yql/essentials/core/langver ) SRCS( diff --git a/yql/essentials/tools/yql_linter/yql_linter.cpp b/yql/essentials/tools/yql_linter/yql_linter.cpp index 458496c21ea..0b97b3ee012 100644 --- a/yql/essentials/tools/yql_linter/yql_linter.cpp +++ b/yql/essentials/tools/yql_linter/yql_linter.cpp @@ -20,6 +20,7 @@ int Run(int argc, char* argv[]) { TString syntaxStr = "YQL"; TString clusterModeStr = "Many"; TString clusterSystem; + NYql::TLangVersion langver = NYql::GetMaxReleasedLangVersion(); opts.AddLongOption('i', "input", "input file").RequiredArgument("input").StoreResult(&inFileName); opts.AddLongOption('v', "verbose", "show lint issues").NoArgument(); @@ -39,6 +40,13 @@ int Run(int argc, char* argv[]) { opts.AddLongOption("cluster-system", "cluster system").StoreResult(&clusterSystem); opts.AddLongOption("ansi-lexer", "use ansi lexer").NoArgument(); opts.AddLongOption("no-colors", "disable colors for output").NoArgument(); + opts.AddLongOption("langver", "Set current language version").Optional().RequiredArgument("VER") + .Handler1T<TString>([&](const TString& str) { + if (!NYql::ParseLangVersion(str, langver)) { + throw yexception() << "Failed to parse language version: " << str; + } + }); + opts.SetFreeArgsNum(0); opts.AddHelpOption(); @@ -77,6 +85,7 @@ int Run(int argc, char* argv[]) { int errors = 0; TString queryFile("query"); + checkReq.LangVer = langver; checkReq.IsAnsiLexer = res.Has("ansi-lexer"); checkReq.Program = queryString; checkReq.Syntax = NYql::NFastCheck::ESyntax::YQL; @@ -118,7 +127,7 @@ int main(int argc, char* argv[]) { try { return Run(argc, argv); } catch (const yexception& e) { - Cerr << "Caught exception:" << e.what() << Endl; + Cerr << "Caught exception: " << e.what() << Endl; return 1; } catch (...) { Cerr << CurrentExceptionMessage() << Endl; |