diff options
author | vitya-smirnov <[email protected]> | 2025-08-12 15:04:56 +0300 |
---|---|---|
committer | vitya-smirnov <[email protected]> | 2025-08-12 15:29:12 +0300 |
commit | 088fbdd4485f80a02567bbe84ed0e3f35337eb3d (patch) | |
tree | 15177d3cbfb50769297613218fe2597c7c2f678c /yql/essentials/sql/v1/complete/sql_complete.cpp | |
parent | a84a916fe9eff84d52151ee74e4c6ddcebcf00c2 (diff) |
YQL-19747: Improve and fix completon engine
Played with the autocomplete and found some issues:
https://nda.ya.ru/t/1F9ioYe37HVwo2.
- Supported `min`, `max` parameters of the `RANGE` table
function, respecting `prefix`.
- Supported cluster detecton at table function, e.g.
`SELECT * FROM plato.RANGE(Input1, Input2)`.
- Made column filter not to ignore a table alias.
- Supported keyword as identifier parsing.
- Supported `ID_QUOTED` as table alias.
commit_hash:9e9ff13373cd059e6a240ddff0ae18f599d790c0
Diffstat (limited to 'yql/essentials/sql/v1/complete/sql_complete.cpp')
-rw-r--r-- | yql/essentials/sql/v1/complete/sql_complete.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/yql/essentials/sql/v1/complete/sql_complete.cpp b/yql/essentials/sql/v1/complete/sql_complete.cpp index c0916674eee..f98f8309f77 100644 --- a/yql/essentials/sql/v1/complete/sql_complete.cpp +++ b/yql/essentials/sql/v1/complete/sql_complete.cpp @@ -146,7 +146,7 @@ namespace NSQLComplete { if (local.Object && global.Use) { request.Constraints.Object->Provider = global.Use->Provider; - request.Constraints.Object->Cluster = global.Use->Cluster; + request.Constraints.Object->Cluster = global.Use->Name; } if (local.Object && local.Object->HasCluster()) { @@ -198,6 +198,11 @@ namespace NSQLComplete { return local; } + if (TMaybe<TClusterContext> cluster = function->Cluster) { + object->Provider = cluster->Provider; + object->Cluster = cluster->Name; + } + auto& name = function->Name; size_t number = function->ArgumentNumber; @@ -211,6 +216,14 @@ namespace NSQLComplete { name == "regexp" || name == "filter" || name == "folder" || name == "walkfolders")) { object->Kinds.emplace(EObjectKind::Folder); + } else if ((number == 1 || number == 2) && (name == "range")) { + if (TMaybe<TString> path = function->Arg0) { + object->Path = *path; + object->Path.append("/"); + } + + object->Kinds.emplace(EObjectKind::Folder); + object->Kinds.emplace(EObjectKind::Table); } return local; |