From 22e4baaa5d073f46a3b139bbd40d2dba287eb84f Mon Sep 17 00:00:00 2001 From: Aleksey Midenkov Date: Wed, 5 May 2021 20:14:27 +0300 Subject: MDEV-25595 DROP part of failed CREATE OR REPLACE is not written into binary log Do log_drop_table() in case of failed mysql_prepare_create_table(). --- sql/sql_insert.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'sql/sql_insert.cc') diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 90cf8782d48..51b2c84cfea 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -4386,8 +4386,18 @@ select_create::prepare(List &values, SELECT_LEX_UNIT *u) create_table, alter_info, &values, &extra_lock, hook_ptr))) + { + if (create_info->or_replace()) + { + /* Original table was deleted. We have to log it */ + log_drop_table(thd, create_table->db, create_table->db_length, + create_table->table_name, create_table->table_name_length, + thd->lex->tmp_table()); + } + /* abort() deletes table */ DBUG_RETURN(-1); + } if (create_info->tmp_table()) { -- cgit v1.2.1