From 9fd65db329b7186faeab79e23ae3be356973fb4d Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sat, 25 Apr 2015 00:19:20 +0200 Subject: [PATCH] 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. --- mysql-test/r/filesort_bad_i_s-7585.result | 9 +++++++++ mysql-test/t/filesort_bad_i_s-7585.test | 14 ++++++++++++++ sql/sql_class.h | 2 ++ 3 files changed, 25 insertions(+) create mode 100644 mysql-test/r/filesort_bad_i_s-7585.result create mode 100644 mysql-test/t/filesort_bad_i_s-7585.test diff --git a/mysql-test/r/filesort_bad_i_s-7585.result b/mysql-test/r/filesort_bad_i_s-7585.result new file mode 100644 index 00000000000..edb1574288f --- /dev/null +++ b/mysql-test/r/filesort_bad_i_s-7585.result @@ -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; diff --git a/mysql-test/t/filesort_bad_i_s-7585.test b/mysql-test/t/filesort_bad_i_s-7585.test new file mode 100644 index 00000000000..daf70acdd52 --- /dev/null +++ b/mysql-test/t/filesort_bad_i_s-7585.test @@ -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; diff --git a/sql/sql_class.h b/sql/sql_class.h index 9365727393e..c031c265e7e 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -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