summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/complete/analysis/global/named_node.cpp
diff options
context:
space:
mode:
authorvitya-smirnov <[email protected]>2025-10-07 09:34:39 +0300
committervitya-smirnov <[email protected]>2025-10-07 09:52:14 +0300
commitbabe7533f18c11be1f8a195ed2324d2d9a89436a (patch)
tree45b7627141bf5a52b45a3d61fd1fbdd564bb8dd9 /yql/essentials/sql/v1/complete/analysis/global/named_node.cpp
parent8fe7cfe254fde2772477a8933a163b5f303716b4 (diff)
YQL-20086 sql/v1
commit_hash:55bc611cdaa0d8a0fc3c4c7708ed9f17cc4976cf
Diffstat (limited to 'yql/essentials/sql/v1/complete/analysis/global/named_node.cpp')
-rw-r--r--yql/essentials/sql/v1/complete/analysis/global/named_node.cpp310
1 files changed, 155 insertions, 155 deletions
diff --git a/yql/essentials/sql/v1/complete/analysis/global/named_node.cpp b/yql/essentials/sql/v1/complete/analysis/global/named_node.cpp
index 4199da625c2..8a52a90424c 100644
--- a/yql/essentials/sql/v1/complete/analysis/global/named_node.cpp
+++ b/yql/essentials/sql/v1/complete/analysis/global/named_node.cpp
@@ -10,161 +10,161 @@
namespace NSQLComplete {
- namespace {
-
- class TVisitor: public TSQLv1NarrowingVisitor {
- public:
- TVisitor(const TParsedInput& input, TNamedNodes* names, const TEnvironment* env)
- : TSQLv1NarrowingVisitor(input)
- , Names_(names)
- , Env_(env)
- {
- }
-
- std::any visitSql_stmt_core(SQLv1::Sql_stmt_coreContext* ctx) override {
- if (ctx->declare_stmt() ||
- ctx->import_stmt() ||
- ctx->define_action_or_subquery_stmt() ||
- ctx->named_nodes_stmt() ||
- IsEnclosing(ctx)) {
- return visitChildren(ctx);
- }
- return {};
- }
-
- std::any visitDeclare_stmt(SQLv1::Declare_stmtContext* ctx) override {
- auto* parameter = ctx->bind_parameter();
- if (!parameter) {
- return {};
- }
-
- TMaybe<std::string> id = GetName(parameter);
- if (id.Empty() || id == "_") {
- return {};
- }
-
- id->insert(0, "$");
- const NYT::TNode* node = Env_->Parameters.FindPtr(*id);
- id->erase(0, 1);
-
- if (node) {
- (*Names_)[*id] = *node;
- } else {
- (*Names_)[*id] = std::monostate();
- }
-
- return {};
- }
-
- std::any visitImport_stmt(SQLv1::Import_stmtContext* ctx) override {
- VisitNullableCollecting(ctx->named_bind_parameter_list());
- return {};
- }
-
- std::any visitDefine_action_or_subquery_stmt(
- SQLv1::Define_action_or_subquery_stmtContext* ctx) override {
- VisitNullableCollecting(ctx->bind_parameter());
- if (IsEnclosing(ctx)) {
- VisitNullableCollecting(ctx->action_or_subquery_args());
- return visitChildren(ctx);
- }
- return {};
- }
-
- std::any visitNamed_nodes_stmt(SQLv1::Named_nodes_stmtContext* ctx) override {
- VisitNullableCollecting(ctx->bind_parameter_list());
- if (IsEnclosing(ctx)) {
- visitChildren(ctx);
- }
-
- auto* list = ctx->bind_parameter_list();
- if (!list) {
- return {};
- }
-
- auto parameters = list->bind_parameter();
- if (parameters.size() != 1) {
- return {};
- }
-
- auto* parameter = parameters[0];
- if (!parameter) {
- return {};
- }
-
- TMaybe<std::string> id = GetName(parameter);
- if (id.Empty() || id == "_") {
- return {};
- }
-
- if (auto* expr = ctx->expr()) {
- (*Names_)[std::move(*id)] = expr;
- } else {
- (*Names_)[std::move(*id)] = std::monostate();
- }
-
- return {};
- }
-
- std::any visitFor_stmt(SQLv1::For_stmtContext* ctx) override {
- VisitNullableCollecting(ctx->bind_parameter());
- if (IsEnclosing(ctx)) {
- return visitChildren(ctx);
- }
- return {};
- }
-
- std::any visitLambda(SQLv1::LambdaContext* ctx) override {
- VisitNullableCollecting(ctx->smart_parenthesis());
- if (IsEnclosing(ctx)) {
- return visitChildren(ctx);
- }
- return {};
- }
-
- std::any visitNamed_bind_parameter(
- SQLv1::Named_bind_parameterContext* ctx) override {
- VisitNullableCollecting(ctx->bind_parameter(0));
- return {};
- }
-
- std::any visitBind_parameter(SQLv1::Bind_parameterContext* ctx) override {
- if (IsEnclosing(ctx) || !IsCollecting_) {
- return {};
- }
-
- TMaybe<std::string> id = GetName(ctx);
- if (id.Empty() || id == "_") {
- return {};
- }
-
- (*Names_)[std::move(*id)] = std::monostate();
- return {};
- }
-
- private:
- void VisitNullableCollecting(antlr4::tree::ParseTree* tree) {
- if (tree == nullptr) {
- return;
- }
-
- const bool old = IsCollecting_;
- IsCollecting_ = true;
- visit(tree);
- IsCollecting_ = old;
- }
-
- TNamedNodes* Names_;
- const TEnvironment* Env_;
- bool IsCollecting_ = false;
- };
-
- } // namespace
-
- TNamedNodes CollectNamedNodes(TParsedInput input, const TEnvironment& env) {
- TNamedNodes names;
- TVisitor(input, &names, &env).visit(input.SqlQuery);
- return names;
+namespace {
+
+class TVisitor: public TSQLv1NarrowingVisitor {
+public:
+ TVisitor(const TParsedInput& input, TNamedNodes* names, const TEnvironment* env)
+ : TSQLv1NarrowingVisitor(input)
+ , Names_(names)
+ , Env_(env)
+ {
}
+ std::any visitSql_stmt_core(SQLv1::Sql_stmt_coreContext* ctx) override {
+ if (ctx->declare_stmt() ||
+ ctx->import_stmt() ||
+ ctx->define_action_or_subquery_stmt() ||
+ ctx->named_nodes_stmt() ||
+ IsEnclosing(ctx)) {
+ return visitChildren(ctx);
+ }
+ return {};
+ }
+
+ std::any visitDeclare_stmt(SQLv1::Declare_stmtContext* ctx) override {
+ auto* parameter = ctx->bind_parameter();
+ if (!parameter) {
+ return {};
+ }
+
+ TMaybe<std::string> id = GetName(parameter);
+ if (id.Empty() || id == "_") {
+ return {};
+ }
+
+ id->insert(0, "$");
+ const NYT::TNode* node = Env_->Parameters.FindPtr(*id);
+ id->erase(0, 1);
+
+ if (node) {
+ (*Names_)[*id] = *node;
+ } else {
+ (*Names_)[*id] = std::monostate();
+ }
+
+ return {};
+ }
+
+ std::any visitImport_stmt(SQLv1::Import_stmtContext* ctx) override {
+ VisitNullableCollecting(ctx->named_bind_parameter_list());
+ return {};
+ }
+
+ std::any visitDefine_action_or_subquery_stmt(
+ SQLv1::Define_action_or_subquery_stmtContext* ctx) override {
+ VisitNullableCollecting(ctx->bind_parameter());
+ if (IsEnclosing(ctx)) {
+ VisitNullableCollecting(ctx->action_or_subquery_args());
+ return visitChildren(ctx);
+ }
+ return {};
+ }
+
+ std::any visitNamed_nodes_stmt(SQLv1::Named_nodes_stmtContext* ctx) override {
+ VisitNullableCollecting(ctx->bind_parameter_list());
+ if (IsEnclosing(ctx)) {
+ visitChildren(ctx);
+ }
+
+ auto* list = ctx->bind_parameter_list();
+ if (!list) {
+ return {};
+ }
+
+ auto parameters = list->bind_parameter();
+ if (parameters.size() != 1) {
+ return {};
+ }
+
+ auto* parameter = parameters[0];
+ if (!parameter) {
+ return {};
+ }
+
+ TMaybe<std::string> id = GetName(parameter);
+ if (id.Empty() || id == "_") {
+ return {};
+ }
+
+ if (auto* expr = ctx->expr()) {
+ (*Names_)[std::move(*id)] = expr;
+ } else {
+ (*Names_)[std::move(*id)] = std::monostate();
+ }
+
+ return {};
+ }
+
+ std::any visitFor_stmt(SQLv1::For_stmtContext* ctx) override {
+ VisitNullableCollecting(ctx->bind_parameter());
+ if (IsEnclosing(ctx)) {
+ return visitChildren(ctx);
+ }
+ return {};
+ }
+
+ std::any visitLambda(SQLv1::LambdaContext* ctx) override {
+ VisitNullableCollecting(ctx->smart_parenthesis());
+ if (IsEnclosing(ctx)) {
+ return visitChildren(ctx);
+ }
+ return {};
+ }
+
+ std::any visitNamed_bind_parameter(
+ SQLv1::Named_bind_parameterContext* ctx) override {
+ VisitNullableCollecting(ctx->bind_parameter(0));
+ return {};
+ }
+
+ std::any visitBind_parameter(SQLv1::Bind_parameterContext* ctx) override {
+ if (IsEnclosing(ctx) || !IsCollecting_) {
+ return {};
+ }
+
+ TMaybe<std::string> id = GetName(ctx);
+ if (id.Empty() || id == "_") {
+ return {};
+ }
+
+ (*Names_)[std::move(*id)] = std::monostate();
+ return {};
+ }
+
+private:
+ void VisitNullableCollecting(antlr4::tree::ParseTree* tree) {
+ if (tree == nullptr) {
+ return;
+ }
+
+ const bool old = IsCollecting_;
+ IsCollecting_ = true;
+ visit(tree);
+ IsCollecting_ = old;
+ }
+
+ TNamedNodes* Names_;
+ const TEnvironment* Env_;
+ bool IsCollecting_ = false;
+};
+
+} // namespace
+
+TNamedNodes CollectNamedNodes(TParsedInput input, const TEnvironment& env) {
+ TNamedNodes names;
+ TVisitor(input, &names, &env).visit(input.SqlQuery);
+ return names;
+}
+
} // namespace NSQLComplete