~maria-captains/maria/5.5-davi

« back to all changes in this revision

Viewing changes to sql/rpl_filter.h

  • Committer: Davi Arnaut
  • Date: 2012-03-19 22:00:23 UTC
  • Revision ID: davi@twitter.com-20120319220023-77a84i1t1n18pzt7
Make Replication filter settings dynamic.

Make the slave options --replicate-* dynamic variables so that these
options can be changed dynamically while the server is running,
which enables users to modify replication filtering rules without
having to stop and restart the server.

This is accomplished by just requiring that the slave threads are
stopped when these options are set dynamically. Since filtering
rules are only used by the SQL slave thread, setting them while the
thread is not running avoids the need for locking.

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
  int add_do_table(const char* table_spec);
62
62
  int add_ignore_table(const char* table_spec);
63
63
 
 
64
  int set_do_table(const char* table_spec);
 
65
  int set_ignore_table(const char* table_spec);
 
66
 
64
67
  int add_wild_do_table(const char* table_spec);
65
68
  int add_wild_ignore_table(const char* table_spec);
66
69
 
67
 
  void add_do_db(const char* db_spec);
68
 
  void add_ignore_db(const char* db_spec);
 
70
  int set_wild_do_table(const char* table_spec);
 
71
  int set_wild_ignore_table(const char* table_spec);
 
72
 
 
73
  int add_do_db(const char* db_spec);
 
74
  int add_ignore_db(const char* db_spec);
 
75
 
 
76
  int set_do_db(const char* db_spec);
 
77
  int set_ignore_db(const char* db_spec);
69
78
 
70
79
  void add_db_rewrite(const char* from_db, const char* to_db);
71
80
 
83
92
  I_List<i_string>* get_do_db();
84
93
  I_List<i_string>* get_ignore_db();
85
94
 
 
95
  void get_do_db(String* str);
 
96
  void get_ignore_db(String* str);
 
97
 
86
98
private:
87
99
  bool table_rules_on;
88
100
 
92
104
  int add_table_rule(HASH* h, const char* table_spec);
93
105
  int add_wild_table_rule(DYNAMIC_ARRAY* a, const char* table_spec);
94
106
 
 
107
  typedef int (Rpl_filter::*Add_filter)(char const*);
 
108
 
 
109
  int parse_filter_rule(const char* spec, Add_filter func);
 
110
 
95
111
  void free_string_array(DYNAMIC_ARRAY *a);
 
112
  void free_string_list(I_List<i_string> *l);
96
113
 
97
114
  void table_rule_ent_hash_to_str(String* s, HASH* h, bool inited);
98
115
  void table_rule_ent_dynamic_array_to_str(String* s, DYNAMIC_ARRAY* a,
99
116
                                           bool inited);
 
117
  void db_rule_ent_list_to_str(String* s, I_List<i_string>* l);
100
118
  TABLE_RULE_ENT* find_wild(DYNAMIC_ARRAY *a, const char* key, int len);
101
119
 
 
120
  int add_string_list(I_List<i_string> *list, const char* spec);
 
121
 
102
122
  /*
103
123
    Those 4 structures below are uninitialized memory unless the
104
124
    corresponding *_inited variables are "true".