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

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
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;
# 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;
...@@ -1441,6 +1441,7 @@ static void fix_trans_mem_root(THD *thd, enum_var_type type) ...@@ -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) static void fix_server_id(THD *thd, enum_var_type type)
{ {
server_id_supplied = 1; server_id_supplied = 1;
thd->server_id= server_id;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment