1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MWL#36: Add a mysqlbinlog option to change the used database.

Add Rpl_filter to mysqlbinlog.cc
Note. Though within MWL#36 we are going to use only two Rpl_filter's
      methods (add_db_rewrite and get_rewrite_db), we look forward for
      MWL#40 where Rpl_filter is likely to be used to its more extent.
Note. Within MWL#36 we will not use Rpl_filter for supporting --database
      option: this option allows to specify only one database what
      doesn't correlate with Rpl_filter::add_do_db() (using this method
      will either appear "artificial" or require changing --database
      semantics). To be discussed within MWL#40.
To add Rpl_filter we need:
1. include sql_string.h
   There are two instances of sql_string.* files - in sql and in client
   directories. We need to use the ones from the sql dir.
2. include sql_list.h
   This requires to define a client version of sql_alloc() function.
3. include rpl_filter.h
   This requires a definition of system_charset_info variable.
   Besides, Rpl_filter::tables_ok() refers to a TABLE_LIST structure which
   encounts deep non-client dependencies and can't be used here as is. On
   the other hand, tables_ok() make use only few TABLE_LIST's members and
   none of them depends on specific server context. This allows to redefine
   TABLE_LIST in a client context so that tables_ok() becomes admissible
   (surely it's a kind of hack but (at least currently) it's better than
   #ifndef'ing this method in Rpl_filter definition).
Also add Rpl_filter::rewrite_db_is_empty() method. This is needed to be
able to check that --rewrite-db is not used jointly with --base64-output=
always (this is not supported - at least currently).
This commit is contained in:
Alexander Ivanov
2009-10-16 17:28:13 +04:00
parent ef5874d154
commit c12c675d36
3 changed files with 49 additions and 0 deletions

View File

@ -514,6 +514,13 @@ Rpl_filter::get_wild_ignore_table(String* str)
}
bool
Rpl_filter::rewrite_db_is_empty()
{
return rewrite_db.is_empty();
}
const char*
Rpl_filter::get_rewrite_db(const char* db, size_t *new_len)
{