Commit 329d1a7b authored by hezx@mail.hezx.com's avatar hezx@mail.hezx.com
Browse files

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.
parent c2f00cc3
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
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;
+29 −0
Original line number Diff line number Diff line
# 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;
+1 −0
Original line number Diff line number Diff line
@@ -1441,6 +1441,7 @@ static void fix_trans_mem_root(THD *thd, enum_var_type type)
static void fix_server_id(THD *thd, enum_var_type type)
{
  server_id_supplied = 1;
  thd->server_id= server_id;
}