diff --git a/mysql-test/suite/galera/r/mysql-wsrep#110.result b/mysql-test/suite/galera/r/mysql-wsrep#110.result new file mode 100644 index 00000000000..551c3666fb4 --- /dev/null +++ b/mysql-test/suite/galera/r/mysql-wsrep#110.result @@ -0,0 +1,38 @@ +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY); +CREATE TABLE t2 (f1 INTEGER PRIMARY KEY); +CREATE TABLE t3 (f1 INTEGER PRIMARY KEY); +CREATE TRIGGER tr1 AFTER INSERT ON t1 FOR EACH ROW CALL p1(NEW.f1); +CREATE PROCEDURE p1 (IN x INT) +BEGIN +DECLARE EXIT HANDLER FOR SQLEXCEPTION +BEGIN +ROLLBACK TO event_logging; +INSERT t3 VALUES (x); +END; +SAVEPOINT event_logging; +INSERT INTO t2 VALUES (x); +END| +INSERT INTO t2 VALUES (1); +INSERT INTO t1 VALUES (1); +SELECT COUNT(*) = 1 FROM t1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t3; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t3; +COUNT(*) = 1 +1 +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +DROP PROCEDURE p1; diff --git a/mysql-test/suite/galera/t/mysql-wsrep#110.test b/mysql-test/suite/galera/t/mysql-wsrep#110.test new file mode 100644 index 00000000000..43520f257a1 --- /dev/null +++ b/mysql-test/suite/galera/t/mysql-wsrep#110.test @@ -0,0 +1,51 @@ +# +# codership/mysql-wsrep/110 - Assertion `table_found' failed in unpack_row() with SAVEPOINT, trigger, error handler +# + +--source include/galera_cluster.inc +--source include/have_innodb.inc + +--connection node_1 + +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY); +CREATE TABLE t2 (f1 INTEGER PRIMARY KEY); +CREATE TABLE t3 (f1 INTEGER PRIMARY KEY); + +CREATE TRIGGER tr1 AFTER INSERT ON t1 FOR EACH ROW CALL p1(NEW.f1); + + +DELIMITER |; + +CREATE PROCEDURE p1 (IN x INT) +BEGIN + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK TO event_logging; + INSERT t3 VALUES (x); + END; + SAVEPOINT event_logging; + + INSERT INTO t2 VALUES (x); +END| +DELIMITER ;| + + +INSERT INTO t2 VALUES (1); +INSERT INTO t1 VALUES (1); + +SELECT COUNT(*) = 1 FROM t1; +SELECT COUNT(*) = 1 FROM t2; +SELECT COUNT(*) = 1 FROM t3; + +--connection node_2 + +SELECT COUNT(*) = 1 FROM t1; +SELECT COUNT(*) = 1 FROM t2; +SELECT COUNT(*) = 1 FROM t3; + +--connection node_1 + +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +DROP PROCEDURE p1; diff --git a/mysql-test/suite/rpl/r/mysql-wsrep#110-2.result b/mysql-test/suite/rpl/r/mysql-wsrep#110-2.result new file mode 100644 index 00000000000..1bc802a41f7 --- /dev/null +++ b/mysql-test/suite/rpl/r/mysql-wsrep#110-2.result @@ -0,0 +1,28 @@ +include/master-slave.inc +Warnings: +Note #### Sending passwords in plain text without SSL/TLS is extremely insecure. +Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. +[connection master] +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY); +CREATE TABLE t2 (f1 INTEGER PRIMARY KEY); +CREATE TABLE t3 (f1 INTEGER PRIMARY KEY); +CREATE TRIGGER tr1 AFTER INSERT ON t1 FOR EACH ROW CALL p1(NEW.f1); +CREATE PROCEDURE p1 (IN x INT) +BEGIN +DECLARE EXIT HANDLER FOR SQLEXCEPTION +BEGIN +ROLLBACK TO event_logging; +INSERT t3 VALUES (x); +END; +SAVEPOINT event_logging; +INSERT INTO t2 VALUES (x); +RELEASE SAVEPOINT event_logging; +END| +INSERT INTO t2 VALUES (1); +INSERT INTO t1 VALUES (1); +DROP TABLE t3; +DROP TABLE t2; +DROP TABLE t1; +DROP PROCEDURE p1; +include/sync_slave_sql_with_master.inc +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/mysql-wsrep#110-2.test b/mysql-test/suite/rpl/t/mysql-wsrep#110-2.test new file mode 100644 index 00000000000..4a8aa1edef6 --- /dev/null +++ b/mysql-test/suite/rpl/t/mysql-wsrep#110-2.test @@ -0,0 +1,44 @@ +# +# codership/mysql-wsrep/110 - Assertion `table_found' failed in unpack_row() with SAVEPOINT, trigger, error handler +# + +--source include/have_innodb.inc +--source include/have_binlog_format_row.inc +--source include/master-slave.inc + +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY); +CREATE TABLE t2 (f1 INTEGER PRIMARY KEY); +CREATE TABLE t3 (f1 INTEGER PRIMARY KEY); + +CREATE TRIGGER tr1 AFTER INSERT ON t1 FOR EACH ROW CALL p1(NEW.f1); + +DELIMITER |; + +CREATE PROCEDURE p1 (IN x INT) +BEGIN + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK TO event_logging; + INSERT t3 VALUES (x); + END; + SAVEPOINT event_logging; + + INSERT INTO t2 VALUES (x); + + RELEASE SAVEPOINT event_logging; +END| +DELIMITER ;| + +INSERT INTO t2 VALUES (1); +INSERT INTO t1 VALUES (1); + + +DROP TABLE t3; +DROP TABLE t2; +DROP TABLE t1; + +DROP PROCEDURE p1; + +--source include/sync_slave_sql_with_master.inc +--source include/rpl_end.inc +