mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 20:36:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			91 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
if (!$QUERY_RESPONSE_TIME_SO) {
 | 
						|
  skip Needs query_response_time loadable plugin;
 | 
						|
}
 | 
						|
if (!$HA_ARCHIVE_SO) {
 | 
						|
  skip Needs Archive loadable plugin;
 | 
						|
}
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # MDEV-5345 - Deadlock between mysql_change_user(), SHOW VARIABLES and
 | 
						|
--echo #             INSTALL PLUGIN
 | 
						|
--echo #
 | 
						|
 | 
						|
# Prepare test
 | 
						|
delimiter |;
 | 
						|
CREATE PROCEDURE p_install(x INT)
 | 
						|
BEGIN
 | 
						|
  DECLARE CONTINUE HANDLER FOR 1126 BEGIN END;
 | 
						|
  WHILE x DO
 | 
						|
    SET x= x - 1;
 | 
						|
    INSTALL PLUGIN no_such_plugin SONAME 'no_such_object';
 | 
						|
  END WHILE;
 | 
						|
END|
 | 
						|
 | 
						|
CREATE PROCEDURE p_show_vars(x INT)
 | 
						|
WHILE x DO
 | 
						|
  SET x= x - 1;
 | 
						|
  SHOW VARIABLES;
 | 
						|
END WHILE|
 | 
						|
delimiter ;|
 | 
						|
 | 
						|
connect(con1, localhost, root,,);
 | 
						|
connect(con2, localhost, root,,);
 | 
						|
 | 
						|
# Start test
 | 
						|
connection con1;
 | 
						|
--send CALL p_install(100)
 | 
						|
 | 
						|
connection con2;
 | 
						|
--send CALL p_show_vars(100)
 | 
						|
 | 
						|
connection default;
 | 
						|
 | 
						|
disable_result_log;
 | 
						|
let $i= 100;
 | 
						|
while ($i)
 | 
						|
{
 | 
						|
  change_user;
 | 
						|
  dec $i;
 | 
						|
}
 | 
						|
 | 
						|
# Cleanup
 | 
						|
connection con1;
 | 
						|
reap;
 | 
						|
connection con2;
 | 
						|
reap;
 | 
						|
connection default;
 | 
						|
enable_result_log;
 | 
						|
 | 
						|
disconnect con1;
 | 
						|
disconnect con2;
 | 
						|
USE test;
 | 
						|
DROP PROCEDURE p_install;
 | 
						|
DROP PROCEDURE p_show_vars;
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Bug#29363867: LOST CONNECTION TO MYSQL SERVER DURING QUERY
 | 
						|
--echo #
 | 
						|
 | 
						|
--echo ## prepared SET with a plugin variable prevents uninstall
 | 
						|
install plugin query_response_time soname 'query_response_time';
 | 
						|
prepare s from 'set global query_response_time_range_base=16';
 | 
						|
select plugin_status from information_schema.plugins where plugin_name='query_response_time';
 | 
						|
uninstall plugin query_response_time;
 | 
						|
execute s;
 | 
						|
execute s;
 | 
						|
select plugin_status from information_schema.plugins where plugin_name='query_response_time';
 | 
						|
deallocate prepare s;
 | 
						|
select plugin_status from information_schema.plugins where plugin_name='query_response_time';
 | 
						|
 | 
						|
--echo ## prepared SET mentioning a plugin otherwise does not prevent uninstall
 | 
						|
install plugin archive soname 'ha_archive';
 | 
						|
create table t1 (a int) engine=archive;
 | 
						|
insert t1 values (1),(2),(3);
 | 
						|
prepare s from 'set session auto_increment_increment=(select count(*) from t1)';
 | 
						|
flush tables;
 | 
						|
select plugin_status from information_schema.plugins where plugin_name='archive';
 | 
						|
uninstall plugin archive;
 | 
						|
select plugin_status from information_schema.plugins where plugin_name='archive';
 | 
						|
--error ER_UNKNOWN_STORAGE_ENGINE
 | 
						|
execute s;
 | 
						|
drop table t1;
 |