MDEV-7585 Assertion `thd->is_error() || kill_errno || thd->killed == ABORT_QUERY' failed in ha_rows filesort

if we clear the error status (in THD::clear_error())
make sure to clear the thd->killed == KILL_BAD_DATA too,
because it was caused by the error that we're clearing.
This commit is contained in:
Sergei Golubchik 2015-04-25 00:19:20 +02:00
parent 8e781601f4
commit 9fd65db329
3 changed files with 25 additions and 0 deletions

View File

@ -0,0 +1,9 @@
SET sql_mode=STRICT_TRANS_TABLES;
CREATE TABLE t0 (i INT) ENGINE=MyISAM;
CREATE VIEW v1 AS SELECT * FROM t0;
CREATE VIEW v2 AS SELECT * FROM v1;
DROP VIEW IF EXISTS v1;
CREATE TABLE t1 (i INT) ENGINE=MyISAM;
INSERT INTO t1 SELECT TABLE_ROWS FROM information_schema.tables ORDER BY TABLE_ROWS;
DROP VIEW v2;
DROP TABLE t1, t0;

View File

@ -0,0 +1,14 @@
#
# MDEV-7585 Assertion `thd->is_error() || kill_errno || thd->killed == ABORT_QUERY' failed in ha_rows filesort
#
SET sql_mode=STRICT_TRANS_TABLES;
CREATE TABLE t0 (i INT) ENGINE=MyISAM;
CREATE VIEW v1 AS SELECT * FROM t0;
CREATE VIEW v2 AS SELECT * FROM v1;
DROP VIEW IF EXISTS v1;
CREATE TABLE t1 (i INT) ENGINE=MyISAM;
INSERT INTO t1 SELECT TABLE_ROWS FROM information_schema.tables ORDER BY TABLE_ROWS;
DROP VIEW v2;
DROP TABLE t1, t0;

View File

@ -2620,6 +2620,8 @@ public:
if (stmt_da->is_error())
stmt_da->reset_diagnostics_area();
is_slave_error= 0;
if (killed == KILL_BAD_DATA)
killed= NOT_KILLED; // KILL_BAD_DATA can be reset w/o a mutex
DBUG_VOID_RETURN;
}
#ifndef EMBEDDED_LIBRARY