mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
fixed alias drop bug in binlog
fixed skip counter to do the RightThing (TM) when the user messes up. Still do RightThing when he gets it right. mysql-test/r/rpl000016.result: updated test result mysql-test/t/rpl000013.test: test alias bug mysql-test/t/rpl000016.test: test for proper skip when the user messes up sql/slave.cc: proper skip even when the user goofs up sql/sql_base.cc: drop real name, not last used alias in the log
This commit is contained in:
@ -10,7 +10,7 @@ master-bin.003
|
||||
Log_name
|
||||
master-bin.003
|
||||
Master_Host Master_User Master_Port Connect_retry Log_File Pos Slave_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter
|
||||
127.0.0.1 root 9999 60 master-bin.003 184 Yes 0 0
|
||||
127.0.0.1 root 9999 60 master-bin.003 206 Yes 0 0
|
||||
m
|
||||
34
|
||||
65
|
||||
|
@ -12,7 +12,7 @@ insert into t2 select * from t1;
|
||||
connection master1;
|
||||
create temporary table t1 (n int);
|
||||
insert into t1 values (4),(5);
|
||||
insert into t2 select * from t1;
|
||||
insert into t2 select * from t1 as t10;
|
||||
save_master_pos;
|
||||
disconnect master;
|
||||
connection slave;
|
||||
|
@ -28,7 +28,7 @@ select * from t1;
|
||||
connection master;
|
||||
flush logs;
|
||||
drop table if exists t2;
|
||||
create table t2(m int not null primary key);
|
||||
create table t2(m int not null auto_increment primary key);
|
||||
insert into t2 values (34),(67),(123);
|
||||
save_master_pos;
|
||||
flush logs;
|
||||
@ -44,7 +44,8 @@ insert into t2 values(1234);
|
||||
#same value on the master
|
||||
connection master;
|
||||
save_master_pos;
|
||||
insert into t2 values(1234);
|
||||
set insert_id=1234;
|
||||
insert into t2 values(NULL);
|
||||
connection slave;
|
||||
sync_with_master;
|
||||
|
||||
|
@ -885,7 +885,12 @@ static int exec_event(THD* thd, NET* net, MASTER_INFO* mi, int event_len)
|
||||
|
||||
mi->inc_pos(event_len);
|
||||
flush_master_info(mi);
|
||||
if(slave_skip_counter)
|
||||
if(slave_skip_counter && /* protect against common user error of
|
||||
setting the counter to 1 instead of 2
|
||||
while recovering from an failed
|
||||
auto-increment insert */
|
||||
!(type_code == INTVAR_EVENT &&
|
||||
slave_skip_counter == 1))
|
||||
--slave_skip_counter;
|
||||
delete ev;
|
||||
return 0; // avoid infinite update loops
|
||||
|
@ -527,10 +527,10 @@ void close_temporary_tables(THD *thd)
|
||||
if (query) // we might be out of memory, but this is not fatal
|
||||
{
|
||||
// skip temporary tables not created directly by the user
|
||||
if (table->table_name[0] != '#')
|
||||
if (table->real_name[0] != '#')
|
||||
{
|
||||
end = strxmov(end,table->table_cache_key,".",
|
||||
table->table_name,",", NullS);
|
||||
table->real_name,",", NullS);
|
||||
// here we assume table_cache_key always starts
|
||||
// with \0 terminated db name
|
||||
found_user_tables = 1;
|
||||
|
Reference in New Issue
Block a user