summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/sql_select_yql.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'yql/essentials/sql/v1/sql_select_yql.cpp')
-rw-r--r--yql/essentials/sql/v1/sql_select_yql.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/yql/essentials/sql/v1/sql_select_yql.cpp b/yql/essentials/sql/v1/sql_select_yql.cpp
index 0fc2d3f327c..369e4f715f9 100644
--- a/yql/essentials/sql/v1/sql_select_yql.cpp
+++ b/yql/essentials/sql/v1/sql_select_yql.cpp
@@ -143,7 +143,7 @@ private:
return std::unexpected(ESQLError::Basic);
}
- TVector<TString> columns;
+ TVector<TYqlColumnRef> columns;
if (rule.HasBlock2()) {
columns = TableColumns(rule.GetBlock2().GetRule_pure_column_list1());
}
@@ -568,6 +568,7 @@ private:
}
Token(rule.GetToken2());
+ setItem.Position = Ctx_.Pos();
if (Mode_ != NSQLTranslation::ESqlMode::QUERY) {
return Unsupported("ESqlMode != QUERY");
@@ -1547,15 +1548,23 @@ private:
}
}
- TVector<TString> TableColumns(const TRule_pure_column_list& rule) {
- TVector<TString> columns;
- columns.emplace_back(Id(rule.GetRule_an_id2(), *this));
+ TVector<TYqlColumnRef> TableColumns(const TRule_pure_column_list& rule) {
+ TVector<TYqlColumnRef> columns(Reserve(1 + rule.GetBlock3().size()));
+ columns.emplace_back(TableColumn(rule.GetRule_an_id2()));
for (const auto& id : rule.GetBlock3()) {
- columns.emplace_back(Id(id.GetRule_an_id2(), *this));
+ columns.emplace_back(TableColumn(id.GetRule_an_id2()));
}
return columns;
}
+ TYqlColumnRef TableColumn(const TRule_an_id& rule) {
+ TString id = Id(rule, *this);
+ return {
+ .Position = Ctx_.Pos(),
+ .Name = std::move(id),
+ };
+ }
+
EYqlSetOp ToOp(const TRule_union_op& node) {
const TString token = ToLowerUTF8(node.GetToken1().GetValue());