summaryrefslogtreecommitdiff
path: root/sql/sql_table.cc
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-04-08 08:15:11 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2021-04-08 08:15:11 +0300
commitb4f09aa268481d14b5d739f20bb66641d8f1d838 (patch)
treec5a83c5b0a2e0b1b96c002cc3c5e343ab49fbfa6 /sql/sql_table.cc
parent2a7810759d4127f30f6705892eb73277325984a9 (diff)
parent4e2ca42225311f73745c9eec309bc941183aba30 (diff)
downloadmariadb-git-b4f09aa268481d14b5d739f20bb66641d8f1d838.tar.gz
Merge 10.4 into 10.5bb-10.5-merge
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r--sql/sql_table.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 1015e538a8f..f1e1b6517d8 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -10084,7 +10084,8 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db,
If such table exists, there must be a corresponding TABLE_SHARE in
THD::all_temp_tables list.
*/
- if (thd->find_tmp_table_share(alter_ctx.new_db.str, alter_ctx.new_name.str))
+ if (thd->find_tmp_table_share(alter_ctx.new_db.str,
+ alter_ctx.new_name.str))
{
my_error(ER_TABLE_EXISTS_ERROR, MYF(0), alter_ctx.new_alias.str);
DBUG_RETURN(true);
@@ -10225,6 +10226,17 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db,
if (table->s->tmp_table == NO_TMP_TABLE)
mysql_audit_alter_table(thd, table_list);
+ else if (table_creation_was_logged && mysql_bin_log.is_open())
+ {
+ /* Protect against MDL error in binary logging */
+ MDL_request mdl_request;
+ DBUG_ASSERT(!mdl_ticket);
+ MDL_REQUEST_INIT(&mdl_request, MDL_key::BACKUP, "", "", MDL_BACKUP_COMMIT,
+ MDL_TRANSACTION);
+ if (thd->mdl_context.acquire_lock(&mdl_request,
+ thd->variables.lock_wait_timeout))
+ DBUG_RETURN(true);
+ }
THD_STAGE_INFO(thd, stage_setup);