mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-5955 Server crashes in handler::ha_external_lock or assertion `m_lock_type == 2' fails in handler::ha_close on disconnect with a locked temporary table
first unlock locked tables, then close and remove temporary
This commit is contained in:
2
mysql-test/r/locked_temporary-5955.result
Normal file
2
mysql-test/r/locked_temporary-5955.result
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
CREATE TEMPORARY TABLE tmp (i INT) ENGINE=InnoDB;
|
||||||
|
LOCK TABLES tmp AS p WRITE;
|
10
mysql-test/t/locked_temporary-5955.test
Normal file
10
mysql-test/t/locked_temporary-5955.test
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#
|
||||||
|
# MDEV-5955 Server crashes in handler::ha_external_lock or assertion `m_lock_type == 2' fails in handler::ha_close on disconnect with a locked temporary table
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--connect (con1,localhost,root,,)
|
||||||
|
CREATE TEMPORARY TABLE tmp (i INT) ENGINE=InnoDB;
|
||||||
|
LOCK TABLES tmp AS p WRITE;
|
||||||
|
--disconnect con1
|
||||||
|
|
@ -1391,6 +1391,7 @@ void THD::cleanup(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
mysql_ha_cleanup(this);
|
mysql_ha_cleanup(this);
|
||||||
|
locked_tables_list.unlock_locked_tables(this);
|
||||||
|
|
||||||
close_temporary_tables(this);
|
close_temporary_tables(this);
|
||||||
|
|
||||||
@ -1398,8 +1399,6 @@ void THD::cleanup(void)
|
|||||||
trans_rollback(this);
|
trans_rollback(this);
|
||||||
xid_cache_delete(&transaction.xid_state);
|
xid_cache_delete(&transaction.xid_state);
|
||||||
|
|
||||||
locked_tables_list.unlock_locked_tables(this);
|
|
||||||
|
|
||||||
DBUG_ASSERT(open_tables == NULL);
|
DBUG_ASSERT(open_tables == NULL);
|
||||||
/*
|
/*
|
||||||
If the thread was in the middle of an ongoing transaction (rolled
|
If the thread was in the middle of an ongoing transaction (rolled
|
||||||
|
Reference in New Issue
Block a user