From: Jon Olav Hauglid Date: January 19 2011 12:10pm Subject: bzr commit into mysql-trunk branch (jon.hauglid:3532) Bug#58709 List-Archive: http://lists.mysql.com/commits/129173 X-Bug: 58709 Message-Id: <201101191212.p0JBlA85011888@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4793456629464458340==" --===============4793456629464458340== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/x/mysql-trunk-bug58709/ based on revid:anders.song@stripped 3532 Jon Olav Hauglid 2011-01-19 Bug #58709 assert in mysql_execute_command The triggered assert checks that either an error has been reported or the statement has been killed if execution of a stored routine fails. It was triggered if a stored routine had a DELETE IGNORE statement which failed but due to IGNORE had not reported any error. This patch fixes the problem by changing mysql_delete() to return a value indicating failure only if an error has been reported or the statement has been killed. Test case added to delete.test. modified: mysql-test/r/delete.result mysql-test/t/delete.test sql/sql_delete.cc === modified file 'mysql-test/r/delete.result' --- a/mysql-test/r/delete.result 2010-10-04 08:25:04 +0000 +++ b/mysql-test/r/delete.result 2011-01-19 12:10:22 +0000 @@ -524,3 +524,26 @@ DELETE v2 FROM v2; ERROR HY000: Can not delete from join view 'test.v2' DROP VIEW v2, v1; DROP TABLE t1, t2; +# +# Bug#58709 assert in mysql_execute_command +# +DROP TABLE IF EXISTS t2, t1; +DROP PROCEDURE IF EXISTS p1; +CREATE TABLE t1 (i INT PRIMARY KEY) engine=InnoDB; +CREATE TABLE t2 (i INT, FOREIGN KEY (i) REFERENCES t1 (i) ON DELETE NO ACTION) engine=InnoDB; +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1); +DELETE IGNORE FROM t1 WHERE i = 1; +Warnings: +Error 1451 Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`i`) REFERENCES `t1` (`i`) ON DELETE NO ACTION) +CREATE PROCEDURE p1() DELETE IGNORE FROM t1 WHERE i = 1; +CALL p1(); +Warnings: +Error 1451 Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`i`) REFERENCES `t1` (`i`) ON DELETE NO ACTION) +PREPARE stm FROM 'CALL p1()'; +EXECUTE stm; +Warnings: +Error 1451 Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`i`) REFERENCES `t1` (`i`) ON DELETE NO ACTION) +DEALLOCATE PREPARE stm; +DROP TABLE t2, t1; +DROP PROCEDURE p1; === modified file 'mysql-test/t/delete.test' --- a/mysql-test/t/delete.test 2010-10-04 08:25:04 +0000 +++ b/mysql-test/t/delete.test 2011-01-19 12:10:22 +0000 @@ -580,3 +580,33 @@ DELETE v2 FROM v2; DROP VIEW v2, v1; DROP TABLE t1, t2; + + +--echo # +--echo # Bug#58709 assert in mysql_execute_command +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t2, t1; +DROP PROCEDURE IF EXISTS p1; +--enable_warnings + +CREATE TABLE t1 (i INT PRIMARY KEY) engine=InnoDB; +CREATE TABLE t2 (i INT, FOREIGN KEY (i) REFERENCES t1 (i) ON DELETE NO ACTION) engine=InnoDB; + +INSERT INTO t1 VALUES (1); +INSERT INTO t2 VALUES (1); + +DELETE IGNORE FROM t1 WHERE i = 1; + +CREATE PROCEDURE p1() DELETE IGNORE FROM t1 WHERE i = 1; +# This triggered the assert +CALL p1(); + +PREPARE stm FROM 'CALL p1()'; +# This also triggered the assert +EXECUTE stm; +DEALLOCATE PREPARE stm; + +DROP TABLE t2, t1; +DROP PROCEDURE p1; === modified file 'sql/sql_delete.cc' --- a/sql/sql_delete.cc 2010-12-17 09:41:21 +0000 +++ b/sql/sql_delete.cc 2011-01-19 12:10:22 +0000 @@ -413,7 +413,7 @@ cleanup: my_ok(thd, deleted); DBUG_PRINT("info",("%ld records deleted",(long) deleted)); } - DBUG_RETURN(error >= 0 || thd->is_error()); + DBUG_RETURN(thd->killed || thd->is_error()); } --===============4793456629464458340== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/jon.hauglid@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jon.hauglid@stripped # target_branch: file:///export/home/x/mysql-trunk-bug58709/ # testament_sha1: e81f3da48156b7b79d424b0361e989d9270eb881 # timestamp: 2011-01-19 13:10:26 +0100 # base_revision_id: anders.song@stripped\ # qiu8ubqy5j88wk70 # # Begin bundle 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 --===============4793456629464458340==--