diff options
author | Sergey Vojtovich <svoj@mariadb.org> | 2019-03-11 22:50:24 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@mariadb.org> | 2019-03-11 22:50:24 +0400 |
commit | ea52ecbc103b1424cf0b6f8faf990676b2b57a63 (patch) | |
tree | 29e968dbb2f0391fe397a89217513559165bfec0 /sql/sql_table.cc | |
parent | 2a2ab121b0f65cdc4b104ec763d23f1b7035a644 (diff) | |
parent | 149b75476837fb96c28739d5368e977e39fd671b (diff) | |
download | mariadb-git-ea52ecbc103b1424cf0b6f8faf990676b2b57a63.tar.gz |
Merge remote-tracking branch 'origin/10.0' into 10.1
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r-- | sql/sql_table.cc | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 55b77c8b934..57333e7dc30 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -9150,6 +9150,8 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, new_table->file->get_foreign_key_list(thd, &fk_list); while ((fk= fk_list_it++)) { + MDL_request mdl_request; + if (lower_case_table_names) { char buf[NAME_LEN]; @@ -9161,20 +9163,14 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, len = my_casedn_str(files_charset_info, buf); thd->make_lex_string(fk->referenced_table, buf, len); } - if (table_already_fk_prelocked(table_list, fk->referenced_db, - fk->referenced_table, TL_READ_NO_INSERT)) - continue; - TABLE_LIST *tl= (TABLE_LIST *) thd->alloc(sizeof(TABLE_LIST)); - tl->init_one_table_for_prelocking(fk->referenced_db->str, fk->referenced_db->length, - fk->referenced_table->str, fk->referenced_table->length, - NULL, TL_READ_NO_INSERT, false, NULL, 0, - &thd->lex->query_tables_last); + mdl_request.init(MDL_key::TABLE, + fk->referenced_db->str, fk->referenced_table->str, + MDL_SHARED_NO_WRITE, MDL_TRANSACTION); + if (thd->mdl_context.acquire_lock(&mdl_request, + thd->variables.lock_wait_timeout)) + goto err_new_table_cleanup; } - - if (open_tables(thd, &table_list->next_global, &tables_opened, 0, - &alter_prelocking_strategy)) - goto err_new_table_cleanup; } } /* |