summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-piglet <[email protected]>2025-04-22 12:45:53 +0300
committerrobot-piglet <[email protected]>2025-04-22 13:07:14 +0300
commit57c56063ee203e5fb003e293f449a635f46053e0 (patch)
tree4673a1f3b4adcfbf0a0e1b908e961b92dda24aa9
parent3fbc0ac208bdd777ebadfe80a34bee4c1aa2be61 (diff)
Intermediate changes
commit_hash:112bf21627e2883a424e58d1a65caf7af62c24c8
-rw-r--r--yql/essentials/public/fastcheck/format.cpp1
-rw-r--r--yql/essentials/tools/sql_formatter/sql_formatter.cpp18
-rw-r--r--yql/essentials/tools/sql_formatter/ya.make2
-rw-r--r--yql/essentials/tools/yql_linter/yql_linter.cpp11
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;