mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-12669 Circular foreign keys cause a loop and OOM upon LOCK TABLE
table_already_fk_prelocked() was looking for a table in the wrong list (not the complete list of prelocked tables, but only in its tail, starting from the current table - which is always empty for the last added table), so for circular FKs it kept adding same tables to the list indefinitely.
This commit is contained in:
@ -4255,8 +4255,9 @@ handle_table(THD *thd, Query_tables_list *prelocking_ctx,
|
||||
else
|
||||
lock_type= TL_READ;
|
||||
|
||||
if (table_already_fk_prelocked(table_list, fk->foreign_db,
|
||||
fk->foreign_table, lock_type))
|
||||
if (table_already_fk_prelocked(prelocking_ctx->query_tables,
|
||||
fk->foreign_db, fk->foreign_table,
|
||||
lock_type))
|
||||
continue;
|
||||
|
||||
TABLE_LIST *tl= (TABLE_LIST *) thd->alloc(sizeof(TABLE_LIST));
|
||||
|
Reference in New Issue
Block a user