MySQL 8.1.0
Source Code Documentation
dynamic_privilege_table.h
Go to the documentation of this file.
1/* Copyright (c) 2016, 2023, Oracle and/or its affiliates.
2
3This program is free software; you can redistribute it and/or modify
4it under the terms of the GNU General Public License, version 2.0,
5as published by the Free Software Foundation.
6
7This program is also distributed with certain software (including
8but not limited to OpenSSL) that is licensed under separate terms,
9as designated in a particular file or component or in included license
10documentation. The authors of MySQL hereby grant you an additional
11permission to link the program and your derivative works with the
12separately licensed software that they have included with MySQL.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License, version 2.0, for more details.
18
19You should have received a copy of the GNU General Public License
20along with this program; if not, write to the Free Software
21Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
22#ifndef DYNAMIC_PRIVILEGE_TABLE_H
23#define DYNAMIC_PRIVILEGE_TABLE_H
24
25#include <functional>
26#include <string>
27#include <unordered_set>
28
29#include "lex_string.h"
31
32class THD;
33struct TABLE;
34class Table_ref;
35
36typedef std::unordered_set<std::string> Dynamic_privilege_register;
37
40 const Auth_id_ref &auth_id,
41 const LEX_CSTRING &privilege,
42 bool with_grant_option,
43 bool delete_option);
45 public:
49 : m_thd(thd), m_table(table), m_no_update(false) {}
50 bool operator()(const std::string &priv, const Auth_id_ref &auth_id,
51 bool grant_option,
53 if (m_no_update) return false;
54 const LEX_CSTRING cstr_priv = {priv.c_str(), priv.length()};
56 cstr_priv, grant_option,
57 op == Operation::REVOKE);
58 }
59
60 private:
64};
65
67void register_dynamic_privilege_impl(const std::string &priv);
69 std::function<bool(const char *)> action);
70#endif
std::pair< LEX_CSTRING, LEX_CSTRING > Auth_id_ref
user, host tuple which reference either acl_cache or g_default_roles
Definition: auth_common.h:78
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:33
Definition: table.h:2800
Definition: dynamic_privilege_table.h:44
Operation
Definition: dynamic_privilege_table.h:46
@ REVOKE
Definition: dynamic_privilege_table.h:46
@ GRANT
Definition: dynamic_privilege_table.h:46
bool m_no_update
Definition: dynamic_privilege_table.h:63
bool operator()(const std::string &priv, const Auth_id_ref &auth_id, bool grant_option, Update_dynamic_privilege_table::Operation op)
Definition: dynamic_privilege_table.h:50
TABLE * m_table
Definition: dynamic_privilege_table.h:62
THD * m_thd
Definition: dynamic_privilege_table.h:61
Update_dynamic_privilege_table()
Definition: dynamic_privilege_table.h:47
Update_dynamic_privilege_table(THD *thd, TABLE *table)
Definition: dynamic_privilege_table.h:48
void register_dynamic_privilege_impl(const std::string &priv)
Dynamic_privilege_register * get_dynamic_privilege_register(void)
This function returns a pointer to a global variable allocated on the heap.
Definition: dynamic_privilege_table.cc:71
std::unordered_set< std::string > Dynamic_privilege_register
Definition: dynamic_privilege_table.h:34
bool populate_dynamic_privilege_caches(THD *thd, Table_ref *tablelst)
Given an open table handler this function refresh the list of dynamic privilege grants by reading the...
Definition: dynamic_privilege_table.cc:88
bool modify_dynamic_privileges_in_table(THD *thd, TABLE *table, const Auth_id_ref &auth_id, const LEX_CSTRING &privilege, bool with_grant_option, bool delete_option)
Delete or insert a row in the mysql.dynamic_privilege table.
Definition: dynamic_privilege_table.cc:195
bool iterate_all_dynamic_privileges(THD *thd, std::function< bool(const char *)> action)
Definition: dynamic_privilege_table.cc:241
static PFS_engine_table_share_proxy table
Definition: pfs.cc:60
repeated Action action
Definition: replication_group_member_actions.proto:42
@ REVOKE
Definition: sql_yacc.h:528
Definition: mysql_lex_string.h:39
size_t length
Definition: mysql_lex_string.h:41
Definition: table.h:1394