diff options
author | flown4qqqq <[email protected]> | 2025-02-05 22:20:57 +0300 |
---|---|---|
committer | flown4qqqq <[email protected]> | 2025-02-05 22:40:05 +0300 |
commit | 2fafd6772a4b43efae52727fded1faa51113be46 (patch) | |
tree | 7ce383f52366f828d631a70f51a4330a27daf09a /yql/essentials/sql/v1/query.cpp | |
parent | 11b913e7a551a59247de97b626f909a5699ea8a1 (diff) |
init commit
commit_hash:0564ecb94145bde9e411b0f6786c93e4e5d1d503
Diffstat (limited to 'yql/essentials/sql/v1/query.cpp')
-rw-r--r-- | yql/essentials/sql/v1/query.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/yql/essentials/sql/v1/query.cpp b/yql/essentials/sql/v1/query.cpp index f80398b6cee..0b8b7c07a7b 100644 --- a/yql/essentials/sql/v1/query.cpp +++ b/yql/essentials/sql/v1/query.cpp @@ -1314,6 +1314,72 @@ TNodePtr BuildCreateTable(TPosition pos, const TTableRef& tr, bool existingOk, b return new TCreateTableNode(pos, tr, existingOk, replaceIfExists, params, std::move(values), scoped); } +class TAlterDatabaseNode final : public TAstListNode { +public: + TAlterDatabaseNode( + TPosition pos, + const TString& service, + const TDeferredAtom& cluster, + const TAlterDatabaseParameters& params, + TScopedStatePtr scoped + ) + : TAstListNode(pos) + , Params(params) + , Scoped(scoped) + , Cluster(cluster) + , Service(service) + { + scoped->UseCluster(service, cluster); + } + + bool DoInit(TContext& ctx, ISource* src) override { + TNodePtr cluster = Scoped->WrapCluster(Cluster, ctx); + + auto options = Y(Q(Y(Q("mode"), Q("alterDatabase")))); + + options = L(options, Q(Y(Q("dbPath"), Q(Params.DbPath)))); + + if (Params.Owner.has_value()) { + options = L(options, Q(Y(Q("owner"), Q(Params.Owner.value().Build())))); + } + + Add("block", Q(Y( + Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Service), cluster)), + Y("let", "world", Y(TString(WriteName), "world", "sink", Q(options))), + Y("return", ctx.PragmaAutoCommit ? Y(TString(CommitName), "world", "sink") : AstNode("world")) + ))); + + return TAstListNode::DoInit(ctx, src); + } + + TPtr DoClone() const final { + return {}; + } + +private: + const TAlterDatabaseParameters Params; + TScopedStatePtr Scoped; + TDeferredAtom Cluster; + TString Service; +}; + +TNodePtr BuildAlterDatabase( + TPosition pos, + const TString& service, + const TDeferredAtom& cluster, + const TAlterDatabaseParameters& params, + TScopedStatePtr scoped +) { + return new TAlterDatabaseNode( + pos, + service, + cluster, + params, + scoped + ); +} + + class TAlterTableNode final : public TAstListNode { public: TAlterTableNode(TPosition pos, const TTableRef& tr, const TAlterTableParameters& params, TScopedStatePtr scoped) |