mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
MDEV-5042 - Server crashes when accessing incorrect MERGE table from trigger
When we open merge children open error is normally handled early during open phase. But there are two exceptions when error is handled later during attach phase: CHECK/REPAIR TABLE and tables added by the pre-locking code. The latter case wasn't considered by assertion in the merge code. This assertion is corrected. Note that in MySQL-5.6 this assertion is removed.
This commit is contained in:
parent
c776f5ac26
commit
2c0a073970
3 changed files with 10 additions and 5 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue