summaryrefslogtreecommitdiff
path: root/mysql-test/main/plugin_vars.test
blob: 797dcbea7275735eaff47d8393d1fe2e3e7afe98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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;