diff options
| author | vitya-smirnov <[email protected]> | 2025-08-08 16:57:59 +0300 |
|---|---|---|
| committer | vitya-smirnov <[email protected]> | 2025-08-08 17:33:39 +0300 |
| commit | b7df355898ae4eaf6d64fe31a7c4557271be12d4 (patch) | |
| tree | 620752f46fc1b2a7b9ae59fe8e1c0aa1f2f818e2 | |
| parent | 615bad15c8819c25f04d1eacdb4e983ceff0f0b8 (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.cpp | 3 | ||||
| -rw-r--r-- | yql/essentials/sql/v1/complete/sql_complete_ut.cpp | 12 |
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 |
