diff options
author | vitya-smirnov <[email protected]> | 2025-07-02 13:22:58 +0300 |
---|---|---|
committer | vitya-smirnov <[email protected]> | 2025-07-02 13:34:13 +0300 |
commit | d92bd641fb97e9b3768d08a5b3a98d444d827b2c (patch) | |
tree | c6d4228bc5965f4df9e2468e8ad608528b9e91da /yql/essentials/sql/v1/complete/sql_complete_ut.cpp | |
parent | dbe1b39bd441dc9ae17f4d4879ce1b3f36000157 (diff) |
YQL-19747: Support JOIN ON, WHERE, GROUP/ORDER BY
Before this patch we completed columns only at
SELECT projection. Now we complete it at these
constructions. Also it respects visibility rules.
commit_hash:aa1e6d4900e9b032801ddbf3bcd347750c2939b1
Diffstat (limited to 'yql/essentials/sql/v1/complete/sql_complete_ut.cpp')
-rw-r--r-- | yql/essentials/sql/v1/complete/sql_complete_ut.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/yql/essentials/sql/v1/complete/sql_complete_ut.cpp b/yql/essentials/sql/v1/complete/sql_complete_ut.cpp index ca9709cf5e2..ba422168652 100644 --- a/yql/essentials/sql/v1/complete/sql_complete_ut.cpp +++ b/yql/essentials/sql/v1/complete/sql_complete_ut.cpp @@ -1210,6 +1210,76 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) { } } + Y_UNIT_TEST(ColumnPositions) { + auto engine = MakeSqlCompletionEngineUT(); + + TVector<TCandidate> expected = { + {ColumnName, "Age"}, + {ColumnName, "Name"}, + }; + + { + TString query = "SELECT # FROM example.`/people`"; + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected); + } + { + TString query = "SELECT f(#) FROM example.`/people`"; + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected); + } + { + TString query = "SELECT * FROM example.`/people` WHERE #"; + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected); + } + { + TString query = "SELECT * FROM example.`/people` WHERE f(#)"; + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected); + } + { + TString query = "SELECT * FROM example.`/people` ORDER BY #"; + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected); + } + { + TString query = "SELECT * FROM example.`/people` ORDER BY f(#)"; + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected); + } + { + TString query = "SELECT * FROM example.`/people` GROUP BY #"; + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected); + } + { + TString query = R"( + SELECT * + FROM example.`/people` AS a + JOIN example.`/people` AS b ON a.# + )"; + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected); + } + } + + Y_UNIT_TEST(ProjectionVisibility) { + auto engine = MakeSqlCompletionEngineUT(); + { + TString query = "SELECT Age as a, # FROM example.`/people`"; + + TVector<TCandidate> expected = { + {ColumnName, "Age"}, + {ColumnName, "Name"}, + }; + + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected); + } + { + TString query = "SELECT Age as a, b FROM example.`/people` WHERE #"; + + TVector<TCandidate> expected = { + {ColumnName, "a"}, + {ColumnName, "b"}, + }; + + UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected); + } + } + Y_UNIT_TEST(Typing) { const auto queryUtf16 = TUtf16String::FromUtf8( "SELECT \n" |