Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 50e207e3762cb571d9ee7d4fe7e2cdcc > files > 17

solidmysql-5.0.51-1mdv2009.0.src.rpm

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;
 }