List:Internals« Previous MessageNext Message »
From:Mats Kindahl Date:November 24 2004 8:44am
Subject:bk commit into 4.1 tree (mats:1.2140)
View as plain text  
Below is the list of changes that have just been committed into a local
4.1 repository of mats. When mats does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://www.mysql.com/doc/I/n/Installing_source_tree.html

ChangeSet
  1.2140 04/11/24 09:44:17 mats@stripped +13 -0
  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/r/rpl_charset.result
    1.7 04/11/24 09:18:34 mats@stripped +58 -58
    'USE' statments have dissapeared before some statements.
    Binlog position change due to different length log events.

  mysql-test/r/rpl_create_database.result
    1.1 04/11/24 09:15:31 mats@stripped +56 -0

  mysql-test/r/rpl_loaddata_rule_m.result
    1.6 04/11/24 09:15:31 mats@stripped +2 -0
    '(CREATE|DROP) DATABASE' statements now replicated.

  mysql-test/r/rpl_create_database.result
    1.0 04/11/24 09:15:31 mats@stripped +0 -0
    BitKeeper file /space/bk/b6391-mysql-4.1/mysql-test/r/rpl_create_database.result

  mysql-test/r/drop_temp_table.result
    1.8 04/11/24 09:14:42 mats@stripped +4 -4
    'USE' statments have dissapeared before some statements.

  mysql-test/t/rpl_until.test
    1.14 04/11/24 09:11:53 mats@stripped +2 -1
    Longer sleep to allow slave to catch up.

  mysql-test/t/rpl_charset.test
    1.5 04/11/24 09:11:12 mats@stripped +3 -3
    Position change.

  mysql-test/t/rpl_create_database.test
    1.1 04/11/24 09:11:09 mats@stripped +52 -0

  mysql-test/t/rpl_create_database-slave.opt
    1.1 04/11/24 09:11:09 mats@stripped +1 -0

  mysql-test/t/rpl_create_database.test
    1.0 04/11/24 09:11:09 mats@stripped +0 -0
    BitKeeper file /space/bk/b6391-mysql-4.1/mysql-test/t/rpl_create_database.test

  mysql-test/t/rpl_create_database-slave.opt
    1.0 04/11/24 09:11:09 mats@stripped +0 -0
    BitKeeper file /space/bk/b6391-mysql-4.1/mysql-test/t/rpl_create_database-slave.opt

  mysql-test/t/rpl_create_database-master.opt
    1.1 04/11/24 09:11:08 mats@stripped +1 -0

  mysql-test/t/rpl_create_database-master.opt
    1.0 04/11/24 09:11:08 mats@stripped +0 -0
    BitKeeper file /space/bk/b6391-mysql-4.1/mysql-test/t/rpl_create_database-master.opt

  sql/log.cc
    1.152 04/11/24 09:08:30 mats@stripped +1 -1
    Better error message for not ok databases.

  sql/sql_db.cc
    1.126 04/11/24 09:06:57 mats@stripped +27 -3
    Suppress generation if 'USE' statements for '(CREATE|DROP|ALTER) DATABASE' statements since the database used is intrinsic.

  sql/log_event.cc
    1.170 04/11/24 09:06:36 mats@stripped +13 -6
    Added flags to suppress the generation of 'USE' statements when printing a log event.

  sql/log_event.h
    1.95 04/11/24 09:05:39 mats@stripped +12 -3
    Added flags to suppress the generation of 'USE' statements when printing a log event.

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	mats
# Host:	tuna.ndb.mysql.com
# Root:	/orca/space/bk/b6391-mysql-4.1

--- 1.151/sql/log.cc	2004-11-12 09:44:52 +01:00
+++ 1.152/sql/log.cc	2004-11-24 09:08:30 +01:00
@@ -1274,7 +1274,7 @@
 	(local_db && !db_ok(local_db, binlog_do_db, binlog_ignore_db)))
     {
       VOID(pthread_mutex_unlock(&LOCK_log));
-      DBUG_PRINT("error",("!db_ok"));
+      DBUG_PRINT("error",("!db_ok('%s')", local_db));
       DBUG_RETURN(0);
     }
 #endif /* HAVE_REPLICATION */

--- 1.169/sql/log_event.cc	2004-11-19 00:56:51 +01:00
+++ 1.170/sql/log_event.cc	2004-11-24 09:06:36 +01:00
@@ -780,7 +780,8 @@
   if (!(buf= my_malloc(9 + db_len + q_len, MYF(MY_WME))))
     return;
   pos= buf;    
-  if (db && db_len)
+  if (!(flags & LOG_EVENT_SUPPRESS_USE_F) 
+      && db && db_len)
   {
     pos= strmov(buf, "use `");
     memcpy(pos, db, db_len);
@@ -872,9 +873,12 @@
 
 #ifndef MYSQL_CLIENT
 Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
-				 ulong query_length, bool using_trans)
-  :Log_event(thd_arg, !thd_arg->tmp_table_used ?
-	     0 : LOG_EVENT_THREAD_SPECIFIC_F, using_trans),
+				 ulong query_length, bool using_trans,
+				 bool suppress_use)
+  :Log_event(thd_arg, 
+	     ((thd_arg->tmp_table_used ? LOG_EVENT_THREAD_SPECIFIC_F : 0)
+	      | (suppress_use          ? LOG_EVENT_SUPPRESS_USE_F    : 0)),
+	     using_trans),
    data_buf(0), query(query_arg),
    db(thd_arg->db), q_len((uint32) query_length),
    error_code(thd_arg->killed ?
@@ -955,8 +959,11 @@
       memcpy(last_db, db, db_len + 1);
   }
   
-  if (db && db[0] && different_db)
-    fprintf(file, "use %s;\n", db);
+  if (!(flags & LOG_EVENT_SUPPRESS_USE_F) 
+      && db && db[0] && different_db)
+  {
+     fprintf(file, "use %s;\n", db);
+  }
   end=int10_to_str((long) when, strmov(buff,"SET TIMESTAMP="),10);
   *end++=';';
   *end++='\n';

--- 1.94/sql/log_event.h	2004-11-15 17:03:21 +01:00
+++ 1.95/sql/log_event.h	2004-11-24 09:05:39 +01:00
@@ -264,6 +264,14 @@
 */
 #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'.
+ */
+#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 +339,9 @@
 
   /*
     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 +474,7 @@
 #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 = FALSE);
   const char* get_db() { return db; }
 #ifdef HAVE_REPLICATION
   void pack_info(Protocol* protocol);

--- 1.125/sql/sql_db.cc	2004-11-10 16:07:04 +01:00
+++ 1.126/sql/sql_db.cc	2004-11-24 09:06:57 +01:00
@@ -467,7 +467,15 @@
     mysql_update_log.write(thd, query, query_length);
     if (mysql_bin_log.is_open())
     {
-      Query_log_event qinfo(thd, query, query_length, 0);
+      Query_log_event qinfo(thd, query, query_length, 0, 
+			    /* suppress_use */ TRUE);
+
+      // Write should use the database being created as the "current
+      // database" and not the threads current database, which is the
+      // default.
+      qinfo.db     = db;
+      qinfo.db_len = strlen(db);
+
       mysql_bin_log.write(&qinfo);
     }
     send_ok(thd, result);
@@ -517,7 +525,15 @@
   mysql_update_log.write(thd,thd->query, thd->query_length);
   if (mysql_bin_log.is_open())
   {
-    Query_log_event qinfo(thd, thd->query, thd->query_length, 0);
+    Query_log_event qinfo(thd, thd->query, thd->query_length, 0, 
+			  /* suppress_use */ TRUE);
+
+    // Write should use the database being created as the "current
+    // database" and not the threads current database, which is the
+    // default.
+    qinfo.db     = db;
+    qinfo.db_len = strlen(db);
+
     thd->clear_error();
     mysql_bin_log.write(&qinfo);
   }
@@ -625,7 +641,15 @@
     mysql_update_log.write(thd, query, query_length);
     if (mysql_bin_log.is_open())
     {
-      Query_log_event qinfo(thd, query, query_length, 0);
+      Query_log_event qinfo(thd, query, query_length, 0, 
+			    /* suppress_use */ TRUE);
+
+      // Write should use the database being created as the "current
+      // database" and not the threads current database, which is the
+      // default.
+      qinfo.db     = db;
+      qinfo.db_len = strlen(db);
+
       thd->clear_error();
       mysql_bin_log.write(&qinfo);
     }

--- 1.13/mysql-test/t/rpl_until.test	2004-03-20 11:29:41 +01:00
+++ 1.14/mysql-test/t/rpl_until.test	2004-11-24 09:11:53 +01:00
@@ -43,7 +43,7 @@
 
 # try replicate all until second insert to t2;
 start slave until relay_log_file='slave-relay-bin.000002', relay_log_pos=537;
-sleep 2;
+sleep 4;
 select * from t2;
 --replace_result $MASTER_MYPORT MASTER_MYPORT
 --replace_column 1 # 9 # 23 # 33 #
@@ -65,6 +65,7 @@
 --replace_result $MASTER_MYPORT MASTER_MYPORT bin.000005 bin.000004 bin.000006 bin.000004 bin.000007 bin.000004
 --replace_column 1 # 9 # 23 # 33 #
 show slave status;
+
 
 #testing various error conditions
 --error 1277

--- 1.7/mysql-test/r/drop_temp_table.result	2004-03-26 10:06:51 +01:00
+++ 1.8/mysql-test/r/drop_temp_table.result	2004-11-24 09:14:42 +01:00
@@ -11,8 +11,8 @@
 show binlog events;
 Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
 master-bin.000001	4	Start	1	4	Server ver: VERSION, Binlog ver: 3
-master-bin.000001	79	Query	1	79	use `test`; create database `drop-temp+table-test`
-master-bin.000001	152	Query	1	152	use `drop-temp+table-test`; create temporary table `table:name` (a int)
-master-bin.000001	246	Query	1	246	use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`table:name`
-master-bin.000001	375	Query	1	375	use `drop-temp+table-test`; DO RELEASE_LOCK("a")
+master-bin.000001	79	Query	1	79	create database `drop-temp+table-test`
+master-bin.000001	168	Query	1	168	use `drop-temp+table-test`; create temporary table `table:name` (a int)
+master-bin.000001	262	Query	1	262	use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`table:name`
+master-bin.000001	391	Query	1	391	use `drop-temp+table-test`; DO RELEASE_LOCK("a")
 drop database `drop-temp+table-test`;

--- 1.6/mysql-test/r/rpl_charset.result	2004-09-23 12:14:38 +02:00
+++ 1.7/mysql-test/r/rpl_charset.result	2004-11-24 09:18:34 +01:00
@@ -105,62 +105,62 @@
 drop database mysqltest3;
 show binlog events from 79;
 Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
-master-bin.000001	79	Query	1	79	use `test`; drop database if exists mysqltest2
-master-bin.000001	148	Query	1	148	use `test`; drop database if exists mysqltest3
-master-bin.000001	217	Query	1	217	use `test`; create database mysqltest2 character set latin2
-master-bin.000001	299	Query	1	299	use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=30
-master-bin.000001	433	Query	1	433	use `test`; create database mysqltest3
-master-bin.000001	494	Query	1	494	use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64
-master-bin.000001	628	Query	1	628	use `test`; drop database mysqltest3
-master-bin.000001	687	Query	1	687	use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64
-master-bin.000001	821	Query	1	821	use `test`; create database mysqltest3
-master-bin.000001	882	Query	1	882	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	1022	Query	1	1022	use `mysqltest2`; create table t1 (a int auto_increment primary key, b varchar(100))
-master-bin.000001	1129	Query	1	1129	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	1270	Intvar	1	1270	INSERT_ID=1
-master-bin.000001	1298	Query	1	1298	use `mysqltest2`; insert into t1 (b) values(@@character_set_server)
-master-bin.000001	1388	Query	1	1388	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	1529	Intvar	1	1529	INSERT_ID=2
-master-bin.000001	1557	Query	1	1557	use `mysqltest2`; insert into t1 (b) values(@@collation_server)
-master-bin.000001	1643	Query	1	1643	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	1784	Intvar	1	1784	INSERT_ID=3
-master-bin.000001	1812	Query	1	1812	use `mysqltest2`; insert into t1 (b) values(@@character_set_client)
-master-bin.000001	1902	Query	1	1902	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	2043	Intvar	1	2043	INSERT_ID=4
-master-bin.000001	2071	Query	1	2071	use `mysqltest2`; insert into t1 (b) values(@@character_set_connection)
-master-bin.000001	2165	Query	1	2165	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	2306	Intvar	1	2306	INSERT_ID=5
-master-bin.000001	2334	Query	1	2334	use `mysqltest2`; insert into t1 (b) values(@@collation_connection)
-master-bin.000001	2424	Query	1	2424	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	2564	Query	1	2564	use `mysqltest2`; truncate table t1
-master-bin.000001	2622	Query	1	2622	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	2762	Intvar	1	2762	INSERT_ID=1
-master-bin.000001	2790	Query	1	2790	use `mysqltest2`; insert into t1 (b) values(@@collation_connection)
-master-bin.000001	2880	Query	1	2880	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	3020	Intvar	1	3020	INSERT_ID=2
-master-bin.000001	3141	Query	1	3141	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	3282	Intvar	1	3282	INSERT_ID=3
-master-bin.000001	3310	Query	1	3310	use `mysqltest2`; insert into t1 (b) values(@@collation_connection)
-master-bin.000001	3400	Query	1	3400	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	3541	Intvar	1	3541	INSERT_ID=4
-master-bin.000001	3662	Query	1	3662	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	3803	Intvar	1	3803	INSERT_ID=74
-master-bin.000001	3831	Create_file	1	3831	db=mysqltest2;table=t1;file_id=1;block_len=581
-master-bin.000001	4504	Query	1	4504	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	4645	Intvar	1	4645	INSERT_ID=5
-master-bin.000001	4673	Exec_load	1	4673	;file_id=1
-master-bin.000001	4696	Query	1	4696	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	4837	Query	1	4837	use `mysqltest2`; truncate table t1
-master-bin.000001	4895	Query	1	4895	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	5036	Intvar	1	5036	INSERT_ID=1
-master-bin.000001	5064	User var	1	5064	@`a`=_cp850 0x4DFC6C6C6572 COLLATE cp850_general_ci
-master-bin.000001	5104	Query	1	5104	use `mysqltest2`; insert into t1 (b) values(collation(@a))
-master-bin.000001	5185	Query	1	5185	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	5326	Query	1	5326	use `mysqltest2`; drop database mysqltest2
-master-bin.000001	5391	Query	1	5391	SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
-master-bin.000001	5522	Query	1	5522	drop database mysqltest3
+master-bin.000001	79	Query	1	79	drop database if exists mysqltest2
+master-bin.000001	154	Query	1	154	drop database if exists mysqltest3
+master-bin.000001	229	Query	1	229	create database mysqltest2 character set latin2
+master-bin.000001	317	Query	1	317	use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=30
+master-bin.000001	451	Query	1	451	create database mysqltest3
+master-bin.000001	518	Query	1	518	use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64
+master-bin.000001	652	Query	1	652	drop database mysqltest3
+master-bin.000001	717	Query	1	717	use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64
+master-bin.000001	851	Query	1	851	create database mysqltest3
+master-bin.000001	918	Query	1	918	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	1058	Query	1	1058	use `mysqltest2`; create table t1 (a int auto_increment primary key, b varchar(100))
+master-bin.000001	1165	Query	1	1165	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	1306	Intvar	1	1306	INSERT_ID=1
+master-bin.000001	1334	Query	1	1334	use `mysqltest2`; insert into t1 (b) values(@@character_set_server)
+master-bin.000001	1424	Query	1	1424	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	1565	Intvar	1	1565	INSERT_ID=2
+master-bin.000001	1593	Query	1	1593	use `mysqltest2`; insert into t1 (b) values(@@collation_server)
+master-bin.000001	1679	Query	1	1679	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	1820	Intvar	1	1820	INSERT_ID=3
+master-bin.000001	1848	Query	1	1848	use `mysqltest2`; insert into t1 (b) values(@@character_set_client)
+master-bin.000001	1938	Query	1	1938	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	2079	Intvar	1	2079	INSERT_ID=4
+master-bin.000001	2107	Query	1	2107	use `mysqltest2`; insert into t1 (b) values(@@character_set_connection)
+master-bin.000001	2201	Query	1	2201	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	2342	Intvar	1	2342	INSERT_ID=5
+master-bin.000001	2370	Query	1	2370	use `mysqltest2`; insert into t1 (b) values(@@collation_connection)
+master-bin.000001	2460	Query	1	2460	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	2600	Query	1	2600	use `mysqltest2`; truncate table t1
+master-bin.000001	2658	Query	1	2658	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	2798	Intvar	1	2798	INSERT_ID=1
+master-bin.000001	2826	Query	1	2826	use `mysqltest2`; insert into t1 (b) values(@@collation_connection)
+master-bin.000001	2916	Query	1	2916	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=5,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	3056	Intvar	1	3056	INSERT_ID=2
+master-bin.000001	3177	Query	1	3177	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	3318	Intvar	1	3318	INSERT_ID=3
+master-bin.000001	3346	Query	1	3346	use `mysqltest2`; insert into t1 (b) values(@@collation_connection)
+master-bin.000001	3436	Query	1	3436	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	3577	Intvar	1	3577	INSERT_ID=4
+master-bin.000001	3698	Query	1	3698	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	3839	Intvar	1	3839	INSERT_ID=74
+master-bin.000001	3867	Create_file	1	3867	db=mysqltest2;table=t1;file_id=1;block_len=581
+master-bin.000001	4540	Query	1	4540	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	4681	Intvar	1	4681	INSERT_ID=5
+master-bin.000001	4709	Exec_load	1	4709	;file_id=1
+master-bin.000001	4732	Query	1	4732	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	4873	Query	1	4873	use `mysqltest2`; truncate table t1
+master-bin.000001	4931	Query	1	4931	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	5072	Intvar	1	5072	INSERT_ID=1
+master-bin.000001	5100	User var	1	5100	@`a`=_cp850 0x4DFC6C6C6572 COLLATE cp850_general_ci
+master-bin.000001	5140	Query	1	5140	use `mysqltest2`; insert into t1 (b) values(collation(@a))
+master-bin.000001	5221	Query	1	5221	use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	5362	Query	1	5362	drop database mysqltest2
+master-bin.000001	5427	Query	1	5427	SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
+master-bin.000001	5558	Query	1	5558	drop database mysqltest3
 set global character_set_server=latin2;
 ERROR HY000: Binary logging and replication forbid changing the global server character set or collation
 set global character_set_server=latin2;
@@ -200,8 +200,8 @@
 CDF32C20E7E020F0FBE1E0EBEAF3	CDF32C20E7E020F0FBE1E0EBEAF3
 stop slave;
 delete from t1;
-change master to master_log_pos=5801;
-start slave until master_log_file='master-bin.000001', master_log_pos=5937;
+change master to master_log_pos=5847;
+start slave until master_log_file='master-bin.000001', master_log_pos=5983;
 start slave;
 select hex(c1), hex(c2) from t1;
 hex(c1)	hex(c2)

--- 1.5/mysql-test/r/rpl_loaddata_rule_m.result	2004-03-20 11:31:15 +01:00
+++ 1.6/mysql-test/r/rpl_loaddata_rule_m.result	2004-11-24 09:15:31 +01:00
@@ -12,4 +12,6 @@
 load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
 show binlog events from 79;
 Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
+master-bin.000001	79	Query	1	79	drop database if exists mysqltest
+master-bin.000001	152	Query	1	152	create database mysqltest
 drop database mysqltest;

--- 1.4/mysql-test/t/rpl_charset.test	2004-09-23 12:16:45 +02:00
+++ 1.5/mysql-test/t/rpl_charset.test	2004-11-24 09:11:12 +01:00
@@ -154,9 +154,9 @@
 
 stop slave;
 delete from t1;
-change master to master_log_pos=5801;
-start slave until master_log_file='master-bin.000001', master_log_pos=5937;
-# Slave is supposed to stop _after_ the INSERT, even though 5937 is
+change master to master_log_pos=5847;
+start slave until master_log_file='master-bin.000001', master_log_pos=5983;
+# Slave is supposed to stop _after_ the INSERT, even though 5983 is
 # the position of the beginning of the INSERT; after SET slave is not
 # supposed to increment position.
 wait_for_slave_to_stop;
--- New file ---
+++ mysql-test/r/rpl_create_database.result	04/11/24 09:15:31
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
DROP DATABASE IF EXISTS prometheus;
Warnings:
Note	1008	Can't drop database 'prometheus'; database doesn't exist
DROP DATABASE IF EXISTS sisyfos;
Warnings:
Note	1008	Can't drop database 'sisyfos'; database doesn't exist
DROP DATABASE IF EXISTS bob;
Warnings:
Note	1008	Can't drop database 'bob'; database doesn't exist
DROP DATABASE IF EXISTS bob;
Warnings:
Note	1008	Can't drop database 'bob'; database doesn't exist
CREATE DATABASE prometheus;
CREATE DATABASE sisyfos;
CREATE DATABASE bob;
USE sisyfos;
CREATE TABLE t1 (b int);
INSERT INTO t1 VALUES(1);
USE bob;
CREATE TABLE t2 (b int);
INSERT INTO t2 VALUES(2);
ALTER DATABASE sisyfos CHARACTER SET latin1;
USE sisyfos;
ALTER DATABASE bob CHARACTER SET latin1;
SHOW BINLOG EVENTS;
Log_name	Pos	Event_type	Server_id	Orig_log_pos	Info
master-bin.000001	4	Start	1	4	Server ver: 4.1.8-debug-log, Binlog ver: 3
master-bin.000001	79	Query	1	79	DROP DATABASE IF EXISTS prometheus
master-bin.000001	154	Query	1	154	DROP DATABASE IF EXISTS sisyfos
master-bin.000001	223	Query	1	223	CREATE DATABASE prometheus
master-bin.000001	290	Query	1	290	CREATE DATABASE sisyfos
master-bin.000001	351	Query	1	351	use `sisyfos`; CREATE TABLE t1 (b int)
master-bin.000001	412	Query	1	412	use `sisyfos`; INSERT INTO t1 VALUES(1)
master-bin.000001	474	Query	1	474	ALTER DATABASE sisyfos CHARACTER SET latin1
SHOW DATABASES;
Database
bob
mysql
prometheus
sisyfos
test
SHOW DATABASES;
Database
mysql
prometheus
sisyfos
test
DROP DATABASE IF EXISTS prometheus;
DROP DATABASE IF EXISTS sisyfos;
DROP DATABASE IF EXISTS bob;

--- New file ---
+++ mysql-test/t/rpl_create_database-master.opt	04/11/24 09:11:08
--binlog-do-db=sisyfos --binlog-do-db=prometheus

--- New file ---
+++ mysql-test/t/rpl_create_database-slave.opt	04/11/24 09:11:09
--replicate-do-db=sisyfos --replicate-do-db=prometheus

--- New file ---
+++ mysql-test/t/rpl_create_database.test	04/11/24 09:11:09
#
# Tests for replication of statements that manipulate databases.
#
# For this test file, we have a number of databases. All databases
# with "greek" names will be replicated on the slave, while other names
# (e.g., american) will not be replicated. 
#

source include/master-slave.inc;

# Bug#6391 (binlog-do-db rules ignored)
# In this case, 'bob' should not be replicated to the slave. 
DROP DATABASE IF EXISTS prometheus;
DROP DATABASE IF EXISTS sisyfos;
DROP DATABASE IF EXISTS bob;
sync_slave_with_master;
# This database is not replicated
DROP DATABASE IF EXISTS bob;

connection master;
CREATE DATABASE prometheus;
CREATE DATABASE sisyfos;
CREATE DATABASE bob;

USE sisyfos;
# These should be replicated
CREATE TABLE t1 (b int);
INSERT INTO t1 VALUES(1);

USE bob;
# These should *not* be replicated
CREATE TABLE t2 (b int);
INSERT INTO t2 VALUES(2);

# Current database is now 'bob'
# The following should be replicated
ALTER DATABASE sisyfos CHARACTER SET latin1;

USE sisyfos;
# The following should *not* be replicated
ALTER DATABASE bob CHARACTER SET latin1;

SHOW BINLOG EVENTS;
SHOW DATABASES;
sync_slave_with_master;
SHOW DATABASES;

connection master;
DROP DATABASE IF EXISTS prometheus;
DROP DATABASE IF EXISTS sisyfos;
DROP DATABASE IF EXISTS bob;
sync_slave_with_master;

Thread
bk commit into 4.1 tree (mats:1.2140)Mats Kindahl24 Nov