diff options
author | Nikita Malyavin <nikitamalyavin@gmail.com> | 2022-10-21 15:08:26 +0300 |
---|---|---|
committer | Nikita Malyavin <nikitamalyavin@gmail.com> | 2023-05-05 15:59:20 +0300 |
commit | f5b63e1df1eb1d1488dd8586fa3068b41bbe4640 (patch) | |
tree | 83d356c20bf0ebc8cff4f6f6290ad1be284c079c /sql | |
parent | 25d93b82914fdcd06ae17c9b295dc33963a0a532 (diff) | |
download | mariadb-git-f5b63e1df1eb1d1488dd8586fa3068b41bbe4640.tar.gz |
MDEV-29068 Cascade foreign key updates do not apply in online alter
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql_table.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 0bbc0926061..ac5975a6809 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -10069,6 +10069,18 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db, online= online && !table->s->tmp_table; + List<FOREIGN_KEY_INFO> fk_list; + table->file->get_foreign_key_list(thd, &fk_list); + for (auto &fk: fk_list) + { + if (fk_modifies_child(fk.delete_method) + || fk_modifies_child(fk.update_method)) + { + online= false; + break; + } + } + #ifdef WITH_WSREP if (WSREP(thd) && (thd->lex->sql_command == SQLCOM_ALTER_TABLE || |