Skip to content

Commit f9eed97

Browse files
committed
Revert "New statement 'ALTER DATABASE path OWNER TO newowner' (#14403)"
This reverts commit 527e9d0.
1 parent 0178a2a commit f9eed97

25 files changed

+137
-718
lines changed

ydb/core/kqp/gateway/kqp_ic_gateway.cpp

Lines changed: 5 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,9 @@ namespace {
722722
}
723723

724724
class TKikimrIcGateway : public IKqpGateway {
725+
private:
726+
using TNavigate = NSchemeCache::TSchemeCacheNavigate;
727+
725728
public:
726729
TKikimrIcGateway(const TString& cluster, NKikimrKqp::EQueryType queryType, const TString& database, const TString& databaseId, std::shared_ptr<IKqpTableMetadataLoader>&& metadataLoader,
727730
TActorSystem* actorSystem, ui32 nodeId, TKqpRequestCounters::TPtr counters, const NKikimrConfig::TQueryServiceConfig& queryServiceConfig)
@@ -896,48 +899,6 @@ class TKikimrIcGateway : public IKqpGateway {
896899
return tablePromise.GetFuture();
897900
}
898901

899-
TFuture<TGenericResult> AlterDatabase(const TString& cluster, const NYql::TAlterDatabaseSettings& settings) override {
900-
using TRequest = TEvTxUserProxy::TEvProposeTransaction;
901-
902-
try {
903-
if (!CheckCluster(cluster)) {
904-
return InvalidCluster<TGenericResult>(cluster);
905-
}
906-
907-
auto alterDatabasePromise = NewPromise<TGenericResult>();
908-
909-
auto ev = MakeHolder<TRequest>();
910-
911-
ev->Record.SetDatabaseName(Database);
912-
if (UserToken) {
913-
ev->Record.SetUserToken(UserToken->GetSerializedToken());
914-
}
915-
916-
const auto& [dirname, basename] = NSchemeHelpers::SplitPathByDirAndBaseNames(settings.DatabasePath);
917-
918-
NKikimrSchemeOp::TModifyScheme* modifyScheme = ev->Record.MutableTransaction()->MutableModifyScheme();
919-
modifyScheme->SetOperationType(NKikimrSchemeOp::ESchemeOpModifyACL);
920-
modifyScheme->SetWorkingDir(dirname);
921-
modifyScheme->MutableModifyACL()->SetNewOwner(settings.Owner.value());
922-
modifyScheme->MutableModifyACL()->SetName(basename);
923-
924-
auto condition = modifyScheme->AddApplyIf();
925-
condition->AddPathTypes(NKikimrSchemeOp::EPathType::EPathTypeSubDomain);
926-
condition->AddPathTypes(NKikimrSchemeOp::EPathType::EPathTypeExtSubDomain);
927-
928-
SendSchemeRequest(ev.Release()).Apply(
929-
[alterDatabasePromise](const TFuture<TGenericResult>& future) mutable {
930-
alterDatabasePromise.SetValue(future.GetValue());
931-
}
932-
);
933-
934-
return alterDatabasePromise.GetFuture();
935-
}
936-
catch (yexception& e) {
937-
return MakeFuture(ResultFromException<TGenericResult>(e));
938-
}
939-
}
940-
941902
TFuture<TGenericResult> CreateColumnTable(NYql::TKikimrTableMetadataPtr metadata,
942903
bool createDir, bool existingOk) override {
943904
Y_UNUSED(metadata);
@@ -1461,8 +1422,8 @@ class TKikimrIcGateway : public IKqpGateway {
14611422

14621423
SendSchemeRequest(ev.Release()).Apply(
14631424
[alterUserPromise](const TFuture<TGenericResult>& future) mutable {
1464-
alterUserPromise.SetValue(future.GetValue());
1465-
}
1425+
alterUserPromise.SetValue(future.GetValue());
1426+
}
14661427
);
14671428

14681429
return alterUserPromise.GetFuture();

ydb/core/kqp/host/kqp_gateway_proxy.cpp

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -632,38 +632,6 @@ class TKqpGatewayProxy : public IKikimrGateway {
632632
return Gateway->LoadTableMetadata(cluster, table, settings);
633633
}
634634

635-
TFuture<TGenericResult> AlterDatabase(const TString& cluster, const TAlterDatabaseSettings& settings) override {
636-
CHECK_PREPARED_DDL(AlterDatabase);
637-
638-
if (IsPrepare()) {
639-
auto alterDatabasePromise = NewPromise<TGenericResult>();
640-
641-
const auto& [dirname, basename] = NSchemeHelpers::SplitPathByDirAndBaseNames(settings.DatabasePath);
642-
643-
NKikimrSchemeOp::TModifyScheme schemeTx;
644-
schemeTx.SetOperationType(NKikimrSchemeOp::ESchemeOpModifyACL);
645-
schemeTx.SetWorkingDir(dirname);
646-
schemeTx.MutableModifyACL()->SetNewOwner(settings.Owner.value());
647-
schemeTx.MutableModifyACL()->SetName(basename);
648-
649-
auto condition = schemeTx.AddApplyIf();
650-
condition->AddPathTypes(NKikimrSchemeOp::EPathType::EPathTypeSubDomain);
651-
condition->AddPathTypes(NKikimrSchemeOp::EPathType::EPathTypeExtSubDomain);
652-
653-
auto& phyQuery = *SessionCtx->Query().PreparingQuery->MutablePhysicalQuery();
654-
auto& phyTx = *phyQuery.AddTransactions();
655-
phyTx.SetType(NKqpProto::TKqpPhyTx::TYPE_SCHEME);
656-
657-
phyTx.MutableSchemeOperation()->MutableModifyPermissions()->Swap(&schemeTx);
658-
TGenericResult result;
659-
result.SetSuccess();
660-
alterDatabasePromise.SetValue(result);
661-
return alterDatabasePromise.GetFuture();
662-
} else {
663-
return Gateway->AlterDatabase(cluster, settings);
664-
}
665-
}
666-
667635
TFuture<TGenericResult> CreateTable(TKikimrTableMetadataPtr metadata, bool createDir, bool existingOk, bool replaceIfExists) override {
668636
Y_UNUSED(replaceIfExists);
669637
CHECK_PREPARED_DDL(CreateTable);

ydb/core/kqp/provider/yql_kikimr_datasink.cpp

Lines changed: 1 addition & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -287,12 +287,6 @@ class TKiSinkIntentDeterminationTransformer: public TKiSinkVisitorTransformer {
287287
return TStatus::Ok;
288288
}
289289

290-
TStatus HandleAlterDatabase(TKiAlterDatabase node, TExprContext& ctx) override {
291-
Y_UNUSED(ctx);
292-
Y_UNUSED(node);
293-
return TStatus::Ok;
294-
}
295-
296290
TStatus HandleCreateTopic(TKiCreateTopic node, TExprContext& ctx) override {
297291
Y_UNUSED(ctx);
298292
Y_UNUSED(node);
@@ -621,8 +615,7 @@ class TKiSinkIntentDeterminationTransformer: public TKiSinkVisitorTransformer {
621615

622616
case TKikimrKey::Type::TableList:
623617
break;
624-
case TKikimrKey::Type::Database:
625-
return TStatus::Ok;
618+
626619
case TKikimrKey::Type::Role:
627620
return TStatus::Ok;
628621
case TKikimrKey::Type::Object:
@@ -797,10 +790,6 @@ class TKikimrDataSink : public TDataProviderBase
797790
}
798791

799792
bool CanExecute(const TExprNode& node) override {
800-
if (node.IsCallable(TKiAlterDatabase::CallableName())) {
801-
return true;
802-
}
803-
804793
if (node.IsCallable(TKiExecDataQuery::CallableName())) {
805794
return true;
806795
}
@@ -1241,23 +1230,6 @@ class TKikimrDataSink : public TDataProviderBase
12411230
YQL_ENSURE(key.Extract(*node->Child(2)), "Failed to extract ydb key.");
12421231

12431232
switch (key.GetKeyType()) {
1244-
case TKikimrKey::Type::Database: {
1245-
NCommon::TDatabaseSettings settings = NCommon::ParseDatabaseSettings(TExprList(node->Child(4)), ctx);
1246-
YQL_ENSURE(settings.Mode);
1247-
auto mode = settings.Mode.Cast();
1248-
1249-
if (mode == "alterDatabase") {
1250-
return Build<TKiAlterDatabase>(ctx, node->Pos())
1251-
.World(node->Child(0))
1252-
.DataSink(node->Child(1))
1253-
.DatabasePath().Build(key.GetDatabasePath())
1254-
.Settings(settings.Other)
1255-
.Done()
1256-
.Ptr();
1257-
}
1258-
1259-
break;
1260-
}
12611233
case TKikimrKey::Type::Table: {
12621234
NCommon::TWriteTableSettings settings = NCommon::ParseWriteTableSettings(TExprList(node->Child(4)), ctx);
12631235
YQL_ENSURE(settings.Mode);
@@ -2059,10 +2031,6 @@ IGraphTransformer::TStatus TKiSinkVisitorTransformer::DoTransform(TExprNode::TPt
20592031

20602032
auto callable = TCallable(input);
20612033

2062-
if (auto node = callable.Maybe<TKiAlterDatabase>()) {
2063-
return HandleAlterDatabase(node.Cast(), ctx);
2064-
}
2065-
20662034
if (auto node = callable.Maybe<TKiWriteTable>()) {
20672035
return HandleWriteTable(node.Cast(), ctx);
20682036
}

ydb/core/kqp/provider/yql_kikimr_datasource.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,6 @@ class TKiSourceIntentDeterminationTransformer: public TKiSourceVisitorTransforme
136136
private:
137137
TStatus HandleKey(const TStringBuf& cluster, const TKikimrKey& key) {
138138
switch (key.GetKeyType()) {
139-
case TKikimrKey::Type::Database:
140-
return TStatus::Ok;
141-
142139
case TKikimrKey::Type::Table:
143140
case TKikimrKey::Type::TableScheme: {
144141
auto& table = SessionCtx->Tables().GetOrAddTable(TString(cluster), SessionCtx->GetDatabase(),

ydb/core/kqp/provider/yql_kikimr_exec.cpp

Lines changed: 6 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -100,31 +100,13 @@ namespace {
100100
return permissionsSettings;
101101
}
102102

103-
TAlterDatabaseSettings ParseAlterDatabaseSettings(TKiAlterDatabase alterDatabase) {
104-
TAlterDatabaseSettings alterDatabaseSettings;
105-
YQL_ENSURE(alterDatabase.DatabasePath().Value().size() > 0);
106-
alterDatabaseSettings.DatabasePath = alterDatabase.DatabasePath().Value();
107-
108-
for (auto setting : alterDatabase.Settings()) {
109-
const auto& name = setting.Name().Value();
110-
111-
if (name == "owner") {
112-
alterDatabaseSettings.Owner = setting.Value().Cast<TCoAtom>().StringValue();
113-
} else {
114-
YQL_ENSURE(false);
115-
}
116-
}
117-
118-
return alterDatabaseSettings;
119-
}
120-
121103
TCreateUserSettings ParseCreateUserSettings(TKiCreateUser createUser) {
122104
TCreateUserSettings createUserSettings;
123105
createUserSettings.UserName = TString(createUser.UserName());
124106
createUserSettings.CanLogin = true;
125107

126108
for (auto setting : createUser.Settings()) {
127-
const auto& name = setting.Name().Value();
109+
auto name = setting.Name().Value();
128110
if (name == "password") {
129111
createUserSettings.Password = setting.Value().Cast<TCoAtom>().StringValue();
130112
} else if (name == "nullPassword") {
@@ -138,8 +120,6 @@ namespace {
138120
createUserSettings.CanLogin = true;
139121
} else if (name == "noLogin") {
140122
createUserSettings.CanLogin = false;
141-
} else {
142-
YQL_ENSURE(false);
143123
}
144124
}
145125
return createUserSettings;
@@ -150,7 +130,7 @@ namespace {
150130
alterUserSettings.UserName = TString(alterUser.UserName());
151131

152132
for (auto setting : alterUser.Settings()) {
153-
const auto& name = setting.Name().Value();
133+
auto name = setting.Name().Value();
154134
if (name == "password") {
155135
alterUserSettings.Password = setting.Value().Cast<TCoAtom>().StringValue();
156136
} else if (name == "nullPassword") {
@@ -164,8 +144,6 @@ namespace {
164144
alterUserSettings.CanLogin = true;
165145
} else if (name == "noLogin") {
166146
alterUserSettings.CanLogin = false;
167-
} else {
168-
YQL_ENSURE(false);
169147
}
170148
}
171149
return alterUserSettings;
@@ -1383,25 +1361,6 @@ class TKiSinkCallableExecutionTransformer : public TAsyncCallbackTransformer<TKi
13831361
return SyncOk();
13841362
}
13851363

1386-
if (auto maybeAlterDatabase = TMaybeNode<TKiAlterDatabase>(input)) {
1387-
auto requireStatus = RequireChild(*input, TKiExecDataQuery::idx_World);
1388-
if (requireStatus.Level != TStatus::Ok) {
1389-
return SyncStatus(requireStatus);
1390-
}
1391-
1392-
auto cluster = TString(maybeAlterDatabase.Cast().DataSink().Cluster());
1393-
TAlterDatabaseSettings alterDatabaseSettings = ParseAlterDatabaseSettings(maybeAlterDatabase.Cast());
1394-
1395-
auto future = Gateway->AlterDatabase(cluster, alterDatabaseSettings);
1396-
1397-
return WrapFuture(future,
1398-
[](const IKikimrGateway::TGenericResult& res, const TExprNode::TPtr& input, TExprContext& ctx) {
1399-
Y_UNUSED(res);
1400-
auto resultNode = ctx.NewWorld(input->Pos());
1401-
return resultNode;
1402-
}, "Executing ALTER DATABASE");
1403-
}
1404-
14051364
if (auto maybeCreate = TMaybeNode<TKiCreateTable>(input)) {
14061365
auto requireStatus = RequireChild(*input, 0);
14071366
if (requireStatus.Level != TStatus::Ok) {
@@ -1525,6 +1484,10 @@ class TKiSinkCallableExecutionTransformer : public TAsyncCallbackTransformer<TKi
15251484
auto resultNode = ctx.NewWorld(input->Pos());
15261485
return resultNode;
15271486
}, GetDropTableDebugString(tableTypeItem));
1487+
1488+
input->SetState(TExprNode::EState::ExecutionComplete);
1489+
input->SetResult(ctx.NewWorld(input->Pos()));
1490+
return SyncOk();
15281491
}
15291492

15301493
if (auto maybeAlter = TMaybeNode<TKiAlterTable>(input)) {

ydb/core/kqp/provider/yql_kikimr_expr_nodes.json

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,6 @@
2525
{"Index": 1, "Name": "Cluster", "Type": "TCoAtom"}
2626
]
2727
},
28-
{
29-
"Name": "TKiAlterDatabase",
30-
"Base": "TCallable",
31-
"Match": {"Type": "Callable", "Name": "KiAlterDatabase!"},
32-
"Children": [
33-
{"Index": 0, "Name": "World", "Type": "TExprBase"},
34-
{"Index": 1, "Name": "DataSink", "Type": "TKiDataSink"},
35-
{"Index": 2, "Name": "DatabasePath", "Type": "TCoAtom"},
36-
{"Index": 3, "Name": "Settings", "Type": "TCoNameValueTupleList"}
37-
]
38-
},
3928
{
4029
"Name": "TKiVersionedTable",
4130
"Base": "TExprBase",

ydb/core/kqp/provider/yql_kikimr_gateway.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -670,11 +670,6 @@ struct TKikimrTableMetadata : public TThrRefBase {
670670
}
671671
};
672672

673-
struct TAlterDatabaseSettings {
674-
TString DatabasePath;
675-
std::optional<TString> Owner;
676-
};
677-
678673
struct TCreateUserSettings {
679674
TString UserName;
680675
TString Password;
@@ -1149,8 +1144,6 @@ class IKikimrGateway : public TThrRefBase {
11491144
virtual NThreading::TFuture<TTableMetadataResult> LoadTableMetadata(
11501145
const TString& cluster, const TString& table, TLoadTableMetadataSettings settings) = 0;
11511146

1152-
virtual NThreading::TFuture<TGenericResult> AlterDatabase(const TString& cluster, const TAlterDatabaseSettings& settings) = 0;
1153-
11541147
virtual NThreading::TFuture<TGenericResult> CreateTable(TKikimrTableMetadataPtr metadata, bool createDir, bool existingOk = false, bool replaceIfExists = false) = 0;
11551148

11561149
virtual NThreading::TFuture<TGenericResult> SendSchemeExecuterRequest(const TString& cluster,

ydb/core/kqp/provider/yql_kikimr_opt_build.cpp

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -690,17 +690,6 @@ bool ExploreNode(TExprBase node, TExprContext& ctx, const TKiDataSink& dataSink,
690690
return true;
691691
}
692692

693-
if (auto maybeAlterDatabase = node.Maybe<TKiAlterDatabase>()) {
694-
auto alterDatabase = maybeAlterDatabase.Cast();
695-
if (!checkDataSink(alterDatabase.DataSink())) {
696-
return false;
697-
}
698-
699-
txRes.Ops.insert(node.Raw());
700-
txRes.AddTableOperation(BuildYdbOpNode(cluster, TYdbOperation::AlterDatabase, alterDatabase.Pos(), ctx));
701-
return true;
702-
}
703-
704693
if (node.Maybe<TCoCommit>()) {
705694
return true;
706695
}

ydb/core/kqp/provider/yql_kikimr_provider.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ struct TKikimrData {
4040
DataSourceNames.insert(TKiReadTableScheme::CallableName());
4141
DataSourceNames.insert(TKiReadTableList::CallableName());
4242

43-
DataSinkNames.insert(TKiAlterDatabase::CallableName());
44-
4543
DataSinkNames.insert(TKiWriteTable::CallableName());
4644
DataSinkNames.insert(TKiUpdateTable::CallableName());
4745
DataSinkNames.insert(TKiDeleteTable::CallableName());
@@ -115,7 +113,6 @@ struct TKikimrData {
115113
DataOps = ModifyOps | ReadOps;
116114

117115
SchemeOps =
118-
TYdbOperation::AlterDatabase |
119116
TYdbOperation::CreateTable |
120117
TYdbOperation::DropTable |
121118
TYdbOperation::AlterTable |
@@ -468,9 +465,6 @@ bool TKikimrKey::Extract(const TExprNode& key) {
468465
KeyType = Type::BackupCollection;
469466
Target = key.Child(0)->Child(1)->Child(0)->Content();
470467
ExplicitPrefix = key.Child(0)->Child(2)->Child(0)->Content();
471-
} else if (tagName == "databasePath") {
472-
KeyType = Type::Database;
473-
Target = key.Child(0)->Child(1)->Child(0)->Content();
474468
} else {
475469
Ctx.AddError(TIssue(Ctx.GetPosition(key.Child(0)->Pos()), TString("Unexpected tag for kikimr key: ") + tagName));
476470
return false;

ydb/core/kqp/provider/yql_kikimr_provider_impl.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ class TKiSinkVisitorTransformer : public TSyncTransformerBase {
3131
void Rewind() override {
3232
}
3333
private:
34-
virtual TStatus HandleAlterDatabase(NNodes::TKiAlterDatabase node, TExprContext& ctx) = 0;
35-
3634
virtual TStatus HandleWriteTable(NNodes::TKiWriteTable node, TExprContext& ctx) = 0;
3735
virtual TStatus HandleUpdateTable(NNodes::TKiUpdateTable node, TExprContext& ctx) = 0;
3836
virtual TStatus HandleDeleteTable(NNodes::TKiDeleteTable node, TExprContext& ctx) = 0;
@@ -93,7 +91,6 @@ class TKiSinkVisitorTransformer : public TSyncTransformerBase {
9391
class TKikimrKey {
9492
public:
9593
enum class Type {
96-
Database,
9794
Table,
9895
TableList,
9996
TableScheme,
@@ -133,12 +130,6 @@ class TKikimrKey {
133130
return Target;
134131
}
135132

136-
TString GetDatabasePath() const {
137-
Y_DEBUG_ABORT_UNLESS(KeyType.Defined());
138-
Y_DEBUG_ABORT_UNLESS(KeyType == Type::Database);
139-
return Target;
140-
}
141-
142133
TString GetTopicPath() const {
143134
Y_DEBUG_ABORT_UNLESS(KeyType.Defined());
144135
Y_DEBUG_ABORT_UNLESS(KeyType == Type::Topic);

0 commit comments

Comments
 (0)