Commit d5cc204e authored by unknown's avatar unknown

Bug #28839 Errors in strict mode silently stop SQL thread if --slave-skip-errors exists.

slave_sql thread calls thd->clear_error() to force error to be ignored,
though this method didn't clear thd->killed state, what causes
slave_sql thread to stop.

clear thd->killed state if we ignore an error


mysql-test/r/rpl_skip_error.result:
  Bug #28839 Errors in strict mode silently stop SQL thread if --slave-skip-errors exists.
  
  test result
mysql-test/t/rpl_skip_error.test:
  Bug #28839 Errors in strict mode silently stop SQL thread if --slave-skip-errors exists.
  
  test case
sql/log_event.cc:
  Bug #28839 Errors in strict mode silently stop SQL thread if --slave-skip-errors exists.
  
  clear thd->killed state if we ignore the error
parent ccae0cf8
...@@ -14,3 +14,22 @@ n ...@@ -14,3 +14,22 @@ n
2 2
3 3
drop table t1; drop table t1;
create table t1(a int primary key);
insert into t1 values (1),(2);
delete from t1 where @@server_id=1;
set sql_mode=strict_trans_tables;
select @@server_id;
@@server_id
1
insert into t1 values (1),(2),(3);
select @@server_id;
@@server_id
2
select * from t1;
a
1
2
show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
Waiting for master to send event 127.0.0.1 root 9306 1 master-bin.000001 843 slave-relay-bin.000003 981 master-bin.000001 Yes Yes 0 0 843 981 None 0 No 0
drop table t1;
...@@ -17,3 +17,22 @@ connection master; ...@@ -17,3 +17,22 @@ connection master;
drop table t1; drop table t1;
sync_with_master; sync_with_master;
# End of 4.1 tests # End of 4.1 tests
#
# #28839 Errors in strict mode silently stop SQL thread if --slave-skip-errors exists
#
create table t1(a int primary key);
insert into t1 values (1),(2);
delete from t1 where @@server_id=1;
set sql_mode=strict_trans_tables;
select @@server_id;
insert into t1 values (1),(2),(3);
sync_slave_with_master;
connection slave;
select @@server_id;
select * from t1;
show slave status;
connection master;
drop table t1;
sync_with_master;
# End of 5.0 tests
...@@ -1964,6 +1964,7 @@ Default database: '%s'. Query: '%s'", ...@@ -1964,6 +1964,7 @@ Default database: '%s'. Query: '%s'",
{ {
DBUG_PRINT("info",("error ignored")); DBUG_PRINT("info",("error ignored"));
clear_all_errors(thd, rli); clear_all_errors(thd, rli);
thd->killed= THD::NOT_KILLED;
} }
/* /*
Other cases: mostly we expected no error and get one. Other cases: mostly we expected no error and get one.
......
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