summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2012-04-26 19:21:37 +0200
committerSergei Golubchik <sergii@pisem.net>2012-04-26 19:21:37 +0200
commit8cfa6c3f33d28052aadfed2efb8ef41d03bb97e7 (patch)
tree66397b9ba036039bf70118f73c1d140b8acb851a
parentc04786d3e3d4fad53b46604ce37643f3ea4da1fa (diff)
downloadmariadb-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.result9
-rw-r--r--mysql-test/t/update_ignore_216.test13
-rw-r--r--sql/sql_update.cc4
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);