mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 02:46:29 +01:00 
			
		
		
		
	 dac3d702f7
			
		
	
	
	dac3d702f7
	
	
	
		
			
			- InnoDB fails to check the table is being dropped or evicted
while acquiring the MDL for the table when table open operation
mode is DICT_TABLE_OP_OPEN_ONLY_IF_CACHED. This is caused by
the commit 337bf8ac4b (MDEV-36122)
Fix:
===
dict_acquire_mdl_shared(): If the table is evicted or dropped when
table operation mode is DICT_TABLE_OP_OPEN_IF_CACHED then return
nullptr
		
	
			
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| --source include/have_innodb.inc
 | |
| --source include/have_sequence.inc
 | |
| --source include/have_debug.inc
 | |
| --source include/have_debug_sync.inc
 | |
| --source include/count_sessions.inc
 | |
| 
 | |
| --echo #
 | |
| --echo # MDEV-23991 dict_table_stats_lock() has unnecessarily long scope
 | |
| --echo #
 | |
| CREATE TABLE t1(a INT) ENGINE=INNODB STATS_PERSISTENT=1;
 | |
| 
 | |
| SET DEBUG_SYNC='dict_stats_update_persistent SIGNAL stop WAIT_FOR go';
 | |
| --send ANALYZE TABLE t1
 | |
| 
 | |
| --connect(con1, localhost, root)
 | |
| SET DEBUG_SYNC='now WAIT_FOR stop';
 | |
| 
 | |
| --replace_column 1 SUM
 | |
| SELECT SUM(DATA_LENGTH+INDEX_LENGTH) FROM information_schema.TABLES WHERE ENGINE='InnoDB';
 | |
| 
 | |
| SET DEBUG_SYNC='now SIGNAL go';
 | |
| --disconnect con1
 | |
| 
 | |
| --connection default
 | |
| --reap
 | |
| SET DEBUG_SYNC= 'RESET';
 | |
| DROP TABLE t1;
 | |
| 
 | |
| --source include/wait_until_count_sessions.inc
 | |
| 
 | |
| --echo #
 | |
| --echo # MDEV-36649 dict_acquire_mdl_shared() aborts when table
 | |
| --echo #      mode is DICT_TABLE_OP_OPEN_ONLY_IF_CACHED
 | |
| --echo #
 | |
| set @old_defragment_stats_accuracy= @@innodb_defragment_stats_accuracy;
 | |
| SET GLOBAL innodb_defragment_stats_accuracy=1;
 | |
| CREATE TABLE t (a INT ) ENGINE=INNODB;
 | |
| INSERT INTO t SELECT * FROM seq_1_to_1000;
 | |
| DROP TABLE t;
 | |
| set global innodb_defragment_stats_accuracy= @old_defragment_stats_accuracy;
 |