Skip to content

Commit

Permalink
Extract prefix and entries in backup-related sql (#10807)
Browse files Browse the repository at this point in the history
  • Loading branch information
Enjection authored Oct 24, 2024
1 parent 68f8cc3 commit 5523f7c
Show file tree
Hide file tree
Showing 5 changed files with 109 additions and 55 deletions.
25 changes: 20 additions & 5 deletions ydb/library/yql/sql/v1/node.h
Original file line number Diff line number Diff line change
Expand Up @@ -1534,20 +1534,35 @@ namespace NSQLTranslationV1 {
TNodePtr BuildDropTopic(TPosition pos, const TTopicRef& topic, const TDropTopicParameters& params,
TScopedStatePtr scoped);

TNodePtr BuildCreateBackupCollection(TPosition pos, const TString& id,
TNodePtr BuildCreateBackupCollection(
TPosition pos,
const TString& prefix,
const TString& id,
const TCreateBackupCollectionParameters& params,
const TObjectOperatorContext& context);
TNodePtr BuildAlterBackupCollection(TPosition pos, const TString& id,
TNodePtr BuildAlterBackupCollection(
TPosition pos,
const TString& prefix,
const TString& id,
const TAlterBackupCollectionParameters& params,
const TObjectOperatorContext& context);
TNodePtr BuildDropBackupCollection(TPosition pos, const TString& id,
TNodePtr BuildDropBackupCollection(
TPosition pos,
const TString& prefix,
const TString& id,
const TDropBackupCollectionParameters& params,
const TObjectOperatorContext& context);

TNodePtr BuildBackup(TPosition pos, const TString& id,
TNodePtr BuildBackup(
TPosition pos,
const TString& prefix,
const TString& id,
const TBackupParameters& params,
const TObjectOperatorContext& context);
TNodePtr BuildRestore(TPosition pos, const TString& id,
TNodePtr BuildRestore(
TPosition pos,
const TString& prefix,
const TString& id,
const TRestoreParameters& params,
const TObjectOperatorContext& context);

Expand Down
78 changes: 53 additions & 25 deletions ydb/library/yql/sql/v1/query.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3286,16 +3286,18 @@ class TBaseBackupCollectionNode
public:
TBaseBackupCollectionNode(
TPosition pos,
const TString& prefix,
const TString& objectId,
const TObjectOperatorContext& context)
: TBase(pos)
, TObjectOperatorContext(context)
, Prefix(prefix)
, Id(objectId)
{}

bool DoInit(TContext& ctx, ISource* src) final {
auto keys = Y("Key");
keys = L(keys, Q(Y(Q("backupCollection"), Y("String", BuildQuotedAtom(Pos, Id)))));
keys = L(keys, Q(Y(Q("backupCollection"), Y("String", BuildQuotedAtom(Pos, Id)), Y("String", BuildQuotedAtom(Pos, Prefix)))));
auto options = this->FillOptions(ctx, Y());

Add("block", Q(Y(
Expand All @@ -3310,6 +3312,7 @@ class TBaseBackupCollectionNode
virtual INode::TPtr FillOptions(TContext& ctx, INode::TPtr options) const = 0;

protected:
TString Prefix;
TString Id;
};

Expand All @@ -3320,10 +3323,11 @@ class TCreateBackupCollectionNode
public:
TCreateBackupCollectionNode(
TPosition pos,
const TString& prefix,
const TString& objectId,
const TCreateBackupCollectionParameters& params,
const TObjectOperatorContext& context)
: TBase(pos, objectId, context)
: TBase(pos, prefix, objectId, context)
, Params(params)
{}

Expand All @@ -3332,7 +3336,7 @@ class TCreateBackupCollectionNode

auto settings = Y();
for (auto& [key, value] : Params.Settings) {
settings->Add(Q(Y(BuildQuotedAtom(Pos, key), value.Build())));
settings->Add(Q(Y(BuildQuotedAtom(Pos, key), Y("String", value.Build()))));
}
options->Add(Q(Y(Q("settings"), Q(settings))));

Expand All @@ -3350,7 +3354,7 @@ class TCreateBackupCollectionNode
}

TPtr DoClone() const final {
return new TCreateBackupCollectionNode(GetPos(), Id, Params, *this);
return new TCreateBackupCollectionNode(GetPos(), Prefix, Id, Params, *this);
}

private:
Expand All @@ -3364,10 +3368,11 @@ class TAlterBackupCollectionNode
public:
TAlterBackupCollectionNode(
TPosition pos,
const TString& prefix,
const TString& objectId,
const TAlterBackupCollectionParameters& params,
const TObjectOperatorContext& context)
: TBase(pos, objectId, context)
: TBase(pos, prefix, objectId, context)
, Params(params)
{}

Expand All @@ -3376,7 +3381,7 @@ class TAlterBackupCollectionNode

auto settings = Y();
for (auto& [key, value] : Params.Settings) {
settings->Add(Q(Y(BuildQuotedAtom(Pos, key), value.Build())));
settings->Add(Q(Y(BuildQuotedAtom(Pos, key), Y("String", value.Build()))));
}
options->Add(Q(Y(Q("settings"), Q(settings))));

Expand Down Expand Up @@ -3404,7 +3409,7 @@ class TAlterBackupCollectionNode
}

TPtr DoClone() const final {
return new TAlterBackupCollectionNode(GetPos(), Id, Params, *this);
return new TAlterBackupCollectionNode(GetPos(), Prefix, Id, Params, *this);
}

private:
Expand All @@ -3418,10 +3423,11 @@ class TDropBackupCollectionNode
public:
TDropBackupCollectionNode(
TPosition pos,
const TString& prefix,
const TString& objectId,
const TDropBackupCollectionParameters&,
const TObjectOperatorContext& context)
: TBase(pos, objectId, context)
: TBase(pos, prefix, objectId, context)
{}

virtual INode::TPtr FillOptions(TContext&, INode::TPtr options) const final {
Expand All @@ -3432,29 +3438,38 @@ class TDropBackupCollectionNode

TPtr DoClone() const final {
TDropBackupCollectionParameters params;
return new TDropBackupCollectionNode(GetPos(), Id, params, *this);
return new TDropBackupCollectionNode(GetPos(), Prefix, Id, params, *this);
}
};

TNodePtr BuildCreateBackupCollection(TPosition pos, const TString& id,
TNodePtr BuildCreateBackupCollection(
TPosition pos,
const TString& prefix,
const TString& id,
const TCreateBackupCollectionParameters& params,
const TObjectOperatorContext& context)
{
return new TCreateBackupCollectionNode(pos, id, params, context);
return new TCreateBackupCollectionNode(pos, prefix, id, params, context);
}

TNodePtr BuildAlterBackupCollection(TPosition pos, const TString& id,
TNodePtr BuildAlterBackupCollection(
TPosition pos,
const TString& prefix,
const TString& id,
const TAlterBackupCollectionParameters& params,
const TObjectOperatorContext& context)
{
return new TAlterBackupCollectionNode(pos, id, params, context);
return new TAlterBackupCollectionNode(pos, prefix, id, params, context);
}

TNodePtr BuildDropBackupCollection(TPosition pos, const TString& id,
TNodePtr BuildDropBackupCollection(
TPosition pos,
const TString& prefix,
const TString& id,
const TDropBackupCollectionParameters& params,
const TObjectOperatorContext& context)
{
return new TDropBackupCollectionNode(pos, id, params, context);
return new TDropBackupCollectionNode(pos, prefix, id, params, context);
}

class TBackupNode final
Expand All @@ -3465,11 +3480,13 @@ class TBackupNode final
public:
TBackupNode(
TPosition pos,
const TString& prefix,
const TString& id,
const TBackupParameters& params,
const TObjectOperatorContext& context)
: TBase(pos)
, TObjectOperatorContext(context)
, Prefix(prefix)
, Id(id)
, Params(params)
{
Expand All @@ -3478,13 +3495,14 @@ class TBackupNode final

bool DoInit(TContext& ctx, ISource* src) override {
auto keys = Y("Key");
keys = L(keys, Q(Y(Q("backup"), Y("String", BuildQuotedAtom(Pos, Id)))));
keys = L(keys, Q(Y(Q("backup"), Y("String", BuildQuotedAtom(Pos, Id)), Y("String", BuildQuotedAtom(Pos, Prefix)))));

auto opts = Y();
opts->Add(Q(Y(Q("mode"), Q("backup"))));

if (Params.Incremental) {
opts->Add(Q(Y(Q("incremental"))));
opts->Add(Q(Y(Q("mode"), Q("backupIncremental"))));
} else {
opts->Add(Q(Y(Q("mode"), Q("backup"))));
}

Add("block", Q(Y(
Expand All @@ -3497,18 +3515,22 @@ class TBackupNode final
}

TPtr DoClone() const final {
return new TBackupNode(GetPos(), Id, Params, *this);
return new TBackupNode(GetPos(), Prefix, Id, Params, *this);
}
private:
TString Prefix;
TString Id;
TBackupParameters Params;
};

TNodePtr BuildBackup(TPosition pos, const TString& id,
TNodePtr BuildBackup(
TPosition pos,
const TString& prefix,
const TString& id,
const TBackupParameters& params,
const TObjectOperatorContext& context)
{
return new TBackupNode(pos, id, params, context);
return new TBackupNode(pos, prefix, id, params, context);
}

class TRestoreNode final
Expand All @@ -3519,11 +3541,13 @@ class TRestoreNode final
public:
TRestoreNode(
TPosition pos,
const TString& prefix,
const TString& id,
const TRestoreParameters& params,
const TObjectOperatorContext& context)
: TBase(pos)
, TObjectOperatorContext(context)
, Prefix(prefix)
, Id(id)
, Params(params)
{
Expand All @@ -3532,7 +3556,7 @@ class TRestoreNode final

bool DoInit(TContext& ctx, ISource* src) override {
auto keys = Y("Key");
keys = L(keys, Q(Y(Q("restore"), Y("String", BuildQuotedAtom(Pos, Id)))));
keys = L(keys, Q(Y(Q("restore"), Y("String", BuildQuotedAtom(Pos, Id)), Y("String", BuildQuotedAtom(Pos, Prefix)))));

auto opts = Y();
opts->Add(Q(Y(Q("mode"), Q("restore"))));
Expand All @@ -3551,18 +3575,22 @@ class TRestoreNode final
}

TPtr DoClone() const final {
return new TRestoreNode(GetPos(), Id, Params, *this);
return new TRestoreNode(GetPos(), Prefix, Id, Params, *this);
}
private:
TString Prefix;
TString Id;
TRestoreParameters Params;
};

TNodePtr BuildRestore(TPosition pos, const TString& id,
TNodePtr BuildRestore(
TPosition pos,
const TString& prefix,
const TString& id,
const TRestoreParameters& params,
const TObjectOperatorContext& context)
{
return new TRestoreNode(pos, id, params, context);
return new TRestoreNode(pos, prefix, id, params, context);
}

} // namespace NSQLTranslationV1
15 changes: 10 additions & 5 deletions ydb/library/yql/sql/v1/sql_query.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1414,7 +1414,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core&
const TString& objectId = Id(node.GetRule_backup_collection2().GetRule_object_ref3().GetRule_id_or_at2(), *this).second;
AddStatementToBlocks(blocks,
BuildCreateBackupCollection(Ctx.Pos(),
BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), objectId),
TString(Ctx.GetPrefixPath(context.ServiceId, context.Cluster)),
objectId,
TCreateBackupCollectionParameters {
.Settings = std::move(kv),
.Database = database,
Expand Down Expand Up @@ -1476,7 +1477,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core&
const TString& objectId = Id(node.GetRule_backup_collection2().GetRule_object_ref3().GetRule_id_or_at2(), *this).second;
AddStatementToBlocks(blocks,
BuildAlterBackupCollection(Ctx.Pos(),
BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), objectId),
TString(Ctx.GetPrefixPath(context.ServiceId, context.Cluster)),
objectId,
TAlterBackupCollectionParameters {
.Settings = std::move(kv),
.SettingsToReset = std::move(toReset),
Expand Down Expand Up @@ -1504,7 +1506,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core&
const TString& objectId = Id(node.GetRule_backup_collection2().GetRule_object_ref3().GetRule_id_or_at2(), *this).second;
AddStatementToBlocks(blocks,
BuildDropBackupCollection(Ctx.Pos(),
BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), objectId),
TString(Ctx.GetPrefixPath(context.ServiceId, context.Cluster)),
objectId,
TDropBackupCollectionParameters {
.MissingOk = false,
},
Expand Down Expand Up @@ -1624,7 +1627,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core&
AddStatementToBlocks(blocks,
BuildBackup(
Ctx.Pos(),
BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), objectId),
TString(Ctx.GetPrefixPath(context.ServiceId, context.Cluster)),
objectId,
TBackupParameters{
.Incremental = incremental,
},
Expand Down Expand Up @@ -1656,7 +1660,8 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core&
AddStatementToBlocks(blocks,
BuildRestore(
Ctx.Pos(),
BuildTablePath(Ctx.GetPrefixPath(context.ServiceId, context.Cluster), objectId),
TString(Ctx.GetPrefixPath(context.ServiceId, context.Cluster)),
objectId,
TRestoreParameters{
.At = at,
},
Expand Down
Loading

0 comments on commit 5523f7c

Please sign in to comment.