diff options
author | vvvv <vvvv@yandex-team.com> | 2025-02-21 13:37:16 +0300 |
---|---|---|
committer | vvvv <vvvv@yandex-team.com> | 2025-02-21 13:58:34 +0300 |
commit | 39c78c7d5074d33cc06b63234fa96e9a93213fdc (patch) | |
tree | 6b6eba4e73067e1112f454f68e7de81973aeba76 /yql/essentials/sql/v1/sql_ut_antlr4.cpp | |
parent | a4e53fc5cc0c64cd0c54aa050e82cab26e258b7f (diff) | |
download | ydb-39c78c7d5074d33cc06b63234fa96e9a93213fdc.tar.gz |
YQL-19594 Explicit lexers & parsers 2
commit_hash:2aa733486a55a04c39ff8bb1c7eaca3a85719647
Diffstat (limited to 'yql/essentials/sql/v1/sql_ut_antlr4.cpp')
-rw-r--r-- | yql/essentials/sql/v1/sql_ut_antlr4.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/yql/essentials/sql/v1/sql_ut_antlr4.cpp b/yql/essentials/sql/v1/sql_ut_antlr4.cpp index a150a7624b..6d54a4f409 100644 --- a/yql/essentials/sql/v1/sql_ut_antlr4.cpp +++ b/yql/essentials/sql/v1/sql_ut_antlr4.cpp @@ -8118,6 +8118,68 @@ Y_UNIT_TEST_SUITE(ColumnFamily) { } } +Y_UNIT_TEST_SUITE(QuerySplit) { + Y_UNIT_TEST(Simple) { + TString query = R"( + ; + -- Comment 1 + SELECT * From Input; -- Comment 2 + -- Comment 3 + $a = "a"; + + -- Comment 9 + ; + + -- Comment 10 + + -- Comment 8 + + $b = ($x) -> { + -- comment 4 + return /* Comment 5 */ $x; + -- Comment 6 + }; + + // Comment 7 + + + + )"; + + google::protobuf::Arena Arena; + + NSQLTranslation::TTranslationSettings settings; + settings.AnsiLexer = false; + settings.Antlr4Parser = true; + settings.Arena = &Arena; + + TVector<TString> statements; + NYql::TIssues issues; + + NSQLTranslationV1::TLexers lexers; + lexers.Antlr4 = NSQLTranslationV1::MakeAntlr4LexerFactory(); + NSQLTranslationV1::TParsers parsers; + parsers.Antlr4 = NSQLTranslationV1::MakeAntlr4ParserFactory(); + + UNIT_ASSERT(NSQLTranslationV1::SplitQueryToStatements(lexers, parsers, query, statements, issues, settings)); + + UNIT_ASSERT_VALUES_EQUAL(statements.size(), 3); + + UNIT_ASSERT_VALUES_EQUAL(statements[0], "-- Comment 1\n SELECT * From Input; -- Comment 2\n"); + UNIT_ASSERT_VALUES_EQUAL(statements[1], R"(-- Comment 3 + $a = "a";)"); + UNIT_ASSERT_VALUES_EQUAL(statements[2], R"(-- Comment 10 + + -- Comment 8 + + $b = ($x) -> { + -- comment 4 + return /* Comment 5 */ $x; + -- Comment 6 + };)"); + } +} + Y_UNIT_TEST_SUITE(Transfer) { Y_UNIT_TEST(Lambda) { NYql::TAstParseResult res = SqlToYql(R"( use plato; |