1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

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.
This commit is contained in:
Sergey Vojtovich
2018-09-12 16:36:45 +04:00
parent b9a5ff3644
commit bad2f1569d
6 changed files with 89 additions and 1 deletions

View File

@ -548,3 +548,27 @@ DROP TABLE nonexisting_table, t1;
ERROR 42S02: Unknown table 'temp_db.nonexisting_table'
# Cleanup
DROP DATABASE temp_db;
USE test;
#
# MDEV-17167 - InnoDB: Failing assertion: table->get_ref_count() == 0
# upon truncating a temporary table
#
CREATE TEMPORARY TABLE t1(a INT) ENGINE=InnoDB;
SELECT * FROM t1 AS t1a1, t1 AS t2a2;
a a
TRUNCATE TABLE t1;
LOCK TABLES t1 WRITE;
TRUNCATE TABLE t1;
SELECT * FROM t1;
a
UNLOCK TABLES;
LOCK TABLES t1 AS t1a1 WRITE, t1 AS t1a2 WRITE;
TRUNCATE TABLE t1;
SELECT * FROM t1 AS t1a1, t1 AS t1a2;
a a
UNLOCK TABLES;
CREATE TABLE t2(a INT) ENGINE=InnoDB;
LOCK TABLES t2 WRITE;
TRUNCATE TABLE t1;
UNLOCK TABLES;
DROP TABLE t1, t2;