summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvitya-smirnov <[email protected]>2025-08-08 16:57:59 +0300
committervitya-smirnov <[email protected]>2025-08-08 17:33:39 +0300
commitb7df355898ae4eaf6d64fe31a7c4557271be12d4 (patch)
tree620752f46fc1b2a7b9ae59fe8e1c0aa1f2f818e2
parent615bad15c8819c25f04d1eacdb4e983ceff0f0b8 (diff)
YQL-19747: Fix an absent column after WHERE
Fixed an absence of column candidates at `SELECT * FROM t WHERE a#`. The problem was with a `IsEnclosing` procedure, because here the cursor is actually outside the `select_core` now there is a `_` symbol that enlarge this rule text range. commit_hash:0b493cb469333f9a37c923b06267ac026efeb2c9
-rw-r--r--yql/essentials/sql/v1/complete/analysis/global/global.cpp3
-rw-r--r--yql/essentials/sql/v1/complete/sql_complete_ut.cpp12
2 files changed, 13 insertions, 2 deletions
diff --git a/yql/essentials/sql/v1/complete/analysis/global/global.cpp b/yql/essentials/sql/v1/complete/analysis/global/global.cpp
index e394570c35b..f97c940bed4 100644
--- a/yql/essentials/sql/v1/complete/analysis/global/global.cpp
+++ b/yql/essentials/sql/v1/complete/analysis/global/global.cpp
@@ -186,8 +186,7 @@ namespace NSQLComplete {
TStringBuf s = input.Text;
size_t i = input.CursorPosition;
- return (i < s.size() && IsWordBoundary(s[i]) || i == s.size()) &&
- (i > 0 /* */ && IsWordBoundary(s[i - 1]));
+ return (i < s.size() && IsWordBoundary(s[i]) || i == s.size());
}
SQLv1::Sql_queryContext* Parse(TStringBuf input) {
diff --git a/yql/essentials/sql/v1/complete/sql_complete_ut.cpp b/yql/essentials/sql/v1/complete/sql_complete_ut.cpp
index bffe15a869b..ddbcf9fc4b6 100644
--- a/yql/essentials/sql/v1/complete/sql_complete_ut.cpp
+++ b/yql/essentials/sql/v1/complete/sql_complete_ut.cpp
@@ -1396,6 +1396,10 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) {
UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected);
}
{
+ TString query = "SELECT * FROM example.`/people` WHERE a#";
+ UNIT_ASSERT_VALUES_EQUAL(CompleteTop(1, engine, query).at(0).Content, "Age");
+ }
+ {
TString query = "SELECT * FROM example.`/people` WHERE f(#)";
UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected);
}
@@ -1404,6 +1408,10 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) {
UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected);
}
{
+ TString query = "SELECT * FROM example.`/people` ORDER BY a#";
+ UNIT_ASSERT_VALUES_EQUAL(CompleteTop(1, engine, query).at(0).Content, "Age");
+ }
+ {
TString query = "SELECT * FROM example.`/people` ORDER BY f(#)";
UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected);
}
@@ -1412,6 +1420,10 @@ Y_UNIT_TEST_SUITE(SqlCompleteTests) {
UNIT_ASSERT_VALUES_EQUAL(CompleteTop(2, engine, query), expected);
}
{
+ TString query = "SELECT * FROM example.`/people` GROUP BY a#";
+ UNIT_ASSERT_VALUES_EQUAL(CompleteTop(1, engine, query).at(0).Content, "Age");
+ }
+ {
TString query = R"(
SELECT *
FROM example.`/people` AS a