This is a step towards making replication a library, such that the 5.6 rpl- lib can be plugged into the 5.5 core [WL#5675]. Replication filters need to be defined in rpl-lib and accessed from core. The purpose of this worklog is to define a minimal interface for this. TODO: design this
- We use replication filters in the core functions change_password(), mysql_table_grant(), mysql_routine_grant(), mysql_grant(), and open_grant_tables() in sql_acl.cc; in all_tables_not_ok(), db_stmt_db_ok() in sql_parse.cc. - Replication filters should be part of rpl-lib. In which part of rpl-lib should replication filters be defined? Preliminary decision: The core needs to check both binary log filters and slave filters. We should define two identical sets of functions, one that is part of the Binlog class and one that is part of the Slave class. - How much of the filters should be handled by the module: should rpl-lib expose an interface to add and remove filters, or should filters be entirely managed by rpl-lib? Preliminary decision: It may be a useful feature in the future to expose general-purpose filters as a separate class. However, it is not currently needed in order to make 5.6 rpl-lib link to 5.5 core. So we will not expose such interfaces now.