From: hezxDate: December 21 2007 4:02am Subject: bk commit into 5.0 tree (hezx:1.2560) BUG#28908 Below is the list of changes that have just been committed into a local 5.0 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-21 11:02:48+08:00, hezx@stripped +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/r/rpl_server_id.result@stripped, 2007-12-21 11:02:44+08:00, hezx@stripped +34 -0 Add test for BUG#28908 mysql-test/r/rpl_server_id.result@stripped, 2007-12-21 11:02:44+08:00, hezx@stripped +0 -0 mysql-test/t/rpl_server_id.test@stripped, 2007-12-21 11:02:44+08:00, hezx@stripped +29 -0 Add test for BUG#28908 mysql-test/t/rpl_server_id.test@stripped, 2007-12-21 11:02:44+08:00, hezx@stripped +0 -0 sql/set_var.cc@stripped, 2007-12-21 11:02:44+08:00, hezx@stripped +1 -0 Update server_id of current thread #diff -Nrup a/mysql-test/r/rpl_server_id.result b/mysql-test/r/rpl_server_id.result #--- /dev/null Wed Dec 31 16:00:00 196900 #+++ b/mysql-test/r/rpl_server_id.result 2007-12-21 11:02:44 +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/t/rpl_server_id.test b/mysql-test/t/rpl_server_id.test #--- /dev/null Wed Dec 31 16:00:00 196900 #+++ b/mysql-test/t/rpl_server_id.test 2007-12-21 11:02:44 +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-10-23 21:48:56 +08:00 +++ b/sql/set_var.cc 2007-12-21 11:02:44 +08:00 @@ -1441,6 +1441,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->server_id= server_id; }