Below is the list of changes that have just been committed into a local
5.1 repository of hezx. When hezx 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://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-12-20 13:23:38+08:00, hezx@hezx.(none) +3 -0
BUG#28908 Replication: set global server_id is not setting the session server_id
When set the server-id dynamically, the server_id member of current thread is not
updated.
Update the server_id member of current thread after updated the global variable value.
mysql-test/suite/rpl/r/rpl_server_id.result@stripped, 2007-12-20 13:23:33+08:00,
hezx@hezx.(none) +34 -0
Add test for BUG#28908
mysql-test/suite/rpl/r/rpl_server_id.result@stripped, 2007-12-20 13:23:33+08:00,
hezx@hezx.(none) +0 -0
mysql-test/suite/rpl/t/rpl_server_id.test@stripped, 2007-12-20 13:23:33+08:00,
hezx@hezx.(none) +29 -0
Add test for BUG#28908
mysql-test/suite/rpl/t/rpl_server_id.test@stripped, 2007-12-20 13:23:33+08:00,
hezx@hezx.(none) +0 -0
sql/set_var.cc@stripped, 2007-12-20 13:23:33+08:00, hezx@hezx.(none) +1 -0
Update server_id of current thread
diff -Nrup a/mysql-test/suite/rpl/r/rpl_server_id.result
b/mysql-test/suite/rpl/r/rpl_server_id.result
--- /dev/null Wed Dec 31 16:00:00 196900
+++ b/mysql-test/suite/rpl/r/rpl_server_id.result 2007-12-20 13:23:33 +08:00
@@ -0,0 +1,34 @@
+set global server_id=1;
+reset master;
+drop table if exists t1,t2,t3;
+create table t1 (a int);
+select @@server_id;
+@@server_id
+1
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query 1 # use `test`; drop table if exists t1,t2,t3
+master-bin.000001 # Query 1 # use `test`; create table t1 (a int)
+set global server_id=2;
+create table t2 (b int);
+select @@server_id;
+@@server_id
+2
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query 1 # use `test`; drop table if exists t1,t2,t3
+master-bin.000001 # Query 1 # use `test`; create table t1 (a int)
+master-bin.000001 # Query 2 # use `test`; create table t2 (b int)
+set global server_id=3;
+create table t3 (c int);
+select @@server_id;
+@@server_id
+3
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query 1 # use `test`; drop table if exists t1,t2,t3
+master-bin.000001 # Query 1 # use `test`; create table t1 (a int)
+master-bin.000001 # Query 2 # use `test`; create table t2 (b int)
+master-bin.000001 # Query 3 # use `test`; create table t3 (c int)
+set global server_id=1;
+drop table t1,t2,t3;
diff -Nrup a/mysql-test/suite/rpl/t/rpl_server_id.test
b/mysql-test/suite/rpl/t/rpl_server_id.test
--- /dev/null Wed Dec 31 16:00:00 196900
+++ b/mysql-test/suite/rpl/t/rpl_server_id.test 2007-12-20 13:23:33 +08:00
@@ -0,0 +1,29 @@
+# Test for BUG#28908 Replication: set global server_id is not setting the session
server_id
+
+-- source include/have_log_bin.inc
+
+let $saved_server_id=`select @@server_id`;
+set global server_id=1;
+reset master;
+
+-- disable_warnings
+drop table if exists t1,t2,t3;
+-- enable_warnings
+
+create table t1 (a int);
+select @@server_id;
+source include/show_binlog_events2.inc;
+
+set global server_id=2;
+create table t2 (b int);
+select @@server_id;
+source include/show_binlog_events2.inc;
+
+set global server_id=3;
+create table t3 (c int);
+select @@server_id;
+source include/show_binlog_events2.inc;
+
+# cleanup
+eval set global server_id=$saved_server_id;
+drop table t1,t2,t3;
diff -Nrup a/sql/set_var.cc b/sql/set_var.cc
--- a/sql/set_var.cc 2007-12-12 18:19:31 +08:00
+++ b/sql/set_var.cc 2007-12-20 13:23:33 +08:00
@@ -1186,6 +1186,7 @@ static void fix_trans_mem_root(THD *thd,
static void fix_server_id(THD *thd, enum_var_type type)
{
server_id_supplied = 1;
+ thd->set_server_id(server_id);
}
| Thread |
|---|
| • bk commit into 5.1 tree (hezx:1.2657) BUG#28908 | hezx | 20 Dec |