summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/complete/sql_complete.cpp
diff options
context:
space:
mode:
authorvitya-smirnov <[email protected]>2025-08-12 15:04:56 +0300
committervitya-smirnov <[email protected]>2025-08-12 15:29:12 +0300
commit088fbdd4485f80a02567bbe84ed0e3f35337eb3d (patch)
tree15177d3cbfb50769297613218fe2597c7c2f678c /yql/essentials/sql/v1/complete/sql_complete.cpp
parenta84a916fe9eff84d52151ee74e4c6ddcebcf00c2 (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.cpp15
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;