• Alexander Ivanov's avatar
    MWL#36: Add a mysqlbinlog option to change the used database. · c12c675d
    Alexander Ivanov authored
    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).
    c12c675d
rpl_filter.cc 13.3 KB