mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #29136 erred multi-delete on trans table does not rollback the statement
similar to bug_27716, but it was stressed on in the synopsis on that there is another side of the artifact affecting behaviour in transaction. Fixed with deploying multi_delete::send_error() - otherwise never called - and refining its logic to perform binlogging job if needed. The changeset includes the following side effects: - added tests to check bug_23333's scenarios on the mixture of tables for multi_update; - fixes bug@30763 with two-liner patch and a test coinciding to one added for bug_23333.
This commit is contained in:
@ -574,4 +574,38 @@ show master status /* there must be the UPDATE query event */;
|
||||
# cleanup bug#27716
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# Bug #29136 erred multi-delete on trans table does not rollback
|
||||
#
|
||||
|
||||
# prepare
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2, t3;
|
||||
--enable_warnings
|
||||
CREATE TABLE t1 (a int, PRIMARY KEY (a));
|
||||
CREATE TABLE t2 (a int, PRIMARY KEY (a));
|
||||
CREATE TABLE t3 (a int, PRIMARY KEY (a)) ENGINE=MyISAM;
|
||||
create trigger trg_del_t3 before delete on t3 for each row insert into t1 values (1);
|
||||
|
||||
insert into t2 values (1),(2);
|
||||
insert into t3 values (1),(2);
|
||||
reset master;
|
||||
|
||||
# exec cases B, A - see innodb.test
|
||||
|
||||
# B. send_eof() and send_error() afterward
|
||||
|
||||
--error ER_DUP_ENTRY
|
||||
delete t3.* from t2,t3 where t2.a=t3.a;
|
||||
|
||||
# check
|
||||
select count(*) from t1 /* must be 1 */;
|
||||
select count(*) from t3 /* must be 1 */;
|
||||
# the query must be in binlog (no surprise though)
|
||||
source include/show_binlog_events.inc;
|
||||
|
||||
# cleanup bug#29136
|
||||
drop table t1, t2, t3;
|
||||
|
||||
|
||||
--echo end of tests
|
||||
|
Reference in New Issue
Block a user