diff options
author | Sergei Golubchik <sergii@pisem.net> | 2012-04-26 19:21:37 +0200 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2012-04-26 19:21:37 +0200 |
commit | 8cfa6c3f33d28052aadfed2efb8ef41d03bb97e7 (patch) | |
tree | 66397b9ba036039bf70118f73c1d140b8acb851a | |
parent | c04786d3e3d4fad53b46604ce37643f3ea4da1fa (diff) | |
download | mariadb-git-8cfa6c3f33d28052aadfed2efb8ef41d03bb97e7.tar.gz |
MDEV-216 lp:976104 - Assertion `0' failed in my_message_sql on UPDATE IGNORE, or unknown error on release build
Don't send_error at the end of mysql_multi_update() if select failed.
The error, if there was any, was already sent by mysql_select
-rw-r--r-- | mysql-test/r/update_ignore_216.result | 9 | ||||
-rw-r--r-- | mysql-test/t/update_ignore_216.test | 13 | ||||
-rw-r--r-- | sql/sql_update.cc | 4 |
3 files changed, 22 insertions, 4 deletions
diff --git a/mysql-test/r/update_ignore_216.result b/mysql-test/r/update_ignore_216.result new file mode 100644 index 00000000000..4abc1eae06e --- /dev/null +++ b/mysql-test/r/update_ignore_216.result @@ -0,0 +1,9 @@ +CREATE TABLE t1 ( a INT, b CHAR(3) ); +INSERT INTO t1 VALUES ( 1, 'foo' ); +CREATE TABLE t2 ( c CHAR(3), d INT ); +INSERT INTO t2 VALUES ( 'foo', 1 ); +UPDATE IGNORE t1, t2 SET b = 'bar', c = 'bar' + WHERE a != ( SELECT 1 UNION SELECT 2 ); +Warnings: +Warning 1242 Subquery returns more than 1 row +DROP TABLE t1, t2; diff --git a/mysql-test/t/update_ignore_216.test b/mysql-test/t/update_ignore_216.test new file mode 100644 index 00000000000..bae3930e1a7 --- /dev/null +++ b/mysql-test/t/update_ignore_216.test @@ -0,0 +1,13 @@ +# +# MDEV-216 lp:976104 - Assertion `0' failed in my_message_sql on UPDATE IGNORE, or unknown error on release build +# + +CREATE TABLE t1 ( a INT, b CHAR(3) ); +INSERT INTO t1 VALUES ( 1, 'foo' ); +CREATE TABLE t2 ( c CHAR(3), d INT ); +INSERT INTO t2 VALUES ( 'foo', 1 ); + +UPDATE IGNORE t1, t2 SET b = 'bar', c = 'bar' + WHERE a != ( SELECT 1 UNION SELECT 2 ); + +DROP TABLE t1, t2; diff --git a/sql/sql_update.cc b/sql/sql_update.cc index cf03cc597c8..4f816e5f032 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -1293,11 +1293,7 @@ bool mysql_multi_update(THD *thd, DBUG_PRINT("info",("res: %d report_error: %d", res, (int) thd->is_error())); res|= thd->is_error(); if (unlikely(res)) - { - /* If we had a another error reported earlier then this will be ignored */ - result->send_error(ER_UNKNOWN_ERROR, ER(ER_UNKNOWN_ERROR)); result->abort(); - } delete result; thd->abort_on_warning= 0; DBUG_RETURN(FALSE); |