diff options
author | Martin Hansson <martin.hansson@oracle.com> | 2010-09-07 09:58:05 +0200 |
---|---|---|
committer | Martin Hansson <martin.hansson@oracle.com> | 2010-09-07 09:58:05 +0200 |
commit | 446cc653c0ab13a6fec8ab54de9f5596389b08bc (patch) | |
tree | b5a71beeffb63735a0ec8e19060817e72a1751b5 /mysql-test/r/multi_update.result | |
parent | d2d4fdb23f6b38ff6718a35120043627582ee836 (diff) | |
download | mariadb-git-446cc653c0ab13a6fec8ab54de9f5596389b08bc.tar.gz |
Bug#54543: update ignore with incorrect subquery leads to assertion failure:
inited==INDEX
When an error occurs while sending the data in a temporary table there was no
cleanup performed. This caused a failed assertion in the case when different
access methods were used for populating the table vs. retrieving the data from
the table if IGNORE was specified and sql_safe_updates = 0. In this case
execution continues, but the handler expects to continue with the access
method used for row retrieval.
Fixed by doing the cleanup even if errors occur.
Diffstat (limited to 'mysql-test/r/multi_update.result')
-rw-r--r-- | mysql-test/r/multi_update.result | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/mysql-test/r/multi_update.result b/mysql-test/r/multi_update.result index ae72f416c79..d77ad1d2953 100644 --- a/mysql-test/r/multi_update.result +++ b/mysql-test/r/multi_update.result @@ -639,4 +639,24 @@ SET SESSION sql_safe_updates = 1; UPDATE IGNORE t1, t1 t1a SET t1.a = 1 WHERE t1a.a = 1; ERROR HY000: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column DROP TABLE t1; +# +# Bug#54543: update ignore with incorrect subquery leads to assertion +# failure: inited==INDEX +# +SET SESSION sql_safe_updates = 0; +CREATE TABLE t1 ( a INT ); +INSERT INTO t1 VALUES (1), (2); +CREATE TABLE t2 ( a INT ); +INSERT INTO t2 VALUES (1), (2); +CREATE TABLE t3 ( a INT ); +INSERT INTO t3 VALUES (1), (2); +# Should not crash +UPDATE IGNORE +( SELECT ( SELECT COUNT(*) FROM t1 GROUP BY a, @v ) a FROM t2 ) x, t3 +SET t3.a = 0; +Warnings: +Error 1242 Subquery returns more than 1 row +Error 1242 Subquery returns more than 1 row +DROP TABLE t1, t2, t3; +SET SESSION sql_safe_updates = DEFAULT; end of tests |