Bug #60580 | Statement improperly replicated crashes slave SQL thread | ||
---|---|---|---|
Submitted: | 22 Mar 2011 8:56 | Modified: | 13 May 2011 10:58 |
Reporter: | Romain Muller | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Replication | Severity: | S1 (Critical) |
Version: | 5.5.10, 5.6.3 | OS: | Linux |
Assigned to: | CPU Architecture: | Any | |
Tags: | regression, replication |
[22 Mar 2011 8:56]
Romain Muller
[23 Mar 2011 21:19]
Sveta Smirnova
Thank you for the report. Verified as described. This is regression: bug does not exists in 5.1 and 5.0 Test case for MTR: --source include/master-slave.inc create table t1(f1 int, f2 int); create table t2(f1 int, f2 timestamp); insert into t2 values(1, '2011-03-22 21:01:28'); insert into t2 values(2, '2011-03-21 21:01:28'); insert into t2 values(3, '2011-03-20 21:01:28'); create view v1 as select * from t2 where f2 < UTC_TIMESTAMP(); --exec echo 1 > $MYSQL_TEST_DIR/var/tmp/rpl_bug60580.csv --eval LOAD DATA LOCAL INFILE '$MYSQL_TEST_DIR/var/tmp/rpl_bug60580.csv' INTO TABLE t1 (@f1) set f2 = (select f1 from v1 where f1=@f1) select * from t1; sleep 1; connection slave; --vertical_results show slave status; select * from t1;
[13 May 2011 10:58]
Jon Stephens
Documented bugfix as follows in the 5.5.15 and 5.6.3 changelogs: If LOAD DATA INFILE statement--replicated using statement-based replication--featured a SET clause, the name-value pairs were regenerated using a method intended primarily for generating output for statements such as EXPLAIN EXTENDED, and which cannot be relied on to return valid SQL. This could in certain cases lead to a crash on the slave. To fix this problem, we now name each value in its original, user-supplied form, and use that to create LOAD DATA INFILE statements for statement-based replication. Closed.