From bad2f1569da57c4a81cc84ec2f4a79924df9c8d6 Mon Sep 17 00:00:00 2001 From: Sergey Vojtovich Date: Wed, 12 Sep 2018 16:36:45 +0400 Subject: MDEV-17167 - InnoDB: Failing assertion: table->get_ref_count() == 0 upon truncating a temporary table TRUNCATE expects only one TABLE instance (which is used by TRUNCATE itself) to be open. However this requirement wasn't enforced after "MDEV-5535: Cannot reopen temporary table". Fixed by closing unused table instances before performing TRUNCATE. --- sql/sql_truncate.cc | 2 ++ 1 file changed, 2 insertions(+) (limited to 'sql/sql_truncate.cc') diff --git a/sql/sql_truncate.cc b/sql/sql_truncate.cc index 5a6417880b3..bab9bb5e9ac 100644 --- a/sql/sql_truncate.cc +++ b/sql/sql_truncate.cc @@ -401,6 +401,8 @@ bool Sql_cmd_truncate_table::truncate_table(THD *thd, TABLE_LIST *table_ref) /* In RBR, the statement is not binlogged if the table is temporary. */ binlog_stmt= !thd->is_current_stmt_binlog_format_row(); + thd->close_unused_temporary_table_instances(table_ref); + error= handler_truncate(thd, table_ref, TRUE); /* -- cgit v1.2.1