Merge lp:~laurynas-biveinis/percona-server/bug1039384-5.5 into lp:percona-server/5.5

Proposed by Laurynas Biveinis
Status: Merged
Approved by: Stewart Smith
Approved revision: no longer in the source branch.
Merged at revision: 295
Proposed branch: lp:~laurynas-biveinis/percona-server/bug1039384-5.5
Merge into: lp:percona-server/5.5
Diff against target: 903 lines (+799/-16)
15 files modified
Percona-Server/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_method_basic.result (+79/-3)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_method_startup.result (+18/-0)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_corrupt_table_action_basic.result (+48/-2)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_flush_neighbor_pages_basic.result (+79/-3)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_flush_neighbor_pages_startup.result (+18/-0)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_read_ahead_basic.result (+99/-3)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_read_ahead_startup.result (+24/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_method_basic.test (+62/-1)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_method_startup.test (+57/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_corrupt_table_action_basic.test (+47/-1)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_flush_neighbor_pages_basic.test (+62/-1)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_flush_neighbor_pages_startup.test (+57/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_read_ahead_basic.test (+72/-1)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_read_ahead_startup.test (+75/-0)
Percona-Server/storage/innobase/handler/ha_innodb.cc (+2/-1)
To merge this branch: bzr merge lp:~laurynas-biveinis/percona-server/bug1039384-5.5
Reviewer Review Type Date Requested Status
Stewart Smith (community) Approve
Sergei Glushchenko (community) Approve
Review via email: mp+120554@code.launchpad.net

Description of the change

Merge fix of bug 1039384 (innodb_adaptive_flushing_method and
innodb_flush_neighbor_pages partially broken).

The problem for innodb_adaptive_flushing_method is that the value
update method sets the value to modulus four insted of three. The
problem with innodb_flush_neighbor_pages is that InnoDB startup does
not set it to modulus three. This results in unhandled values for
both variables.

Fixed by adding missing "srv_flush_neighbor_pages %= 3;" to
innobase_init() and adjusting innodb_adaptive_flushing_method_update()
to do the correct operation.

Extended the sys_vars testsuite to ensure testing for enum variables,
especially those that have aliases in allowed values: expanded
innodb_adaptive_flushing_method_basic.test,
innodb_corrupt_table_action_basic.test,
innodb_flush_neighbor_pages_basic.test and
innodb_read_ahead_basic.test to test enum variable properly.

Added innodb_adaptive_flushing_method_startup.test,
innodb_flush_neighbor_pages_startup.test and
innodb_read_ahead_startup.test to test setting of variables at startup.

Jenkins: http://jenkins.percona.com/job/percona-server-5.5-param/470/

To post a comment you must log in.
Revision history for this message
Sergei Glushchenko (sergei.glushchenko) wrote :

Looks good to me.

review: Approve
Revision history for this message
Stewart Smith (stewart) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Percona-Server/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_method_basic.result'
2--- Percona-Server/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_method_basic.result 2012-04-18 23:26:11 +0000
3+++ Percona-Server/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_method_basic.result 2012-08-21 13:01:22 +0000
4@@ -1,3 +1,79 @@
5-SELECT @@global.innodb_adaptive_flushing_method;
6-@@global.innodb_adaptive_flushing_method
7-estimate
8+SET @saved_val = @@global.innodb_adaptive_flushing_method;
9+SELECT @@global.innodb_adaptive_flushing_method IN ('native', 'estimate', 'keep_average', '0', '1', '2');
10+@@global.innodb_adaptive_flushing_method IN ('native', 'estimate', 'keep_average', '0', '1', '2')
11+1
12+SELECT @@session.innodb_adaptive_flushing_method;
13+ERROR HY000: Variable 'innodb_adaptive_flushing_method' is a GLOBAL variable
14+SET GLOBAL innodb_adaptive_flushing_method='native';
15+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
16+@@GLOBAL.innodb_adaptive_flushing_method
17+native
18+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
19+VARIABLE_NAME VARIABLE_VALUE
20+INNODB_ADAPTIVE_FLUSHING_METHOD native
21+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
22+VARIABLE_NAME VARIABLE_VALUE
23+INNODB_ADAPTIVE_FLUSHING_METHOD native
24+SET GLOBAL innodb_adaptive_flushing_method='estimate';
25+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
26+@@GLOBAL.innodb_adaptive_flushing_method
27+estimate
28+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
29+VARIABLE_NAME VARIABLE_VALUE
30+INNODB_ADAPTIVE_FLUSHING_METHOD estimate
31+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
32+VARIABLE_NAME VARIABLE_VALUE
33+INNODB_ADAPTIVE_FLUSHING_METHOD estimate
34+SET GLOBAL innodb_adaptive_flushing_method='keep_average';
35+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
36+@@GLOBAL.innodb_adaptive_flushing_method
37+keep_average
38+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
39+VARIABLE_NAME VARIABLE_VALUE
40+INNODB_ADAPTIVE_FLUSHING_METHOD keep_average
41+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
42+VARIABLE_NAME VARIABLE_VALUE
43+INNODB_ADAPTIVE_FLUSHING_METHOD keep_average
44+SET GLOBAL innodb_adaptive_flushing_method='0';
45+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
46+@@GLOBAL.innodb_adaptive_flushing_method
47+native
48+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
49+VARIABLE_NAME VARIABLE_VALUE
50+INNODB_ADAPTIVE_FLUSHING_METHOD native
51+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
52+VARIABLE_NAME VARIABLE_VALUE
53+INNODB_ADAPTIVE_FLUSHING_METHOD native
54+SET GLOBAL innodb_adaptive_flushing_method='1';
55+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
56+@@GLOBAL.innodb_adaptive_flushing_method
57+estimate
58+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
59+VARIABLE_NAME VARIABLE_VALUE
60+INNODB_ADAPTIVE_FLUSHING_METHOD estimate
61+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
62+VARIABLE_NAME VARIABLE_VALUE
63+INNODB_ADAPTIVE_FLUSHING_METHOD estimate
64+SET GLOBAL innodb_adaptive_flushing_method='2';
65+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
66+@@GLOBAL.innodb_adaptive_flushing_method
67+keep_average
68+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
69+VARIABLE_NAME VARIABLE_VALUE
70+INNODB_ADAPTIVE_FLUSHING_METHOD keep_average
71+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
72+VARIABLE_NAME VARIABLE_VALUE
73+INNODB_ADAPTIVE_FLUSHING_METHOD keep_average
74+SET SESSION innodb_adaptive_flushing_method='estimate';
75+ERROR HY000: Variable 'innodb_adaptive_flushing_method' is a GLOBAL variable and should be set with SET GLOBAL
76+SET @@session.innodb_adaptive_flushing_method='keep_average';
77+ERROR HY000: Variable 'innodb_adaptive_flushing_method' is a GLOBAL variable and should be set with SET GLOBAL
78+SET global innodb_adaptive_flushing_method=1.1;
79+ERROR 42000: Incorrect argument type to variable 'innodb_adaptive_flushing_method'
80+SET global innodb_adaptive_flushing_method=1e1;
81+ERROR 42000: Incorrect argument type to variable 'innodb_adaptive_flushing_method'
82+SET global innodb_adaptive_flushing_method='foo';
83+ERROR 42000: Variable 'innodb_adaptive_flushing_method' can't be set to the value of 'foo'
84+SET global innodb_adaptive_flushing_method=-2;
85+ERROR 42000: Variable 'innodb_adaptive_flushing_method' can't be set to the value of '-2'
86+SET @@global.innodb_adaptive_flushing_method = @saved_val;
87
88=== added file 'Percona-Server/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_method_startup.result'
89--- Percona-Server/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_method_startup.result 1970-01-01 00:00:00 +0000
90+++ Percona-Server/mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_method_startup.result 2012-08-21 13:01:22 +0000
91@@ -0,0 +1,18 @@
92+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
93+@@GLOBAL.innodb_adaptive_flushing_method
94+native
95+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
96+@@GLOBAL.innodb_adaptive_flushing_method
97+estimate
98+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
99+@@GLOBAL.innodb_adaptive_flushing_method
100+keep_average
101+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
102+@@GLOBAL.innodb_adaptive_flushing_method
103+native
104+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
105+@@GLOBAL.innodb_adaptive_flushing_method
106+estimate
107+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
108+@@GLOBAL.innodb_adaptive_flushing_method
109+keep_average
110
111=== modified file 'Percona-Server/mysql-test/suite/sys_vars/r/innodb_corrupt_table_action_basic.result'
112--- Percona-Server/mysql-test/suite/sys_vars/r/innodb_corrupt_table_action_basic.result 2012-04-18 23:26:11 +0000
113+++ Percona-Server/mysql-test/suite/sys_vars/r/innodb_corrupt_table_action_basic.result 2012-08-21 13:01:22 +0000
114@@ -1,3 +1,49 @@
115-SELECT @@global.innodb_corrupt_table_action;
116-@@global.innodb_corrupt_table_action
117+SET @saved_val = @@global.innodb_corrupt_table_action;
118+SELECT @@global.innodb_corrupt_table_action IN ('assert', 'warn', 'salvage');
119+@@global.innodb_corrupt_table_action IN ('assert', 'warn', 'salvage')
120+1
121+SELECT @@session.innodb_corrupt_table_action;
122+ERROR HY000: Variable 'innodb_corrupt_table_action' is a GLOBAL variable
123+SET GLOBAL innodb_corrupt_table_action='assert';
124+SELECT @@GLOBAL.innodb_corrupt_table_action;
125+@@GLOBAL.innodb_corrupt_table_action
126 assert
127+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_corrupt_table_action';
128+VARIABLE_NAME VARIABLE_VALUE
129+INNODB_CORRUPT_TABLE_ACTION assert
130+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_corrupt_table_action';
131+VARIABLE_NAME VARIABLE_VALUE
132+INNODB_CORRUPT_TABLE_ACTION assert
133+SET GLOBAL innodb_corrupt_table_action='warn';
134+SELECT @@GLOBAL.innodb_corrupt_table_action;
135+@@GLOBAL.innodb_corrupt_table_action
136+warn
137+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_corrupt_table_action';
138+VARIABLE_NAME VARIABLE_VALUE
139+INNODB_CORRUPT_TABLE_ACTION warn
140+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_corrupt_table_action';
141+VARIABLE_NAME VARIABLE_VALUE
142+INNODB_CORRUPT_TABLE_ACTION warn
143+SET GLOBAL innodb_corrupt_table_action='salvage';
144+SELECT @@GLOBAL.innodb_corrupt_table_action;
145+@@GLOBAL.innodb_corrupt_table_action
146+salvage
147+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_corrupt_table_action';
148+VARIABLE_NAME VARIABLE_VALUE
149+INNODB_CORRUPT_TABLE_ACTION salvage
150+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_corrupt_table_action';
151+VARIABLE_NAME VARIABLE_VALUE
152+INNODB_CORRUPT_TABLE_ACTION salvage
153+SET SESSION innodb_corrupt_table_action='warn';
154+ERROR HY000: Variable 'innodb_corrupt_table_action' is a GLOBAL variable and should be set with SET GLOBAL
155+SET @@session.innodb_corrupt_table_action='salvage';
156+ERROR HY000: Variable 'innodb_corrupt_table_action' is a GLOBAL variable and should be set with SET GLOBAL
157+SET global innodb_corrupt_table_action=1.1;
158+ERROR 42000: Incorrect argument type to variable 'innodb_corrupt_table_action'
159+SET global innodb_corrupt_table_action=1e1;
160+ERROR 42000: Incorrect argument type to variable 'innodb_corrupt_table_action'
161+SET global innodb_corrupt_table_action='foo';
162+ERROR 42000: Variable 'innodb_corrupt_table_action' can't be set to the value of 'foo'
163+SET global innodb_corrupt_table_action=-2;
164+ERROR 42000: Variable 'innodb_corrupt_table_action' can't be set to the value of '-2'
165+SET @@global.innodb_corrupt_table_action = @saved_val;
166
167=== modified file 'Percona-Server/mysql-test/suite/sys_vars/r/innodb_flush_neighbor_pages_basic.result'
168--- Percona-Server/mysql-test/suite/sys_vars/r/innodb_flush_neighbor_pages_basic.result 2012-04-18 23:26:11 +0000
169+++ Percona-Server/mysql-test/suite/sys_vars/r/innodb_flush_neighbor_pages_basic.result 2012-08-21 13:01:22 +0000
170@@ -1,3 +1,79 @@
171-SELECT @@global.innodb_flush_neighbor_pages;
172-@@global.innodb_flush_neighbor_pages
173-area
174+SET @saved_val = @@global.innodb_flush_neighbor_pages;
175+SELECT @@global.innodb_flush_neighbor_pages IN ('none', 'area', 'cont', '0', '1', '2');
176+@@global.innodb_flush_neighbor_pages IN ('none', 'area', 'cont', '0', '1', '2')
177+1
178+SELECT @@session.innodb_flush_neighbor_pages;
179+ERROR HY000: Variable 'innodb_flush_neighbor_pages' is a GLOBAL variable
180+SET GLOBAL innodb_flush_neighbor_pages='none';
181+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
182+@@GLOBAL.innodb_flush_neighbor_pages
183+none
184+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
185+VARIABLE_NAME VARIABLE_VALUE
186+INNODB_FLUSH_NEIGHBOR_PAGES none
187+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
188+VARIABLE_NAME VARIABLE_VALUE
189+INNODB_FLUSH_NEIGHBOR_PAGES none
190+SET GLOBAL innodb_flush_neighbor_pages='area';
191+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
192+@@GLOBAL.innodb_flush_neighbor_pages
193+area
194+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
195+VARIABLE_NAME VARIABLE_VALUE
196+INNODB_FLUSH_NEIGHBOR_PAGES area
197+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
198+VARIABLE_NAME VARIABLE_VALUE
199+INNODB_FLUSH_NEIGHBOR_PAGES area
200+SET GLOBAL innodb_flush_neighbor_pages='cont';
201+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
202+@@GLOBAL.innodb_flush_neighbor_pages
203+cont
204+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
205+VARIABLE_NAME VARIABLE_VALUE
206+INNODB_FLUSH_NEIGHBOR_PAGES cont
207+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
208+VARIABLE_NAME VARIABLE_VALUE
209+INNODB_FLUSH_NEIGHBOR_PAGES cont
210+SET GLOBAL innodb_flush_neighbor_pages='0';
211+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
212+@@GLOBAL.innodb_flush_neighbor_pages
213+none
214+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
215+VARIABLE_NAME VARIABLE_VALUE
216+INNODB_FLUSH_NEIGHBOR_PAGES none
217+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
218+VARIABLE_NAME VARIABLE_VALUE
219+INNODB_FLUSH_NEIGHBOR_PAGES none
220+SET GLOBAL innodb_flush_neighbor_pages='1';
221+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
222+@@GLOBAL.innodb_flush_neighbor_pages
223+area
224+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
225+VARIABLE_NAME VARIABLE_VALUE
226+INNODB_FLUSH_NEIGHBOR_PAGES area
227+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
228+VARIABLE_NAME VARIABLE_VALUE
229+INNODB_FLUSH_NEIGHBOR_PAGES area
230+SET GLOBAL innodb_flush_neighbor_pages='2';
231+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
232+@@GLOBAL.innodb_flush_neighbor_pages
233+cont
234+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
235+VARIABLE_NAME VARIABLE_VALUE
236+INNODB_FLUSH_NEIGHBOR_PAGES cont
237+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
238+VARIABLE_NAME VARIABLE_VALUE
239+INNODB_FLUSH_NEIGHBOR_PAGES cont
240+SET SESSION innodb_flush_neighbor_pages='area';
241+ERROR HY000: Variable 'innodb_flush_neighbor_pages' is a GLOBAL variable and should be set with SET GLOBAL
242+SET @@session.innodb_flush_neighbor_pages='cont';
243+ERROR HY000: Variable 'innodb_flush_neighbor_pages' is a GLOBAL variable and should be set with SET GLOBAL
244+SET global innodb_flush_neighbor_pages=1.1;
245+ERROR 42000: Incorrect argument type to variable 'innodb_flush_neighbor_pages'
246+SET global innodb_flush_neighbor_pages=1e1;
247+ERROR 42000: Incorrect argument type to variable 'innodb_flush_neighbor_pages'
248+SET global innodb_flush_neighbor_pages='foo';
249+ERROR 42000: Variable 'innodb_flush_neighbor_pages' can't be set to the value of 'foo'
250+SET global innodb_flush_neighbor_pages=-2;
251+ERROR 42000: Variable 'innodb_flush_neighbor_pages' can't be set to the value of '-2'
252+SET @@global.innodb_flush_neighbor_pages = @saved_val;
253
254=== added file 'Percona-Server/mysql-test/suite/sys_vars/r/innodb_flush_neighbor_pages_startup.result'
255--- Percona-Server/mysql-test/suite/sys_vars/r/innodb_flush_neighbor_pages_startup.result 1970-01-01 00:00:00 +0000
256+++ Percona-Server/mysql-test/suite/sys_vars/r/innodb_flush_neighbor_pages_startup.result 2012-08-21 13:01:22 +0000
257@@ -0,0 +1,18 @@
258+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
259+@@GLOBAL.innodb_flush_neighbor_pages
260+none
261+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
262+@@GLOBAL.innodb_flush_neighbor_pages
263+area
264+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
265+@@GLOBAL.innodb_flush_neighbor_pages
266+cont
267+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
268+@@GLOBAL.innodb_flush_neighbor_pages
269+none
270+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
271+@@GLOBAL.innodb_flush_neighbor_pages
272+area
273+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
274+@@GLOBAL.innodb_flush_neighbor_pages
275+cont
276
277=== modified file 'Percona-Server/mysql-test/suite/sys_vars/r/innodb_read_ahead_basic.result'
278--- Percona-Server/mysql-test/suite/sys_vars/r/innodb_read_ahead_basic.result 2012-04-18 23:26:11 +0000
279+++ Percona-Server/mysql-test/suite/sys_vars/r/innodb_read_ahead_basic.result 2012-08-21 13:01:22 +0000
280@@ -1,3 +1,99 @@
281-SELECT @@global.innodb_read_ahead;
282-@@global.innodb_read_ahead
283-linear
284+SET @saved_val = @@global.innodb_read_ahead;
285+SELECT @@global.innodb_read_ahead IN ('none', 'random', 'linear', 'both', '0', '1', '2', '3');
286+@@global.innodb_read_ahead IN ('none', 'random', 'linear', 'both', '0', '1', '2', '3')
287+1
288+SELECT @@session.innodb_read_ahead;
289+ERROR HY000: Variable 'innodb_read_ahead' is a GLOBAL variable
290+SET GLOBAL innodb_read_ahead='none';
291+SELECT @@GLOBAL.innodb_read_ahead;
292+@@GLOBAL.innodb_read_ahead
293+none
294+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
295+VARIABLE_NAME VARIABLE_VALUE
296+INNODB_READ_AHEAD none
297+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
298+VARIABLE_NAME VARIABLE_VALUE
299+INNODB_READ_AHEAD none
300+SET GLOBAL innodb_read_ahead='random';
301+SELECT @@GLOBAL.innodb_read_ahead;
302+@@GLOBAL.innodb_read_ahead
303+random
304+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
305+VARIABLE_NAME VARIABLE_VALUE
306+INNODB_READ_AHEAD random
307+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
308+VARIABLE_NAME VARIABLE_VALUE
309+INNODB_READ_AHEAD random
310+SET GLOBAL innodb_read_ahead='linear';
311+SELECT @@GLOBAL.innodb_read_ahead;
312+@@GLOBAL.innodb_read_ahead
313+linear
314+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
315+VARIABLE_NAME VARIABLE_VALUE
316+INNODB_READ_AHEAD linear
317+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
318+VARIABLE_NAME VARIABLE_VALUE
319+INNODB_READ_AHEAD linear
320+SET GLOBAL innodb_read_ahead='both';
321+SELECT @@GLOBAL.innodb_read_ahead;
322+@@GLOBAL.innodb_read_ahead
323+both
324+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
325+VARIABLE_NAME VARIABLE_VALUE
326+INNODB_READ_AHEAD both
327+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
328+VARIABLE_NAME VARIABLE_VALUE
329+INNODB_READ_AHEAD both
330+SET GLOBAL innodb_read_ahead='0';
331+SELECT @@GLOBAL.innodb_read_ahead;
332+@@GLOBAL.innodb_read_ahead
333+none
334+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
335+VARIABLE_NAME VARIABLE_VALUE
336+INNODB_READ_AHEAD none
337+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
338+VARIABLE_NAME VARIABLE_VALUE
339+INNODB_READ_AHEAD none
340+SET GLOBAL innodb_read_ahead='1';
341+SELECT @@GLOBAL.innodb_read_ahead;
342+@@GLOBAL.innodb_read_ahead
343+random
344+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
345+VARIABLE_NAME VARIABLE_VALUE
346+INNODB_READ_AHEAD random
347+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
348+VARIABLE_NAME VARIABLE_VALUE
349+INNODB_READ_AHEAD random
350+SET GLOBAL innodb_read_ahead='2';
351+SELECT @@GLOBAL.innodb_read_ahead;
352+@@GLOBAL.innodb_read_ahead
353+linear
354+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
355+VARIABLE_NAME VARIABLE_VALUE
356+INNODB_READ_AHEAD linear
357+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
358+VARIABLE_NAME VARIABLE_VALUE
359+INNODB_READ_AHEAD linear
360+SET GLOBAL innodb_read_ahead='3';
361+SELECT @@GLOBAL.innodb_read_ahead;
362+@@GLOBAL.innodb_read_ahead
363+both
364+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
365+VARIABLE_NAME VARIABLE_VALUE
366+INNODB_READ_AHEAD both
367+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
368+VARIABLE_NAME VARIABLE_VALUE
369+INNODB_READ_AHEAD both
370+SET SESSION innodb_read_ahead='linear';
371+ERROR HY000: Variable 'innodb_read_ahead' is a GLOBAL variable and should be set with SET GLOBAL
372+SET @@session.innodb_read_ahead='both';
373+ERROR HY000: Variable 'innodb_read_ahead' is a GLOBAL variable and should be set with SET GLOBAL
374+SET global innodb_read_ahead=1.1;
375+ERROR 42000: Incorrect argument type to variable 'innodb_read_ahead'
376+SET global innodb_read_ahead=1e1;
377+ERROR 42000: Incorrect argument type to variable 'innodb_read_ahead'
378+SET global innodb_read_ahead='foo';
379+ERROR 42000: Variable 'innodb_read_ahead' can't be set to the value of 'foo'
380+SET global innodb_read_ahead=-2;
381+ERROR 42000: Variable 'innodb_read_ahead' can't be set to the value of '-2'
382+SET @@global.innodb_read_ahead = @saved_val;
383
384=== added file 'Percona-Server/mysql-test/suite/sys_vars/r/innodb_read_ahead_startup.result'
385--- Percona-Server/mysql-test/suite/sys_vars/r/innodb_read_ahead_startup.result 1970-01-01 00:00:00 +0000
386+++ Percona-Server/mysql-test/suite/sys_vars/r/innodb_read_ahead_startup.result 2012-08-21 13:01:22 +0000
387@@ -0,0 +1,24 @@
388+SELECT @@GLOBAL.innodb_read_ahead;
389+@@GLOBAL.innodb_read_ahead
390+none
391+SELECT @@GLOBAL.innodb_read_ahead;
392+@@GLOBAL.innodb_read_ahead
393+random
394+SELECT @@GLOBAL.innodb_read_ahead;
395+@@GLOBAL.innodb_read_ahead
396+linear
397+SELECT @@GLOBAL.innodb_read_ahead;
398+@@GLOBAL.innodb_read_ahead
399+both
400+SELECT @@GLOBAL.innodb_read_ahead;
401+@@GLOBAL.innodb_read_ahead
402+none
403+SELECT @@GLOBAL.innodb_read_ahead;
404+@@GLOBAL.innodb_read_ahead
405+random
406+SELECT @@GLOBAL.innodb_read_ahead;
407+@@GLOBAL.innodb_read_ahead
408+linear
409+SELECT @@GLOBAL.innodb_read_ahead;
410+@@GLOBAL.innodb_read_ahead
411+both
412
413=== modified file 'Percona-Server/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_method_basic.test'
414--- Percona-Server/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_method_basic.test 2012-04-18 23:26:11 +0000
415+++ Percona-Server/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_method_basic.test 2012-08-21 13:01:22 +0000
416@@ -1,1 +1,62 @@
417-SELECT @@global.innodb_adaptive_flushing_method;
418+# Tests for innodb_adaptive_flushing_method variable
419+
420+--source include/have_innodb.inc
421+
422+SET @saved_val = @@global.innodb_adaptive_flushing_method;
423+
424+# Valid values
425+SELECT @@global.innodb_adaptive_flushing_method IN ('native', 'estimate', 'keep_average', '0', '1', '2');
426+
427+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
428+SELECT @@session.innodb_adaptive_flushing_method;
429+
430+# Test its writability
431+SET GLOBAL innodb_adaptive_flushing_method='native';
432+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
433+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
434+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
435+
436+SET GLOBAL innodb_adaptive_flushing_method='estimate';
437+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
438+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
439+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
440+
441+SET GLOBAL innodb_adaptive_flushing_method='keep_average';
442+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
443+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
444+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
445+
446+SET GLOBAL innodb_adaptive_flushing_method='0';
447+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
448+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
449+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
450+
451+SET GLOBAL innodb_adaptive_flushing_method='1';
452+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
453+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
454+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
455+
456+SET GLOBAL innodb_adaptive_flushing_method='2';
457+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
458+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
459+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_adaptive_flushing_method';
460+
461+# Cannot set it for session
462+
463+--error ER_GLOBAL_VARIABLE
464+SET SESSION innodb_adaptive_flushing_method='estimate';
465+--error ER_GLOBAL_VARIABLE
466+SET @@session.innodb_adaptive_flushing_method='keep_average';
467+
468+# Incorrect types and values
469+--error ER_WRONG_TYPE_FOR_VAR
470+SET global innodb_adaptive_flushing_method=1.1;
471+--error ER_WRONG_TYPE_FOR_VAR
472+SET global innodb_adaptive_flushing_method=1e1;
473+--error ER_WRONG_VALUE_FOR_VAR
474+SET global innodb_adaptive_flushing_method='foo';
475+--error ER_WRONG_VALUE_FOR_VAR
476+SET global innodb_adaptive_flushing_method=-2;
477+
478+# Cleanup
479+SET @@global.innodb_adaptive_flushing_method = @saved_val;
480
481=== added file 'Percona-Server/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_method_startup.test'
482--- Percona-Server/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_method_startup.test 1970-01-01 00:00:00 +0000
483+++ Percona-Server/mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_method_startup.test 2012-08-21 13:01:22 +0000
484@@ -0,0 +1,57 @@
485+# Test setting innodb_adaptive_flushing_method at startup time
486+
487+--source include/have_innodb.inc
488+
489+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
490+--shutdown_server 10
491+--source include/wait_until_disconnected.inc
492+--enable_reconnect
493+--exec echo "restart:--innodb_adaptive_flushing_method=native" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
494+--source include/wait_until_connected_again.inc
495+
496+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
497+
498+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
499+--shutdown_server 10
500+--source include/wait_until_disconnected.inc
501+--enable_reconnect
502+--exec echo "restart:--innodb_adaptive_flushing_method=estimate" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
503+--source include/wait_until_connected_again.inc
504+
505+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
506+
507+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
508+--shutdown_server 10
509+--source include/wait_until_disconnected.inc
510+--enable_reconnect
511+--exec echo "restart:--innodb_adaptive_flushing_method=keep_average" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
512+--source include/wait_until_connected_again.inc
513+
514+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
515+
516+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
517+--shutdown_server 10
518+--source include/wait_until_disconnected.inc
519+--enable_reconnect
520+--exec echo "restart:--innodb_adaptive_flushing_method=0" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
521+--source include/wait_until_connected_again.inc
522+
523+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
524+
525+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
526+--shutdown_server 10
527+--source include/wait_until_disconnected.inc
528+--enable_reconnect
529+--exec echo "restart:--innodb_adaptive_flushing_method=1" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
530+--source include/wait_until_connected_again.inc
531+
532+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
533+
534+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
535+--shutdown_server 10
536+--source include/wait_until_disconnected.inc
537+--enable_reconnect
538+--exec echo "restart:--innodb_adaptive_flushing_method=2" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
539+--source include/wait_until_connected_again.inc
540+
541+SELECT @@GLOBAL.innodb_adaptive_flushing_method;
542
543=== modified file 'Percona-Server/mysql-test/suite/sys_vars/t/innodb_corrupt_table_action_basic.test'
544--- Percona-Server/mysql-test/suite/sys_vars/t/innodb_corrupt_table_action_basic.test 2012-04-18 23:26:11 +0000
545+++ Percona-Server/mysql-test/suite/sys_vars/t/innodb_corrupt_table_action_basic.test 2012-08-21 13:01:22 +0000
546@@ -1,1 +1,47 @@
547-SELECT @@global.innodb_corrupt_table_action;
548+# Tests for innodb_corrupt_table_action variable
549+
550+--source include/have_innodb.inc
551+
552+SET @saved_val = @@global.innodb_corrupt_table_action;
553+
554+# Valid values
555+SELECT @@global.innodb_corrupt_table_action IN ('assert', 'warn', 'salvage');
556+
557+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
558+SELECT @@session.innodb_corrupt_table_action;
559+
560+# Test its writability
561+SET GLOBAL innodb_corrupt_table_action='assert';
562+SELECT @@GLOBAL.innodb_corrupt_table_action;
563+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_corrupt_table_action';
564+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_corrupt_table_action';
565+
566+SET GLOBAL innodb_corrupt_table_action='warn';
567+SELECT @@GLOBAL.innodb_corrupt_table_action;
568+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_corrupt_table_action';
569+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_corrupt_table_action';
570+
571+SET GLOBAL innodb_corrupt_table_action='salvage';
572+SELECT @@GLOBAL.innodb_corrupt_table_action;
573+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_corrupt_table_action';
574+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_corrupt_table_action';
575+
576+# Cannot set it for session
577+
578+--error ER_GLOBAL_VARIABLE
579+SET SESSION innodb_corrupt_table_action='warn';
580+--error ER_GLOBAL_VARIABLE
581+SET @@session.innodb_corrupt_table_action='salvage';
582+
583+# Incorrect types and values
584+--error ER_WRONG_TYPE_FOR_VAR
585+SET global innodb_corrupt_table_action=1.1;
586+--error ER_WRONG_TYPE_FOR_VAR
587+SET global innodb_corrupt_table_action=1e1;
588+--error ER_WRONG_VALUE_FOR_VAR
589+SET global innodb_corrupt_table_action='foo';
590+--error ER_WRONG_VALUE_FOR_VAR
591+SET global innodb_corrupt_table_action=-2;
592+
593+# Cleanup
594+SET @@global.innodb_corrupt_table_action = @saved_val;
595
596=== modified file 'Percona-Server/mysql-test/suite/sys_vars/t/innodb_flush_neighbor_pages_basic.test'
597--- Percona-Server/mysql-test/suite/sys_vars/t/innodb_flush_neighbor_pages_basic.test 2012-04-18 23:26:11 +0000
598+++ Percona-Server/mysql-test/suite/sys_vars/t/innodb_flush_neighbor_pages_basic.test 2012-08-21 13:01:22 +0000
599@@ -1,1 +1,62 @@
600-SELECT @@global.innodb_flush_neighbor_pages;
601+# Tests for innodb_flush_neighbor_pages variable
602+
603+--source include/have_innodb.inc
604+
605+SET @saved_val = @@global.innodb_flush_neighbor_pages;
606+
607+# Valid values
608+SELECT @@global.innodb_flush_neighbor_pages IN ('none', 'area', 'cont', '0', '1', '2');
609+
610+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
611+SELECT @@session.innodb_flush_neighbor_pages;
612+
613+# Test its writability
614+SET GLOBAL innodb_flush_neighbor_pages='none';
615+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
616+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
617+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
618+
619+SET GLOBAL innodb_flush_neighbor_pages='area';
620+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
621+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
622+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
623+
624+SET GLOBAL innodb_flush_neighbor_pages='cont';
625+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
626+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
627+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
628+
629+SET GLOBAL innodb_flush_neighbor_pages='0';
630+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
631+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
632+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
633+
634+SET GLOBAL innodb_flush_neighbor_pages='1';
635+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
636+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
637+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
638+
639+SET GLOBAL innodb_flush_neighbor_pages='2';
640+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
641+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
642+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_flush_neighbor_pages';
643+
644+# Cannot set it for session
645+
646+--error ER_GLOBAL_VARIABLE
647+SET SESSION innodb_flush_neighbor_pages='area';
648+--error ER_GLOBAL_VARIABLE
649+SET @@session.innodb_flush_neighbor_pages='cont';
650+
651+# Incorrect types and values
652+--error ER_WRONG_TYPE_FOR_VAR
653+SET global innodb_flush_neighbor_pages=1.1;
654+--error ER_WRONG_TYPE_FOR_VAR
655+SET global innodb_flush_neighbor_pages=1e1;
656+--error ER_WRONG_VALUE_FOR_VAR
657+SET global innodb_flush_neighbor_pages='foo';
658+--error ER_WRONG_VALUE_FOR_VAR
659+SET global innodb_flush_neighbor_pages=-2;
660+
661+# Cleanup
662+SET @@global.innodb_flush_neighbor_pages = @saved_val;
663
664=== added file 'Percona-Server/mysql-test/suite/sys_vars/t/innodb_flush_neighbor_pages_startup.test'
665--- Percona-Server/mysql-test/suite/sys_vars/t/innodb_flush_neighbor_pages_startup.test 1970-01-01 00:00:00 +0000
666+++ Percona-Server/mysql-test/suite/sys_vars/t/innodb_flush_neighbor_pages_startup.test 2012-08-21 13:01:22 +0000
667@@ -0,0 +1,57 @@
668+# Test setting innodb_flush_neighbor_pages at startup time (bug 1039384)
669+
670+--source include/have_innodb.inc
671+
672+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
673+--shutdown_server 10
674+--source include/wait_until_disconnected.inc
675+--enable_reconnect
676+--exec echo "restart:--innodb_flush_neighbor_pages=none" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
677+--source include/wait_until_connected_again.inc
678+
679+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
680+
681+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
682+--shutdown_server 10
683+--source include/wait_until_disconnected.inc
684+--enable_reconnect
685+--exec echo "restart:--innodb_flush_neighbor_pages=area" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
686+--source include/wait_until_connected_again.inc
687+
688+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
689+
690+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
691+--shutdown_server 10
692+--source include/wait_until_disconnected.inc
693+--enable_reconnect
694+--exec echo "restart:--innodb_flush_neighbor_pages=cont" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
695+--source include/wait_until_connected_again.inc
696+
697+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
698+
699+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
700+--shutdown_server 10
701+--source include/wait_until_disconnected.inc
702+--enable_reconnect
703+--exec echo "restart:--innodb_flush_neighbor_pages=0" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
704+--source include/wait_until_connected_again.inc
705+
706+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
707+
708+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
709+--shutdown_server 10
710+--source include/wait_until_disconnected.inc
711+--enable_reconnect
712+--exec echo "restart:--innodb_flush_neighbor_pages=1" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
713+--source include/wait_until_connected_again.inc
714+
715+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
716+
717+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
718+--shutdown_server 10
719+--source include/wait_until_disconnected.inc
720+--enable_reconnect
721+--exec echo "restart:--innodb_flush_neighbor_pages=2" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
722+--source include/wait_until_connected_again.inc
723+
724+SELECT @@GLOBAL.innodb_flush_neighbor_pages;
725
726=== modified file 'Percona-Server/mysql-test/suite/sys_vars/t/innodb_read_ahead_basic.test'
727--- Percona-Server/mysql-test/suite/sys_vars/t/innodb_read_ahead_basic.test 2012-04-18 23:26:11 +0000
728+++ Percona-Server/mysql-test/suite/sys_vars/t/innodb_read_ahead_basic.test 2012-08-21 13:01:22 +0000
729@@ -1,1 +1,72 @@
730-SELECT @@global.innodb_read_ahead;
731+# Tests for innodb_read_ahead variable
732+
733+--source include/have_innodb.inc
734+
735+SET @saved_val = @@global.innodb_read_ahead;
736+
737+# Valid values
738+SELECT @@global.innodb_read_ahead IN ('none', 'random', 'linear', 'both', '0', '1', '2', '3');
739+
740+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
741+SELECT @@session.innodb_read_ahead;
742+
743+# Test its writability
744+SET GLOBAL innodb_read_ahead='none';
745+SELECT @@GLOBAL.innodb_read_ahead;
746+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
747+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
748+
749+SET GLOBAL innodb_read_ahead='random';
750+SELECT @@GLOBAL.innodb_read_ahead;
751+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
752+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
753+
754+SET GLOBAL innodb_read_ahead='linear';
755+SELECT @@GLOBAL.innodb_read_ahead;
756+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
757+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
758+
759+SET GLOBAL innodb_read_ahead='both';
760+SELECT @@GLOBAL.innodb_read_ahead;
761+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
762+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
763+
764+SET GLOBAL innodb_read_ahead='0';
765+SELECT @@GLOBAL.innodb_read_ahead;
766+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
767+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
768+
769+SET GLOBAL innodb_read_ahead='1';
770+SELECT @@GLOBAL.innodb_read_ahead;
771+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
772+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
773+
774+SET GLOBAL innodb_read_ahead='2';
775+SELECT @@GLOBAL.innodb_read_ahead;
776+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
777+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
778+
779+SET GLOBAL innodb_read_ahead='3';
780+SELECT @@GLOBAL.innodb_read_ahead;
781+SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
782+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_read_ahead';
783+
784+# Cannot set it for session
785+
786+--error ER_GLOBAL_VARIABLE
787+SET SESSION innodb_read_ahead='linear';
788+--error ER_GLOBAL_VARIABLE
789+SET @@session.innodb_read_ahead='both';
790+
791+# Incorrect types and values
792+--error ER_WRONG_TYPE_FOR_VAR
793+SET global innodb_read_ahead=1.1;
794+--error ER_WRONG_TYPE_FOR_VAR
795+SET global innodb_read_ahead=1e1;
796+--error ER_WRONG_VALUE_FOR_VAR
797+SET global innodb_read_ahead='foo';
798+--error ER_WRONG_VALUE_FOR_VAR
799+SET global innodb_read_ahead=-2;
800+
801+# Cleanup
802+SET @@global.innodb_read_ahead = @saved_val;
803
804=== added file 'Percona-Server/mysql-test/suite/sys_vars/t/innodb_read_ahead_startup.test'
805--- Percona-Server/mysql-test/suite/sys_vars/t/innodb_read_ahead_startup.test 1970-01-01 00:00:00 +0000
806+++ Percona-Server/mysql-test/suite/sys_vars/t/innodb_read_ahead_startup.test 2012-08-21 13:01:22 +0000
807@@ -0,0 +1,75 @@
808+# Test setting innodb_read_ahead at startup time
809+
810+--source include/have_innodb.inc
811+
812+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
813+--shutdown_server 10
814+--source include/wait_until_disconnected.inc
815+--enable_reconnect
816+--exec echo "restart:--innodb_read_ahead=none" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
817+--source include/wait_until_connected_again.inc
818+
819+SELECT @@GLOBAL.innodb_read_ahead;
820+
821+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
822+--shutdown_server 10
823+--source include/wait_until_disconnected.inc
824+--enable_reconnect
825+--exec echo "restart:--innodb_read_ahead=random" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
826+--source include/wait_until_connected_again.inc
827+
828+SELECT @@GLOBAL.innodb_read_ahead;
829+
830+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
831+--shutdown_server 10
832+--source include/wait_until_disconnected.inc
833+--enable_reconnect
834+--exec echo "restart:--innodb_read_ahead=linear" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
835+--source include/wait_until_connected_again.inc
836+
837+SELECT @@GLOBAL.innodb_read_ahead;
838+
839+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
840+--shutdown_server 10
841+--source include/wait_until_disconnected.inc
842+--enable_reconnect
843+--exec echo "restart:--innodb_read_ahead=both" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
844+--source include/wait_until_connected_again.inc
845+
846+SELECT @@GLOBAL.innodb_read_ahead;
847+
848+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
849+--shutdown_server 10
850+--source include/wait_until_disconnected.inc
851+--enable_reconnect
852+--exec echo "restart:--innodb_read_ahead=0" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
853+--source include/wait_until_connected_again.inc
854+
855+SELECT @@GLOBAL.innodb_read_ahead;
856+
857+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
858+--shutdown_server 10
859+--source include/wait_until_disconnected.inc
860+--enable_reconnect
861+--exec echo "restart:--innodb_read_ahead=1" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
862+--source include/wait_until_connected_again.inc
863+
864+SELECT @@GLOBAL.innodb_read_ahead;
865+
866+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
867+--shutdown_server 10
868+--source include/wait_until_disconnected.inc
869+--enable_reconnect
870+--exec echo "restart:--innodb_read_ahead=2" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
871+--source include/wait_until_connected_again.inc
872+
873+SELECT @@GLOBAL.innodb_read_ahead;
874+
875+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
876+--shutdown_server 10
877+--source include/wait_until_disconnected.inc
878+--enable_reconnect
879+--exec echo "restart:--innodb_read_ahead=3" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
880+--source include/wait_until_connected_again.inc
881+
882+SELECT @@GLOBAL.innodb_read_ahead;
883
884=== modified file 'Percona-Server/storage/innobase/handler/ha_innodb.cc'
885--- Percona-Server/storage/innobase/handler/ha_innodb.cc 2012-08-07 06:10:00 +0000
886+++ Percona-Server/storage/innobase/handler/ha_innodb.cc 2012-08-21 13:01:22 +0000
887@@ -2918,6 +2918,7 @@
888
889 srv_read_ahead &= 3;
890 srv_adaptive_flushing_method %= 3;
891+ srv_flush_neighbor_pages %= 3;
892
893 srv_force_recovery = (ulint) innobase_force_recovery;
894
895@@ -12781,7 +12782,7 @@
896 void* var_ptr,
897 const void* save)
898 {
899- *(long *)var_ptr= (*(long *)save) % 4;
900+ *(long *)var_ptr= (*(long *)save) % 3;
901 }
902 const char *adaptive_flushing_method_names[]=
903 {

Subscribers

People subscribed via source and target branches