summaryrefslogtreecommitdiff
path: root/sql/sql_truncate.cc
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mariadb.org>2018-09-12 16:36:45 +0400
committerSergey Vojtovich <svoj@mariadb.org>2018-10-02 13:42:44 +0400
commitbad2f1569da57c4a81cc84ec2f4a79924df9c8d6 (patch)
tree9ec5b4596b163d275051f7de74736183a6c191c3 /sql/sql_truncate.cc
parentb9a5ff364466d2d1495352dd6c932d877923a614 (diff)
downloadmariadb-git-bad2f1569da57c4a81cc84ec2f4a79924df9c8d6.tar.gz
MDEV-17167 - InnoDB: Failing assertion: table->get_ref_count() == 0 uponmariadb-10.3.10
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.
Diffstat (limited to 'sql/sql_truncate.cc')
-rw-r--r--sql/sql_truncate.cc2
1 files changed, 2 insertions, 0 deletions
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);
/*