This file is indexed.

/usr/lib/mysql-testsuite/t/plugin.test is in percona-server-test-5.6 5.6.22-rel71.0-0ubuntu4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
#
--source include/not_windows_embedded.inc
--source include/have_example_plugin.inc
--source include/have_debug_sync.inc

--error ER_UNKNOWN_STORAGE_ENGINE
CREATE TABLE t1(a int) ENGINE=EXAMPLE;

--replace_regex /\.dll/.so/
eval INSTALL PLUGIN example SONAME '$EXAMPLE_PLUGIN';
--replace_regex /\.dll/.so/
--error 1125
eval INSTALL PLUGIN EXAMPLE SONAME '$EXAMPLE_PLUGIN';

UNINSTALL PLUGIN example;

--replace_regex /\.dll/.so/
eval INSTALL PLUGIN example SONAME '$EXAMPLE_PLUGIN';

--echo # Example engine does not support indexes
--error ER_TOO_MANY_KEY_PARTS
CREATE TABLE t1 (a int PRIMARY KEY) ENGINE=EXAMPLE;
--error ER_TOO_MANY_KEY_PARTS
CREATE TABLE t1 (a int, KEY (a)) ENGINE=EXAMPLE;


CREATE TABLE t1(a int) ENGINE=EXAMPLE;

SHOW CREATE TABLE t1;

--echo # Let's do some advanced ops with the example engine :)
INSERT INTO t1 VALUES (0);

--echo # Only supports table scans (and does always return zero rows :)
SELECT * FROM t1;
SELECT * FROM t1 WHERE a = 0;

--echo # Since there are no rows found, it will never do update_row.
UPDATE t1 SET a = 1 WHERE a = 0;

--echo # Since there are no rows found, it will never do delete_row.
DELETE FROM t1 WHERE a = 0;

--echo # No support for SQL HANDLER statement
--error ER_ILLEGAL_HA
HANDLER t1 OPEN;

DROP TABLE t1;

# a couple of tests for variables
set global example_ulong_var=500;
set global example_enum_var= e1;
show status like 'example%';
show variables like 'example%';

UNINSTALL PLUGIN example;
--error 1305
UNINSTALL PLUGIN EXAMPLE;

--error 1305
UNINSTALL PLUGIN non_exist;


--echo #
--echo # Bug#32034: check_func_enum() does not check correct values but set it
--echo #            to impossible int val
--echo #
--replace_regex /\.dll/.so/
eval INSTALL PLUGIN example SONAME '$EXAMPLE_PLUGIN';

SET GLOBAL example_enum_var= e1;
SET GLOBAL example_enum_var= e2;
--error 1231
SET GLOBAL example_enum_var= impossible;

UNINSTALL PLUGIN example;



#
# Bug #32757 hang with sql_mode set when setting some global variables
#
--replace_regex /\.dll/.so/
eval INSTALL PLUGIN example SONAME '$EXAMPLE_PLUGIN';

select @@session.sql_mode into @old_sql_mode;

# first, try normal sql_mode (no error, send OK)
set session sql_mode='';
set global example_ulong_var=500;
select @@global.example_ulong_var;
# overflow -- correct value, but throw warning
set global example_ulong_var=1111;
select @@global.example_ulong_var;

# now, try STRICT (error occurrs, no message is sent, so send default)
set session sql_mode='STRICT_ALL_TABLES';
set global example_ulong_var=500;
select @@global.example_ulong_var;
# overflow -- throw warning, do NOT change value
--error ER_WRONG_VALUE_FOR_VAR
set global example_ulong_var=1111;
select @@global.example_ulong_var;

set session sql_mode=@old_sql_mode;

# finally, show that conditions that already raised an error are not
# adversely affected (error was already sent, do nothing)
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
set session old=bla;

UNINSTALL PLUGIN example;

--echo #
--echo # Bug #16194302  SUPPORT FOR FLOATING-POINT SYSTEM
--echo #                VARIABLES USING THE PLUGIN INTERFACE.
--echo #

--replace_regex /\.dll/.so/
eval INSTALL PLUGIN example SONAME '$EXAMPLE_PLUGIN';

SET GLOBAL example_double_var = -0.1;
SELECT @@GLOBAL.example_double_var;

SET GLOBAL example_double_var = 0.000001;
SELECT @@GLOBAL.example_double_var;

SET GLOBAL example_double_var = 0.4;
SELECT @@GLOBAL.example_double_var;

SET GLOBAL example_double_var = 123.456789;
SELECT @@GLOBAL.example_double_var;

SET GLOBAL example_double_var = 500;
SELECT @@GLOBAL.example_double_var;

SET GLOBAL example_double_var = 999.999999;
SELECT @@GLOBAL.example_double_var;

SET GLOBAL example_double_var = 1000.51;
SELECT @@GLOBAL.example_double_var;

SET SESSION example_double_thdvar = -0.1;
SELECT @@SESSION.example_double_thdvar;

SET SESSION example_double_thdvar = 0.000001;
SELECT @@SESSION.example_double_thdvar;

SET SESSION example_double_thdvar = 0.4;
SELECT @@SESSION.example_double_thdvar;

SET SESSION example_double_thdvar = 123.456789;
SELECT @@SESSION.example_double_thdvar;

SET SESSION example_double_thdvar = 500;
SELECT @@SESSION.example_double_thdvar;

SET SESSION example_double_thdvar = 999.999999;
SELECT @@SESSION.example_double_thdvar;

SET SESSION example_double_thdvar = 1000.51;
SELECT @@SESSION.example_double_thdvar;

UNINSTALL PLUGIN example;

--echo #
--echo # BUG#18008907 - DEADLOCK BETWEEN MYSQL_CHANGE_USER(), SHOW VARIABLES AND INSTALL PLUGIN
--echo #

--enable_connect_log

delimiter |;

CREATE PROCEDURE p_install()
BEGIN
  INSTALL PLUGIN no_such_plugin SONAME 'no_such_object';
END
|

CREATE PROCEDURE p_show_vars()
BEGIN
  SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES;
END|

delimiter ;|

connect(con1, localhost, root,,);

--echo # Case 18008907_1: Deadlock situation cause by
--echo #                  con1: has LOCK_system_variables_hash and waits on LOCK_plugin  AND
--echo #                  default: has LOCK_plugin and waits on LOCK_system_variables_hash.
--echo #
SET DEBUG_SYNC='acquired_LOCK_system_variables_hash SIGNAL install_plugin WAIT_FOR cont_show_vars';
--send call p_show_vars();

connection default;
SET DEBUG_SYNC='now WAIT_FOR install_plugin';
SET DEBUG_SYNC='acquired_LOCK_plugin SIGNAL cont_show_vars';
--send call p_install();

connection con1;
# Without fix, reap will hang.
--replace_column 1 #
--reap;
SET DEBUG_SYNC='RESET';

connection default;
--replace_regex /(Can\'t open shared library).*$/\1/
--error ER_CANT_OPEN_LIBRARY
--reap;
SET DEBUG_SYNC='RESET';

--echo # Case 18008907_2: Deadlock situation caused by
--echo #                  default: has LOCK_system_variables_hash and waits on LOCK_global_system_variables,
--echo #                  con1: has LOCK_plugin and waits on LOCK_system_variables_hash AND
--echo #                  con2: has LOCK_global_system_variables and waits on LOCK_plugin.

SET DEBUG_SYNC='acquired_LOCK_system_variables_hash SIGNAL install_plugin WAIT_FOR nothing TIMEOUT 10';
--send call p_show_vars();

connection con1;
SET DEBUG_SYNC='now WAIT_FOR install_plugin';
SET DEBUG_SYNC='acquired_LOCK_plugin SIGNAL create_connection WAIT_FOR nothing TIMEOUT 10';
--send call p_install();

connect(con2, localhost, root,,);
SET DEBUG_SYNC='now WAIT_FOR create_connection';
# Without fix, deadlock situation will occur on timeout of debug_syncs in
# default and con1.  Because of this, change_user operation hangs.
change_user;

connection con1;
--replace_regex /(Can\'t open shared library).*$/\1/
--error ER_CANT_OPEN_LIBRARY
--reap;

connection default;
--replace_column 1 #
--reap;
disconnect con2;

--echo # Case 18008907_3: Testing Concurrent "Show Variables" and "Plugin Uninstall" operations.

#Installing plugin
--replace_regex /\.dll/.so/
eval INSTALL PLUGIN example SONAME '$EXAMPLE_PLUGIN';

connection con1;
#Acquiring LOCK_system_variables_hash and LOCK_plugin_delete
SET DEBUG_SYNC='acquired_LOCK_system_variables_hash SIGNAL uninstall_plugin WAIT_FOR go';
--send call p_show_vars();

connect(con2, localhost, root,,);
SET DEBUG_SYNC='now WAIT_FOR uninstall_plugin';
--send UNINSTALL PLUGIN example;

connection default;
#Plugin Uninstall operation will wait until show variables operations releases LOCK_plugin_delete.
let $wait_condition= SELECT count(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
                     WHERE INFO='UNINSTALL PLUGIN example' and
                     STATE='System lock';
--source include/wait_condition.inc
SET DEBUG_SYNC='now SIGNAL go';

connection con1;
--replace_column 1 #
--reap

connection con2;
--reap

connection default;
DROP PROCEDURE p_show_vars;
DROP PROCEDURE p_install;
SET DEBUG_SYNC='RESET';
disconnect con1;
disconnect con2;

--disable_connect_log