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);