171 const String &filter_rule,
224 bool db_ok(
const char *db,
bool need_increase_counter =
true);
328#ifdef WITH_PERFSCHEMA_STORAGE_ENGINE
337 const char *channel_name);
496 bool array_inited,
bool *hash_inited);
538#ifdef WITH_PERFSCHEMA_STORAGE_ENGINE
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:251
This has the functionality of mysql_rwlock_t, with two differences:
Definition: rpl_gtid.h:324
void rdlock()
Acquire the read lock.
Definition: rpl_gtid.h:485
void wrlock()
Acquire the write lock.
Definition: rpl_gtid.h:494
void assert_some_rdlock() const
Assert that some thread holds the read lock.
Definition: rpl_gtid.h:573
void unlock()
Release the lock (whether it is a write or read lock).
Definition: rpl_gtid.h:505
void assert_some_wrlock() const
Assert that some thread holds the write lock.
Definition: rpl_gtid.h:575
Definition: sql_list.h:844
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:936
The class Rpl_filter_statistics encapsulates the following three statistics of replication filter: Th...
Definition: rpl_filter.h:106
Rpl_filter_statistics(Rpl_filter_statistics const &)
enum_configured_by get_configured_by()
Definition: rpl_filter.h:119
void increase_counter()
Definition: rpl_filter.h:122
enum_configured_by m_configured_by
Definition: rpl_filter.h:133
void reset()
Definition: rpl_filter.cc:97
void set_all(enum_configured_by configured_by)
Definition: rpl_filter.cc:103
ulonglong m_active_since
Definition: rpl_filter.h:136
ulonglong get_active_since()
Definition: rpl_filter.h:120
Rpl_filter_statistics & operator=(Rpl_filter_statistics const &)
ulonglong get_counter()
Definition: rpl_filter.h:121
Rpl_filter_statistics()
Definition: rpl_filter.cc:93
std::atomic< uint64 > m_atomic_counter
Definition: rpl_filter.h:143
Rpl_filter.
Definition: rpl_filter.h:214
int build_ignore_table_hash()
Definition: rpl_filter.cc:644
bool is_attached()
Check if the relation between the per-channel filter and the channel's Relay_log_info is established.
Definition: rpl_filter.h:372
int add_string_list(I_List< i_string > *list, const char *spec)
Definition: rpl_filter.cc:909
collation_unordered_map< std::string, unique_ptr_my_free< TABLE_RULE_ENT > > Table_rule_hash
Definition: rpl_filter.h:451
int add_string_pair_list(I_List< i_string_pair > *list, const char *key, const char *val)
Definition: rpl_filter.cc:928
void free_string_pair_list(I_List< i_string_pair > *l)
Definition: rpl_filter.cc:1015
void get_wild_do_table(String *str)
Definition: rpl_filter.cc:1148
bool is_empty()
Check if the replication filter is empty or not.
Definition: rpl_filter.cc:180
void unlock()
Release the lock (whether it is a write or read lock).
Definition: rpl_filter.h:353
int(Rpl_filter::* Add_filter)(char const *)
Definition: rpl_filter.h:273
Rpl_filter_statistics wild_ignore_table_statistics
Definition: rpl_filter.h:385
void set_attached()
Set attached to true when the relation between the per-channel filter and the channel's Relay_log_inf...
Definition: rpl_filter.h:378
void free_string_list(I_List< i_string > *l)
Definition: rpl_filter.cc:1002
Rpl_filter_statistics * get_rewrite_db_statistics()
Definition: rpl_filter.h:321
int build_table_hash_from_array(Table_rule_array *table_array, Table_rule_hash **table_hash, bool array_inited, bool *hash_inited)
Table rules are initially added to DYNAMIC_LIST, and then, when the charset to use for tables has bee...
Definition: rpl_filter.cc:675
int set_db_rewrite(mem_root_deque< Item * > *list, enum_configured_by configured_by)
Definition: rpl_filter.cc:886
I_List< i_string > * get_do_db()
Definition: rpl_filter.cc:1195
void init_table_rule_hash(Table_rule_hash **h, bool *h_inited)
Definition: rpl_filter.cc:967
virtual ~Rpl_filter()
Definition: rpl_filter.cc:146
Table_rule_hash * do_table_hash
Definition: rpl_filter.h:503
int set_ignore_table(mem_root_deque< Item * > *list, enum_configured_by configured_by)
Definition: rpl_filter.cc:820
Rpl_filter_statistics ignore_table_statistics
Definition: rpl_filter.h:383
bool wild_ignore_table_inited
Definition: rpl_filter.h:517
Table_rule_array wild_ignore_table
Definition: rpl_filter.h:510
int build_do_table_hash()
Definition: rpl_filter.cc:620
Rpl_filter()
Definition: rpl_filter.cc:122
Rpl_filter(Rpl_filter const &)
int set_do_table(mem_root_deque< Item * > *list, enum_configured_by configured_by)
Definition: rpl_filter.cc:794
bool ignore_table_hash_inited
Definition: rpl_filter.h:513
bool is_on()
Definition: rpl_filter.cc:569
Rpl_filter_statistics do_table_statistics
Definition: rpl_filter.h:382
const char * get_rewrite_db(const char *db, size_t *new_len)
Definition: rpl_filter.cc:1176
I_List< i_string > ignore_db
Definition: rpl_filter.h:520
void assert_some_wrlock()
Assert that some thread holds the write lock.
Definition: rpl_filter.h:358
I_List< i_string_pair > rewrite_db
Definition: rpl_filter.h:522
int add_do_db(const char *db_spec)
Definition: rpl_filter.cc:955
I_List< i_string > * get_ignore_db()
Definition: rpl_filter.cc:1211
bool db_ok(const char *db, bool need_increase_counter=true)
Definition: rpl_filter.cc:458
void get_do_table(String *str)
Definition: rpl_filter.cc:1140
Rpl_filter_statistics wild_do_table_statistics
Definition: rpl_filter.h:384
bool do_table_array_inited
Definition: rpl_filter.h:514
bool ignore_table_array_inited
Definition: rpl_filter.h:515
int set_do_db(mem_root_deque< Item * > *list, enum_configured_by configured_by)
Definition: rpl_filter.cc:772
int parse_filter_list(mem_root_deque< Item * > *item_list, Add_filter func)
Definition: rpl_filter.cc:745
bool do_table_hash_inited
Definition: rpl_filter.h:512
Rpl_filter & operator=(Rpl_filter const &)
int add_ignore_table_array(const char *table_spec)
Definition: rpl_filter.cc:581
int table_rule_ent_hash_to_array(Table_rule_array *table_array, Table_rule_hash *h, bool inited)
Builds a Table_rule_array from a hash of TABLE_RULE_ENT.
Definition: rpl_filter.cc:1064
int set_wild_ignore_table(mem_root_deque< Item * > *list, enum_configured_by configured_by)
Definition: rpl_filter.cc:866
I_List< i_string > do_db
Definition: rpl_filter.h:519
Table_rule_array do_table_array
Definition: rpl_filter.h:506
bool wild_do_table_inited
Definition: rpl_filter.h:516
int add_do_table_array(const char *table_spec)
Definition: rpl_filter.cc:573
void wrlock()
Acquire the write lock.
Definition: rpl_filter.h:343
bool is_rewrite_empty()
Definition: rpl_filter.cc:571
void reset()
Definition: rpl_filter.cc:151
Rpl_filter_statistics do_db_statistics
Definition: rpl_filter.h:386
void put_filters_into_vector(std::vector< Rpl_pfs_filter > &rpl_pfs_filter_vec, const char *channel_name)
Put replication filters with attached channel name into a vector.
Definition: rpl_filter.cc:1229
int add_db_rewrite(const char *from_db, const char *to_db)
Definition: rpl_filter.cc:606
bool db_ok_with_wild_table(const char *db)
Definition: rpl_filter.cc:540
bool tables_ok(const char *db, Table_ref *tables)
Definition: rpl_filter.cc:397
bool attached
Definition: rpl_filter.h:396
int table_rule_ent_array_to_array(Table_rule_array *dest_array, Table_rule_array *source_array, bool inited)
Builds a destination Table_rule_array from a source Table_rule_array of TABLE_RULE_ENT.
Definition: rpl_filter.cc:1096
Rpl_filter_statistics ignore_db_statistics
Definition: rpl_filter.h:387
int set_ignore_db(mem_root_deque< Item * > *list, enum_configured_by configured_by)
Definition: rpl_filter.cc:783
Prealloced_array< TABLE_RULE_ENT *, 16 > Table_rule_array
Definition: rpl_filter.h:448
void get_wild_ignore_table(String *str)
Definition: rpl_filter.cc:1153
Table_rule_array ignore_table_array
Definition: rpl_filter.h:507
int add_wild_do_table(const char *table_spec)
Definition: rpl_filter.cc:589
Rpl_filter_statistics rewrite_db_statistics
Definition: rpl_filter.h:388
void init_table_rule_array(Table_rule_array *, bool *a_inited)
Definition: rpl_filter.cc:972
void get_ignore_table(String *str)
Definition: rpl_filter.cc:1144
Checkable_rwlock * m_rpl_filter_lock
Definition: rpl_filter.h:446
int add_table_rule_to_array(Table_rule_array *a, const char *table_spec)
Definition: rpl_filter.cc:725
Table_rule_hash * ignore_table_hash
Definition: rpl_filter.h:504
void rdlock()
Acquire the read lock.
Definition: rpl_filter.h:348
void assert_some_rdlock()
Assert that some thread holds the read lock.
Definition: rpl_filter.h:363
TABLE_RULE_ENT * find_wild(Table_rule_array *a, const char *key, size_t len)
Definition: rpl_filter.cc:977
int copy_global_replication_filters()
Copy global replication filters to its per-channel replication filters if there are no per-channel re...
Definition: rpl_filter.cc:191
void table_rule_ent_dynamic_array_to_str(String *s, Table_rule_array *a, bool inited)
Definition: rpl_filter.cc:1127
bool table_rules_on
Definition: rpl_filter.h:391
int set_wild_do_table(mem_root_deque< Item * > *list, enum_configured_by configured_by)
Definition: rpl_filter.cc:847
int add_wild_ignore_table(const char *table_spec)
Definition: rpl_filter.cc:597
int add_table_rule_to_hash(Table_rule_hash *h, const char *table_spec, uint len)
Added one table rule to hash.
Definition: rpl_filter.cc:703
void table_rule_ent_hash_to_str(String *s, Table_rule_hash *h, bool inited)
Definition: rpl_filter.cc:1038
Table_rule_array wild_do_table
Definition: rpl_filter.h:509
int add_ignore_db(const char *db_spec)
Definition: rpl_filter.cc:961
void free_string_array(Table_rule_array *a)
Definition: rpl_filter.cc:997
The class is a Rpl_filter representing global replication filters, with a vector that references all ...
Definition: rpl_filter.h:533
Rpl_pfs_filter * get_filter_at_pos(uint pos)
Used only by replication performance schema indices to get the global replication filter at the posit...
Definition: rpl_filter.cc:1296
~Rpl_global_filter() override=default
std::vector< Rpl_pfs_filter > rpl_pfs_filter_vec
Definition: rpl_filter.h:570
uint get_filter_count()
Used only by replication performance schema indices to get the count of global replication filters.
Definition: rpl_filter.cc:1306
Rpl_global_filter(const Rpl_global_filter &info)
void reset_pfs_view()
This member function is called every time the rules of the global replication filter are changed.
Definition: rpl_filter.cc:1286
Rpl_global_filter & operator=(const Rpl_global_filter &info)
Rpl_global_filter()=default
The class Rpl_pfs_filter is introduced to serve the performance_schema.replication_applier_filters ta...
Definition: rpl_filter.h:167
const char * m_filter_name
Definition: rpl_filter.h:188
Rpl_pfs_filter & operator=(Rpl_pfs_filter const &)
const char * get_filter_name()
Definition: rpl_filter.h:177
Rpl_filter_statistics * m_rpl_filter_statistics
Definition: rpl_filter.h:191
Rpl_filter_statistics * get_rpl_filter_statistics()
Definition: rpl_filter.h:179
const char * m_channel_name
Definition: rpl_filter.h:185
const String & get_filter_rule()
Definition: rpl_filter.h:178
const char * get_channel_name()
Definition: rpl_filter.h:176
String m_filter_rule
Definition: rpl_filter.h:194
Rpl_pfs_filter()
Definition: rpl_filter.cc:68
Sql_cmd_change_repl_filter represents the command CHANGE REPLICATION FILTER.
Definition: rpl_filter.h:580
mem_root_deque< Item * > * wild_do_table_list
Definition: rpl_filter.h:608
~Sql_cmd_change_repl_filter() override=default
mem_root_deque< Item * > * ignore_table_list
Definition: rpl_filter.h:607
mem_root_deque< Item * > * ignore_db_list
Definition: rpl_filter.h:605
Sql_cmd_change_repl_filter()
Constructor.
Definition: rpl_filter.h:583
void set_filter_value(mem_root_deque< Item * > *item_list, options_mysqld filter_type)
Definition: rpl_filter.cc:1321
mem_root_deque< Item * > * do_db_list
Definition: rpl_filter.h:604
mem_root_deque< Item * > * rewrite_db_pair_list
Definition: rpl_filter.h:610
mem_root_deque< Item * > * do_table_list
Definition: rpl_filter.h:606
bool execute(THD *thd) override
Execute this SQL statement.
Definition: rpl_filter.cc:1315
bool change_rpl_filter(THD *thd)
Execute a CHANGE REPLICATION FILTER statement to set filter rules.
Definition: rpl_filter.cc:1362
enum_sql_command sql_command_code() const override
Return the command code for this statement.
Definition: rpl_filter.h:594
mem_root_deque< Item * > * wild_ignore_table_list
Definition: rpl_filter.h:609
Representation of an SQL command.
Definition: sql_cmd.h:83
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:167
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
std::unordered_map, but with my_malloc and collation-aware comparison.
Definition: map_helpers.h:219
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:111
static bool inited
Definition: log_filter_dragnet.cc:122
std::unique_ptr< T, My_free_deleter > unique_ptr_my_free
std::unique_ptr, but with my_free as deleter.
Definition: map_helpers.h:97
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:56
enum_sql_command
Definition: my_sqlcommand.h:46
@ SQLCOM_CHANGE_REPLICATION_FILTER
Definition: my_sqlcommand.h:110
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1081
static mysql_service_status_t add(reference_caching_channel channel, const char *implementation_name) noexcept
Definition: component.cc:127
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2878
options_mysqld
only options that need special treatment in get_one_option() deserve to be listed below
Definition: options_mysqld.h:31
required string key
Definition: replication_asynchronous_connection_failover.proto:60
Rpl_filter * binlog_filter
Definition: mysqld.cc:1530
enum_configured_by
Enum values for CONFIGURED_BY column.
Definition: rpl_filter.h:84
@ CONFIGURED_BY_CHANGE_REPLICATION_FILTER
Definition: rpl_filter.h:86
@ CONFIGURED_BY_STARTUP_OPTIONS
Definition: rpl_filter.h:85
@ CONFIGURED_BY_STARTUP_OPTIONS_FOR_CHANNEL
Definition: rpl_filter.h:87
@ CONFIGURED_BY_CHANGE_REPLICATION_FILTER_FOR_CHANNEL
Definition: rpl_filter.h:88
Representation of an SQL command.
Our own string classes, used pervasively throughout the executor.
Definition: rpl_filter.h:77
char * tbl_name
Definition: rpl_filter.h:79
uint key_len
Definition: rpl_filter.h:80
char * db
Definition: rpl_filter.h:78