summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/complete/analysis/global/use.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/use.cpp
parent8fe7cfe254fde2772477a8933a163b5f303716b4 (diff)
YQL-20086 sql/v1
commit_hash:55bc611cdaa0d8a0fc3c4c7708ed9f17cc4976cf
Diffstat (limited to 'yql/essentials/sql/v1/complete/analysis/global/use.cpp')
-rw-r--r--yql/essentials/sql/v1/complete/analysis/global/use.cpp172
1 files changed, 86 insertions, 86 deletions
diff --git a/yql/essentials/sql/v1/complete/analysis/global/use.cpp b/yql/essentials/sql/v1/complete/analysis/global/use.cpp
index 89e5ae458e6..58b6b13bb09 100644
--- a/yql/essentials/sql/v1/complete/analysis/global/use.cpp
+++ b/yql/essentials/sql/v1/complete/analysis/global/use.cpp
@@ -5,111 +5,111 @@
namespace NSQLComplete {
- namespace {
-
- class TVisitor: public TSQLv1NarrowingVisitor {
- public:
- TVisitor(const TParsedInput& input, const TNamedNodes* nodes)
- : TSQLv1NarrowingVisitor(input)
- , Nodes_(nodes)
- {
- }
-
- std::any visitSql_stmt_core(SQLv1::Sql_stmt_coreContext* ctx) override {
- if (ctx->use_stmt() || IsEnclosing(ctx)) {
- return visitChildren(ctx);
- }
- return {};
- }
-
- std::any visitUse_stmt(SQLv1::Use_stmtContext* ctx) override {
- SQLv1::Cluster_exprContext* expr = ctx->cluster_expr();
- if (!expr) {
- return {};
- }
-
- TMaybe<TClusterContext> cluster = ParseClusterContext(expr, *Nodes_);
- if (!cluster) {
- return {};
- }
+namespace {
+
+class TVisitor: public TSQLv1NarrowingVisitor {
+public:
+ TVisitor(const TParsedInput& input, const TNamedNodes* nodes)
+ : TSQLv1NarrowingVisitor(input)
+ , Nodes_(nodes)
+ {
+ }
- return *cluster;
- }
+ std::any visitSql_stmt_core(SQLv1::Sql_stmt_coreContext* ctx) override {
+ if (ctx->use_stmt() || IsEnclosing(ctx)) {
+ return visitChildren(ctx);
+ }
+ return {};
+ }
- private:
- const TNamedNodes* Nodes_;
- };
+ std::any visitUse_stmt(SQLv1::Use_stmtContext* ctx) override {
+ SQLv1::Cluster_exprContext* expr = ctx->cluster_expr();
+ if (!expr) {
+ return {};
+ }
- class TClusterVisitor: public TSQLv1BaseVisitor {
- public:
- explicit TClusterVisitor(const TNamedNodes* nodes)
- : Nodes_(nodes)
- {
- }
+ TMaybe<TClusterContext> cluster = ParseClusterContext(expr, *Nodes_);
+ if (!cluster) {
+ return {};
+ }
- std::any visitCluster_expr(SQLv1::Cluster_exprContext* ctx) {
- std::string provider;
- std::string cluster;
+ return *cluster;
+ }
- if (SQLv1::An_idContext* id = ctx->an_id()) {
- provider = id->getText();
- }
+private:
+ const TNamedNodes* Nodes_;
+};
- if (SQLv1::Pure_column_or_namedContext* named = ctx->pure_column_or_named()) {
- if (auto id = GetId(named)) {
- cluster = std::move(*id);
- }
- }
+class TClusterVisitor: public TSQLv1BaseVisitor {
+public:
+ explicit TClusterVisitor(const TNamedNodes* nodes)
+ : Nodes_(nodes)
+ {
+ }
- if (cluster.empty()) {
- return {};
- }
+ std::any visitCluster_expr(SQLv1::Cluster_exprContext* ctx) {
+ std::string provider;
+ std::string cluster;
- return TClusterContext{
- .Provider = std::move(provider),
- .Name = std::move(cluster),
- };
- }
+ if (SQLv1::An_idContext* id = ctx->an_id()) {
+ provider = id->getText();
+ }
- private:
- TMaybe<TString> GetId(SQLv1::Pure_column_or_namedContext* ctx) const {
- if (auto* x = ctx->bind_parameter()) {
- return GetId(x);
- } else if (auto* x = ctx->an_id()) {
- return x->getText();
- } else {
- Y_ABORT("You should change implementation according grammar changes");
- }
+ if (SQLv1::Pure_column_or_namedContext* named = ctx->pure_column_or_named()) {
+ if (auto id = GetId(named)) {
+ cluster = std::move(*id);
}
+ }
- TMaybe<TString> GetId(SQLv1::Bind_parameterContext* ctx) const {
- NYT::TNode node = Evaluate(ctx, *Nodes_);
- if (!node.HasValue() || !node.IsString()) {
- return Nothing();
- }
- return node.AsString();
- }
+ if (cluster.empty()) {
+ return {};
+ }
- const TNamedNodes* Nodes_;
+ return TClusterContext{
+ .Provider = std::move(provider),
+ .Name = std::move(cluster),
};
+ }
- } // namespace
-
- TMaybe<TClusterContext> ParseClusterContext(SQLv1::Cluster_exprContext* ctx, const TNamedNodes& nodes) {
- std::any result = TClusterVisitor(&nodes).visit(ctx);
- if (!result.has_value()) {
- return Nothing();
+private:
+ TMaybe<TString> GetId(SQLv1::Pure_column_or_namedContext* ctx) const {
+ if (auto* x = ctx->bind_parameter()) {
+ return GetId(x);
+ } else if (auto* x = ctx->an_id()) {
+ return x->getText();
+ } else {
+ Y_ABORT("You should change implementation according grammar changes");
}
- return std::any_cast<TClusterContext>(result);
}
- // TODO(YQL-19747): Use any to maybe conversion function
- TMaybe<TClusterContext> FindUseStatement(TParsedInput input, const TNamedNodes& nodes) {
- std::any result = TVisitor(input, &nodes).visit(input.SqlQuery);
- if (!result.has_value()) {
+ TMaybe<TString> GetId(SQLv1::Bind_parameterContext* ctx) const {
+ NYT::TNode node = Evaluate(ctx, *Nodes_);
+ if (!node.HasValue() || !node.IsString()) {
return Nothing();
}
- return std::any_cast<TClusterContext>(result);
+ return node.AsString();
+ }
+
+ const TNamedNodes* Nodes_;
+};
+
+} // namespace
+
+TMaybe<TClusterContext> ParseClusterContext(SQLv1::Cluster_exprContext* ctx, const TNamedNodes& nodes) {
+ std::any result = TClusterVisitor(&nodes).visit(ctx);
+ if (!result.has_value()) {
+ return Nothing();
+ }
+ return std::any_cast<TClusterContext>(result);
+}
+
+// TODO(YQL-19747): Use any to maybe conversion function
+TMaybe<TClusterContext> FindUseStatement(TParsedInput input, const TNamedNodes& nodes) {
+ std::any result = TVisitor(input, &nodes).visit(input.SqlQuery);
+ if (!result.has_value()) {
+ return Nothing();
}
+ return std::any_cast<TClusterContext>(result);
+}
} // namespace NSQLComplete