Bug#6391 (binlog-do-db rules ignored)

CREATE DATABASE statement used the current database instead of the
  database created when checking conditions for replication.
  CREATE/DROP/ALTER DATABASE statements are now replicated based on
  the manipulated database.


mysql-test/t/rpl_until.test:
  Longer sleep to allow slave to stop.
mysql-test/t/rpl_charset.test:
  Position change in binary file.
mysql-test/r/drop_temp_table.result:
  Position change in binlog.
mysql-test/r/rpl_loaddata_rule_m.result:
  Position change in binlog.
mysql-test/r/rpl_charset.result:
  Position change in binlog.
sql/log_event.h:
  Added new flag and parameter to suppress generation of
  USE statements.
sql/log_event.cc:
  Added parameter and code to suppress generation of
  USE statements.
sql/sql_db.cc:
  Suppress generation of USE before CREATE/ALTER/DROP DATABASE
  statements.
sql/log.cc:
  Query_log_event have new extra parameter.
sql/sql_table.cc:
  Query_log_event have new extra parameter.
sql/sql_base.cc:
  Query_log_event have new extra parameter.
sql/sql_update.cc:
  Query_log_event have new extra parameter.
sql/sql_insert.cc:
  Query_log_event have new extra parameter.
sql/sql_rename.cc:
  Query_log_event have new extra parameter.
sql/sql_delete.cc:
  Query_log_event have new extra parameter.
sql/sql_acl.cc:
  Query_log_event have new extra parameter.
sql/handler.cc:
  Query_log_event have new extra parameter.
sql/item_func.cc:
  Query_log_event have new extra parameter.
sql/sql_parse.cc:
  Query_log_event have new extra parameter.
This commit is contained in:
unknown 2004-12-03 12:13:51 +01:00
commit 220acb328e
23 changed files with 340 additions and 120 deletions

View file

@ -264,6 +264,19 @@ struct sql_ex_info
*/
#define LOG_EVENT_THREAD_SPECIFIC_F 0x4
/*
Suppress the generation of 'USE' statements before the actual
statement. This flag should be set for any events that does not need
the current database set to function correctly. Most notable cases
are 'CREATE DATABASE' and 'DROP DATABASE'.
This flags should only be used in exceptional circumstances, since
it introduce a significant change in behaviour regarding the
replication logic together with the flags --binlog-do-db and
--replicated-do-db.
*/
#define LOG_EVENT_SUPPRESS_USE_F 0x8
enum Log_event_type
{
UNKNOWN_EVENT= 0, START_EVENT= 1, QUERY_EVENT= 2, STOP_EVENT= 3,
@ -331,8 +344,9 @@ public:
/*
Some 16 flags. Only one is really used now; look above for
LOG_EVENT_TIME_F, LOG_EVENT_FORCED_ROTATE_F, LOG_EVENT_THREAD_SPECIFIC_F
for notes.
LOG_EVENT_TIME_F, LOG_EVENT_FORCED_ROTATE_F,
LOG_EVENT_THREAD_SPECIFIC_F, and LOG_EVENT_SUPPRESS_USE_F for
notes.
*/
uint16 flags;
@ -465,7 +479,7 @@ public:
#ifndef MYSQL_CLIENT
Query_log_event(THD* thd_arg, const char* query_arg, ulong query_length,
bool using_trans);
bool using_trans, bool suppress_use);
const char* get_db() { return db; }
#ifdef HAVE_REPLICATION
void pack_info(Protocol* protocol);