diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result index 7cb9e5bb423..f806829b969 100644 --- a/mysql-test/r/merge.result +++ b/mysql-test/r/merge.result @@ -3910,6 +3910,8 @@ CREATE TABLE m1(a INT) ENGINE = MERGE UNION (q1, q2); CREATE TRIGGER trg1 BEFORE DELETE ON t1 FOR EACH ROW INSERT INTO m1 VALUES (1); +DELETE FROM t1; +ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist DROP TRIGGER trg1; DROP TABLE t1; DROP TABLE m1; diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test index 18ec2b3d62f..959c7258a53 100644 --- a/mysql-test/t/merge.test +++ b/mysql-test/t/merge.test @@ -2945,9 +2945,8 @@ CREATE TRIGGER trg1 BEFORE DELETE ON t1 FOR EACH ROW INSERT INTO m1 VALUES (1); -# Uncomment the following to lines when MDEV-5042 is fixed. -#--error ER_WRONG_MRG_TABLE -#DELETE FROM t1; +--error ER_WRONG_MRG_TABLE +DELETE FROM t1; DROP TRIGGER trg1; DROP TABLE t1; diff --git a/storage/myisammrg/ha_myisammrg.cc b/storage/myisammrg/ha_myisammrg.cc index bb225002dc0..a1fe8a6efb8 100644 --- a/storage/myisammrg/ha_myisammrg.cc +++ b/storage/myisammrg/ha_myisammrg.cc @@ -653,8 +653,12 @@ extern "C" MI_INFO *myisammrg_attach_children_callback(void *callback_param) { DBUG_PRINT("error", ("failed to open underlying table '%s'.'%s'", child_l->db, child_l->table_name)); - /* This should only happen inside of CHECK/REPAIR TABLE. */ - DBUG_ASSERT(current_thd->open_options & HA_OPEN_FOR_REPAIR); + /* + This should only happen inside of CHECK/REPAIR TABLE or + for the tables added by the pre-locking code. + */ + DBUG_ASSERT(current_thd->open_options & HA_OPEN_FOR_REPAIR || + child_l->prelocking_placeholder); goto end; }