diff options
| author | robot-piglet <[email protected]> | 2023-12-14 09:27:46 +0300 | 
|---|---|---|
| committer | robot-piglet <[email protected]> | 2023-12-14 09:44:12 +0300 | 
| commit | 76b21190cb48636728f7ab6e26b812dcdecbd004 (patch) | |
| tree | 30eb945eef36bd826b737d99baa9cbdb673e03d3 | |
| parent | db7f91de8c86629d479db1daf8dddf9704186478 (diff) | |
Intermediate changes
| -rw-r--r-- | contrib/clickhouse/src/Interpreters/Access/InterpreterGrantQuery.cpp | 6 | ||||
| -rw-r--r-- | contrib/clickhouse/src/Interpreters/removeOnClusterClauseIfNeeded.cpp | 4 | 
2 files changed, 7 insertions, 3 deletions
| diff --git a/contrib/clickhouse/src/Interpreters/Access/InterpreterGrantQuery.cpp b/contrib/clickhouse/src/Interpreters/Access/InterpreterGrantQuery.cpp index 1a8268b9b1b..518ef1d3406 100644 --- a/contrib/clickhouse/src/Interpreters/Access/InterpreterGrantQuery.cpp +++ b/contrib/clickhouse/src/Interpreters/Access/InterpreterGrantQuery.cpp @@ -7,6 +7,7 @@  #include <Access/RolesOrUsersSet.h>  #include <Access/User.h>  #include <Interpreters/Context.h> +#include <Interpreters/removeOnClusterClauseIfNeeded.h>  #include <Interpreters/QueryLog.h>  #include <Interpreters/executeDDLQueryOnCluster.h>  #include <boost/range/algorithm/copy.hpp> @@ -396,7 +397,8 @@ namespace  BlockIO InterpreterGrantQuery::execute()  { -    auto & query = query_ptr->as<ASTGrantQuery &>(); +    const auto updated_query = removeOnClusterClauseIfNeeded(query_ptr, getContext()); +    auto & query = updated_query->as<ASTGrantQuery &>();      query.replaceCurrentUserTag(getContext()->getUserName());      query.access_rights_elements.eraseNonGrantable(); @@ -430,7 +432,7 @@ BlockIO InterpreterGrantQuery::execute()          current_user_access->checkGranteesAreAllowed(grantees);          DDLQueryOnClusterParams params;          params.access_to_check = std::move(required_access); -        return executeDDLQueryOnCluster(query_ptr, getContext(), params); +        return executeDDLQueryOnCluster(updated_query, getContext(), params);      }      /// Check if the current user has corresponding access rights granted with grant option. diff --git a/contrib/clickhouse/src/Interpreters/removeOnClusterClauseIfNeeded.cpp b/contrib/clickhouse/src/Interpreters/removeOnClusterClauseIfNeeded.cpp index 7dc452a0fcb..da3930d62a6 100644 --- a/contrib/clickhouse/src/Interpreters/removeOnClusterClauseIfNeeded.cpp +++ b/contrib/clickhouse/src/Interpreters/removeOnClusterClauseIfNeeded.cpp @@ -14,6 +14,7 @@  #include <Parsers/Access/ASTCreateSettingsProfileQuery.h>  #include <Parsers/Access/ASTCreateUserQuery.h>  #include <Parsers/Access/ASTDropAccessEntityQuery.h> +#include <Parsers/Access/ASTGrantQuery.h>  namespace DB @@ -33,7 +34,8 @@ static bool isAccessControlQuery(const ASTPtr & query)          || query->as<ASTCreateRoleQuery>()          || query->as<ASTCreateRowPolicyQuery>()          || query->as<ASTCreateSettingsProfileQuery>() -        || query->as<ASTDropAccessEntityQuery>(); +        || query->as<ASTDropAccessEntityQuery>() +        || query->as<ASTGrantQuery>();  }  ASTPtr removeOnClusterClauseIfNeeded(const ASTPtr & query, ContextPtr context, const WithoutOnClusterASTRewriteParams & params) | 
