summaryrefslogtreecommitdiffstats
path: root/contrib/clickhouse/src/Interpreters/Access/InterpreterMoveAccessEntityQuery.cpp
diff options
context:
space:
mode:
authorAlexSm <[email protected]>2024-01-04 15:09:05 +0100
committerGitHub <[email protected]>2024-01-04 15:09:05 +0100
commitdab291146f6cd7d35684e3a1150e5bb1c412982c (patch)
tree36ef35f6cacb6432845a4a33f940c95871036b32 /contrib/clickhouse/src/Interpreters/Access/InterpreterMoveAccessEntityQuery.cpp
parent63660ad5e7512029fd0218e7a636580695a24e1f (diff)
Library import 5, delete go dependencies (#832)
* Library import 5, delete go dependencies * Fix yt client
Diffstat (limited to 'contrib/clickhouse/src/Interpreters/Access/InterpreterMoveAccessEntityQuery.cpp')
-rw-r--r--contrib/clickhouse/src/Interpreters/Access/InterpreterMoveAccessEntityQuery.cpp93
1 files changed, 0 insertions, 93 deletions
diff --git a/contrib/clickhouse/src/Interpreters/Access/InterpreterMoveAccessEntityQuery.cpp b/contrib/clickhouse/src/Interpreters/Access/InterpreterMoveAccessEntityQuery.cpp
deleted file mode 100644
index 49e90783a59..00000000000
--- a/contrib/clickhouse/src/Interpreters/Access/InterpreterMoveAccessEntityQuery.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-#include <Interpreters/Access/InterpreterMoveAccessEntityQuery.h>
-#include <Parsers/Access/ASTMoveAccessEntityQuery.h>
-#include <Parsers/Access/ASTRowPolicyName.h>
-#include <Access/AccessControl.h>
-#include <Access/Common/AccessRightsElement.h>
-#include <Interpreters/executeDDLQueryOnCluster.h>
-
-
-namespace DB
-{
-namespace ErrorCodes
-{
- extern const int NOT_IMPLEMENTED;
- extern const int ACCESS_ENTITY_NOT_FOUND;
-}
-
-
-BlockIO InterpreterMoveAccessEntityQuery::execute()
-{
- auto & query = query_ptr->as<ASTMoveAccessEntityQuery &>();
- auto & access_control = getContext()->getAccessControl();
- getContext()->checkAccess(getRequiredAccess());
-
- if (!query.cluster.empty())
- return executeDDLQueryOnCluster(query_ptr, getContext());
-
- query.replaceEmptyDatabase(getContext()->getCurrentDatabase());
-
- std::vector<UUID> ids;
- if (query.type == AccessEntityType::ROW_POLICY)
- ids = access_control.getIDs(query.type, query.row_policy_names->toStrings());
- else
- ids = access_control.getIDs(query.type, query.names);
-
- /// Validate that all entities are from the same storage.
- const auto source_storage = access_control.findStorage(ids.front());
- if (!source_storage->exists(ids))
- throw Exception(ErrorCodes::ACCESS_ENTITY_NOT_FOUND, "All access entities must be from the same storage in order to be moved");
-
- access_control.moveAccessEntities(ids, source_storage->getStorageName(), query.storage_name);
- return {};
-}
-
-
-AccessRightsElements InterpreterMoveAccessEntityQuery::getRequiredAccess() const
-{
- const auto & query = query_ptr->as<const ASTMoveAccessEntityQuery &>();
- AccessRightsElements res;
- switch (query.type)
- {
- case AccessEntityType::USER:
- {
- res.emplace_back(AccessType::DROP_USER);
- res.emplace_back(AccessType::CREATE_USER);
- return res;
- }
- case AccessEntityType::ROLE:
- {
- res.emplace_back(AccessType::DROP_ROLE);
- res.emplace_back(AccessType::CREATE_ROLE);
- return res;
- }
- case AccessEntityType::SETTINGS_PROFILE:
- {
- res.emplace_back(AccessType::DROP_SETTINGS_PROFILE);
- res.emplace_back(AccessType::CREATE_SETTINGS_PROFILE);
- return res;
- }
- case AccessEntityType::ROW_POLICY:
- {
- if (query.row_policy_names)
- {
- for (const auto & row_policy_name : query.row_policy_names->full_names)
- {
- res.emplace_back(AccessType::DROP_ROW_POLICY, row_policy_name.database, row_policy_name.table_name);
- res.emplace_back(AccessType::CREATE_ROW_POLICY, row_policy_name.database, row_policy_name.table_name);
- }
- }
- return res;
- }
- case AccessEntityType::QUOTA:
- {
- res.emplace_back(AccessType::DROP_QUOTA);
- res.emplace_back(AccessType::CREATE_QUOTA);
- return res;
- }
- case AccessEntityType::MAX:
- break;
- }
- throw Exception(ErrorCodes::NOT_IMPLEMENTED, "{}: type is not supported by DROP query", toString(query.type));
-}
-
-}