summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/complete/sql_complete.cpp
diff options
context:
space:
mode:
authorvitya-smirnov <[email protected]>2025-06-24 15:50:39 +0300
committervitya-smirnov <[email protected]>2025-06-24 16:06:46 +0300
commit573dadf304e5729bdad2dc02fd7c4ad2cb7a0524 (patch)
treeed72d28bb7b17af07d1364abd08360829533792d /yql/essentials/sql/v1/complete/sql_complete.cpp
parent7ad54f585b44a26b4c619ab33dcfe06fd0add315 (diff)
YQL-19747: Synthesise subquery columns
commit_hash:40a2de243a67135e44505619fb766954ba24e2e8
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 8b732bd3913..2cb88c714a7 100644
--- a/yql/essentials/sql/v1/complete/sql_complete.cpp
+++ b/yql/essentials/sql/v1/complete/sql_complete.cpp
@@ -2,8 +2,11 @@
#include <yql/essentials/sql/v1/complete/syntax/grammar.h>
#include <yql/essentials/sql/v1/complete/text/word.h>
+#include <yql/essentials/sql/v1/complete/name/object/simple/static/schema.h>
#include <yql/essentials/sql/v1/complete/name/service/ranking/dummy.h>
#include <yql/essentials/sql/v1/complete/name/service/binding/name_service.h>
+#include <yql/essentials/sql/v1/complete/name/service/column/name_service.h>
+#include <yql/essentials/sql/v1/complete/name/service/schema/name_service.h>
#include <yql/essentials/sql/v1/complete/name/service/static/name_service.h>
#include <yql/essentials/sql/v1/complete/name/service/union/name_service.h>
#include <yql/essentials/sql/v1/complete/syntax/format.h>
@@ -61,7 +64,13 @@ namespace NSQLComplete {
}
TVector<INameService::TPtr> children;
+
children.emplace_back(MakeBindingNameService(std::move(global.Names)));
+
+ if (!context.Binding && global.Column) {
+ children.emplace_back(MakeColumnNameService(std::move(global.Column->Columns)));
+ }
+
if (!context.Binding) {
children.emplace_back(Names_);
}
@@ -300,7 +309,11 @@ namespace NSQLComplete {
}
if constexpr (std::is_base_of_v<TColumnName, T>) {
- const TString& alias = aliasByTable.at(name.Table);
+ TString alias = name.Table.Path;
+ if (auto it = aliasByTable.find(name.Table); it != end(aliasByTable)) {
+ alias = it->second;
+ }
+
if (context.Column->Table.empty() && !alias.empty()) {
name.Indentifier.prepend('.');
name.Indentifier.prepend(alias);