summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/complete/sql_complete_ut.cpp
diff options
context:
space:
mode:
authorvitya-smirnov <[email protected]>2025-07-02 13:22:58 +0300
committervitya-smirnov <[email protected]>2025-07-02 13:34:13 +0300
commitd92bd641fb97e9b3768d08a5b3a98d444d827b2c (patch)
treec6d4228bc5965f4df9e2468e8ad608528b9e91da /yql/essentials/sql/v1/complete/sql_complete_ut.cpp
parentdbe1b39bd441dc9ae17f4d4879ce1b3f36000157 (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.cpp70
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"