Commit 9fca6645 authored by Rucha Deodhar's avatar Rucha Deodhar

MDEV-5628: Assertion `! is_set()' or `!is_set() || (m_status == DA_OK_BULK &&

is_bulk_op())' fails on UPDATE on a partitioned table with subquery
(MySQL:71630)

Analysis and fix: Error is not checked. So correct error state is not returned.
Fix: Check for error and return the error state.
parent d36cd5f0
......@@ -2796,5 +2796,16 @@ id
16
drop table t1;
#
# MDEV-5628: Assertion `! is_set()' or `!is_set() ||
# (m_status == DA_OK_BULK && is_bulk_op())' fails on UPDATE on a
# partitioned table with subquery (MySQL:71630)
#
CREATE TABLE t1 (a INT) PARTITION BY HASH(a) PARTITIONS 2;
CREATE TABLE t2 (b INT);
INSERT INTO t2 VALUES (1),(2);
UPDATE t1 SET a = 7 WHERE a = ( SELECT b FROM t2 ) ORDER BY a LIMIT 6;
ERROR 21000: Subquery returns more than 1 row
DROP TABLE t1,t2;
#
# End of 10.1 tests
#
......@@ -2998,6 +2998,22 @@ insert t1 values (6, 'ab'), (4, 'ab'), (5, 'ab'), (16, 'ab'), (14, 'ab'), (15, '
select id from t1 where data = 'ab' order by id;
drop table t1;
--echo #
--echo # MDEV-5628: Assertion `! is_set()' or `!is_set() ||
--echo # (m_status == DA_OK_BULK && is_bulk_op())' fails on UPDATE on a
--echo # partitioned table with subquery (MySQL:71630)
--echo #
CREATE TABLE t1 (a INT) PARTITION BY HASH(a) PARTITIONS 2;
CREATE TABLE t2 (b INT);
INSERT INTO t2 VALUES (1),(2);
--error ER_SUBQUERY_NO_1_ROW
UPDATE t1 SET a = 7 WHERE a = ( SELECT b FROM t2 ) ORDER BY a LIMIT 6;
DROP TABLE t1,t2;
--echo #
--echo # End of 10.1 tests
--echo #
......@@ -413,6 +413,8 @@ int mysql_update(THD *thd,
query_plan.set_no_partitions();
if (thd->lex->describe || thd->lex->analyze_stmt)
goto produce_explain_and_leave;
if (thd->is_error())
DBUG_RETURN(1);
my_ok(thd); // No matching records
DBUG_RETURN(0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment