diff options
author | Magne Mahre <magne.mahre@sun.com> | 2009-11-18 10:32:03 +0100 |
---|---|---|
committer | Magne Mahre <magne.mahre@sun.com> | 2009-11-18 10:32:03 +0100 |
commit | 3987c7ac4b7ecfde471c10386bb413205809dfe1 (patch) | |
tree | 1ada061831543d420f8600738954bcf6ff60f1d6 /mysql-test/t/delete.test | |
parent | eb7bfcac405045541a4fc156e9c34a448d4dd128 (diff) | |
download | mariadb-git-3987c7ac4b7ecfde471c10386bb413205809dfe1.tar.gz |
Bug #46425 crash in Diagnostics_area::set_ok_status , empty statement,
DELETE IGNORE
The ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG error was set in the
diagnostics area when it happened, but the DELETE cleanup code
never checked for a non-fatal error condition, thus trying to
set diag.area to "ok". This triggered an assert checking that
the diag.area was empty.
The fix was to test if there existed a non-fatal error condition
(thd->is_error() before ok'ing the operation.
Diffstat (limited to 'mysql-test/t/delete.test')
-rw-r--r-- | mysql-test/t/delete.test | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/mysql-test/t/delete.test b/mysql-test/t/delete.test index d77f5eb128b..a5dff38c078 100644 --- a/mysql-test/t/delete.test +++ b/mysql-test/t/delete.test @@ -336,3 +336,25 @@ SELECT * FROM t2; SELECT * FROM t3; DROP TABLE t1, t2, t3; + +--echo # +--echo # Bug #46425 crash in Diagnostics_area::set_ok_status, +--echo # empty statement, DELETE IGNORE +--echo # + +CREATE table t1 (i INTEGER); + +INSERT INTO t1 VALUES (1); + +--delimiter | + +CREATE TRIGGER tr1 AFTER DELETE ON t1 FOR EACH ROW +BEGIN + INSERT INTO t1 SELECT * FROM t1 AS A; +END | + +--delimiter ; +--error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG +DELETE IGNORE FROM t1; + +DROP TABLE t1;
\ No newline at end of file |