diff options
| author | robot-piglet <[email protected]> | 2025-06-09 20:13:36 +0300 |
|---|---|---|
| committer | robot-piglet <[email protected]> | 2025-06-09 20:25:09 +0300 |
| commit | bcdf39ca01cce750f1cd7221198eaa0342731b21 (patch) | |
| tree | 79e517b6076141b9df5167589696a98c5ddb8d20 /yql/essentials/tools/sql2yql/sql2yql.cpp | |
| parent | fd23a3e3bd20bdb790e18c9a5b353fb0907322a8 (diff) | |
Intermediate changes
commit_hash:a5cf347a0fdbf87672444c86b9acad24d4ab956a
Diffstat (limited to 'yql/essentials/tools/sql2yql/sql2yql.cpp')
| -rw-r--r-- | yql/essentials/tools/sql2yql/sql2yql.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/yql/essentials/tools/sql2yql/sql2yql.cpp b/yql/essentials/tools/sql2yql/sql2yql.cpp index c3ffc588a13..c268af9b5bb 100644 --- a/yql/essentials/tools/sql2yql/sql2yql.cpp +++ b/yql/essentials/tools/sql2yql/sql2yql.cpp @@ -6,6 +6,8 @@ #include <yql/essentials/sql/sql.h> #include <yql/essentials/sql/v1/sql.h> +#include <yql/essentials/sql/v1/complete/check/check_complete.h> +#include <yql/essentials/sql/v1/format/sql_format.h> #include <yql/essentials/sql/v1/lexer/check/check_lexers.h> #include <yql/essentials/sql/v1/lexer/antlr4/lexer.h> #include <yql/essentials/sql/v1/lexer/antlr4_ansi/lexer.h> @@ -15,7 +17,6 @@ #include <yql/essentials/parser/pg_wrapper/interface/parser.h> #include <library/cpp/getopt/last_getopt.h> -#include <yql/essentials/sql/v1/format/sql_format.h> #include <library/cpp/testing/unittest/registar.h> #include <util/stream/file.h> @@ -23,6 +24,7 @@ #include <util/generic/hash_set.h> #include <util/generic/string.h> #include <util/string/escape.h> +#include <util/string/split.h> #include <google/protobuf/message.h> #include <google/protobuf/descriptor.h> @@ -163,6 +165,15 @@ bool TestLexers(const TString& query) { return true; } +bool TestComplete(const TString& query, NYql::TAstNode& root) { + NYql::TIssues issues; + if (!NSQLComplete::CheckComplete(query, root, issues)) { + Cerr << issues.ToString() << Endl; + return false; + } + return true; +} + class TStoreMappingFunctor: public NLastGetopt::IOptHandler { public: TStoreMappingFunctor(THashMap<TString, TString>* target, char delim = '@') @@ -198,7 +209,6 @@ int BuildAST(int argc, char* argv[]) { clusterMapping["pg_catalog"] = NYql::PgProviderName; clusterMapping["information_schema"] = NYql::PgProviderName; - THashMap<TString, TString> tables; THashSet<TString> flags; opts.AddLongOption('o', "output", "save output to file").RequiredArgument("file").StoreResult(&outFileName); @@ -213,7 +223,6 @@ int BuildAST(int argc, char* argv[]) { opts.AddLongOption("pg", "use pg_query parser").NoArgument(); opts.AddLongOption('a', "ann", "print Yql annotations").NoArgument(); opts.AddLongOption('C', "cluster", "set cluster to service mapping").RequiredArgument("name@service").Handler(new TStoreMappingFunctor(&clusterMapping)); - opts.AddLongOption('T', "table", "set table to filename mapping").RequiredArgument("table@path").Handler(new TStoreMappingFunctor(&tables)); opts.AddLongOption('R', "replace", "replace Output table with each statement result").NoArgument(); opts.AddLongOption("sqllogictest", "input files are in sqllogictest format").NoArgument(); opts.AddLongOption("syntax-version", "SQL syntax version").StoreResult(&syntaxVersion).DefaultValue(1); @@ -223,6 +232,7 @@ int BuildAST(int argc, char* argv[]) { opts.AddLongOption("test-double-format", "check if formatting already formatted query produces the same result").NoArgument(); 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("format-output", "Saves formatted query to it").RequiredArgument("format-output").StoreResult(&outFileNameFormat); opts.SetFreeArgDefaultTitle("query file"); opts.AddHelpOption(); @@ -281,7 +291,6 @@ int BuildAST(int argc, char* argv[]) { queries.back().append(line).append("\n"); } ++lineNum; - } } else { queries.push_back(in.ReadAll()); @@ -347,8 +356,8 @@ int BuildAST(int argc, char* argv[]) { TPosOutput posOut(result); ExtractQuery(posOut, *ast); if (res.Has("dump") || query != result.Str()) { - out << NUnitTest::ColoredDiff(query, result.Str()) << Endl; - } + out << NUnitTest::ColoredDiff(query, result.Str()) << Endl; + } } NSQLTranslation::TSQLHints hints; @@ -357,9 +366,9 @@ int BuildAST(int argc, char* argv[]) { settings.MaxErrors, settings.Antlr4Parser)) { parseRes = NSQLTranslation::SqlASTToYql(translators, query, *ast, hints, settings); } - } + } } else { - parseRes = NSQLTranslation::SqlToYql(translators, query, settings); + parseRes = NSQLTranslation::SqlToYql(translators, query, settings); } } @@ -394,6 +403,10 @@ int BuildAST(int argc, char* argv[]) { hasError = !TestLexers(query); } + if (res.Has("test-complete") && syntaxVersion == 1 && !hasError && parseRes.Root) { + hasError = !TestComplete(query, *parseRes.Root); + } + if (hasError) { ++errors; } |
