MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ddl8.inc
1 ######## include/ddl8.inc ######
2 #
3 # Stress the storage engine with rapid CREATE/DROP TABLE/INDEX
4 # and following SELECT/INSERT/SHOW etc.
5 # Subtest 8 variants (8A - 8D)
6 #
7 # The variables
8 # $loop_size -- number of rounds till we look at the clock again
9 # $runtime -- rough intended runtime per subtest variant
10 # $engine_type -- storage engine to be used in CREATE TABLE
11 # must be set within the routine sourcing this script.
12 #
13 # Other stuff which must already exist:
14 # - connection con2
15 # - stmt_start and stmt_break prepared by the default connection
16 #
17 # Please look for more details within include/ddl1.inc.
18 #
19 # Creation of this test:
20 # 2007-07-04 mleich
21 #
22 
23 
24 #----------------------------------------------------------------------
25 # Settings for Subtest 8 variants
26 # Scenario: CREATE INDEX variant1/SHOW/DROP INDEX/
27 # CREATE INDEX variant2/SHOW/DROP INDEX
28 let $create_index1= CREATE INDEX IDX ON t1 (f2);
29 let $create_index2= CREATE UNIQUE INDEX IDX ON t1 (f2);
30 let $show_table= SHOW CREATE TABLE t1;
31 let $drop_index= DROP INDEX IDX ON t1;
32 eval CREATE TABLE t1 (f1 BIGINT, f2 BIGINT, UNIQUE(f1)) ENGINE=$engine_type;
33 INSERT INTO t1 VALUES(1,1);
34 eval $create_index1;
35 let $cr_value1= INITIALIZED;
36 let $cr_value1= query_get_value($show_table, Create Table, 1);
37 eval $drop_index;
38 eval $create_index2;
39 let $cr_value2= INITIALIZED;
40 let $cr_value2= query_get_value($show_table, Create Table, 1);
41 eval $drop_index;
42 if (`SELECT '$cr_value1' = '$cr_value2'`)
43 {
44  --echo # Error during generation of prerequisites.
45  --echo # cr_value1 equals cr_value2
46  --echo # cr_value1: $cr_value1
47  --echo # cr_value2: $cr_value2
48  --echo # abort
49  exit;
50 }
51 #----------------------------------------------------------------------
52 
53 #
54 --echo # Subtest 8A (one connection, no PREPARE/EXECUTE)
55 --echo # connection action
56 --echo # default: $create_index1
57 --echo # default: $show_table
58 --echo # default: $drop_index
59 --echo # default: $create_index2
60 --echo # default: $show_table
61 --echo # default: $drop_index
62 --disable_query_log
63 --disable_result_log
64 connection default;
65 let $run= 1;
66 # Determine the current time.
67 EXECUTE stmt_start;
68 # Run execution loops till the planned runtime is reached
69 while ($run)
70 {
71  let $loop_run= $loop_size;
72  while ($loop_run)
73  {
74  eval $create_index1;
75  let $value= INITIALIZED;
76  let $value= query_get_value($show_table, Create Table, 1);
77  if (`SELECT '$value' <> '$cr_value1'`)
78  {
79  --echo # Error: Unexpected SHOW CREATE TABLE output
80  --echo # Got: $value
81  --echo # Expected: $cr_value1
82  --echo # abort
83  exit;
84  }
85  eval $drop_index;
86  eval $create_index2;
87  let $value= INITIALIZED;
88  let $value= query_get_value($show_table, Create Table, 1);
89  if (`SELECT '$value' <> '$cr_value2'`)
90  {
91  --echo # Error: Unexpected SHOW CREATE TABLE output
92  --echo # Got: $value
93  --echo # Expected: $cr_value2
94  --echo # abort
95  exit;
96  }
97  eval $drop_index;
98  dec $loop_run;
99  }
100  if (`EXECUTE stmt_break`)
101  {
102  let $run= 0;
103  }
104 }
105 --enable_result_log
106 --enable_query_log
107 #
108 --echo # Subtest 8B (one connection, use PREPARE/EXECUTE)
109 --echo # connection action
110 --echo # default: $create_index1
111 --echo # default: $show_table
112 --echo # default: $drop_index
113 --echo # default: $create_index2
114 --echo # default: $show_table
115 --echo # default: $drop_index
116 --disable_query_log
117 --disable_result_log
118 connection default;
119 eval PREPARE create_index1 FROM "$create_index1";
120 eval PREPARE create_index2 FROM "$create_index2";
121 EXECUTE create_index1;
122 eval PREPARE show_table FROM "$show_table";
123 eval PREPARE drop_index FROM "$drop_index";
124 EXECUTE drop_index;
125 let $run= 1;
126 # Determine the current time.
127 EXECUTE stmt_start;
128 # Run execution loops till the planned runtime is reached
129 while ($run)
130 {
131  let $loop_run= $loop_size;
132  while ($loop_run)
133  {
134  EXECUTE create_index1;
135  let $value= INITIALIZED;
136  let $value= query_get_value(EXECUTE show_table, Create Table, 1);
137  if (`SELECT '$value' <> '$cr_value1'`)
138  {
139  --echo # Error: Unexpected SHOW CREATE TABLE output
140  --echo # Got: $value
141  --echo # Expected: $cr_value1
142  --echo # abort
143  exit;
144  }
145  EXECUTE drop_index;
146  EXECUTE create_index2;
147  let $value= INITIALIZED;
148  let $value= query_get_value(EXECUTE show_table, Create Table, 1);
149  if (`SELECT '$value' <> '$cr_value2'`)
150  {
151  --echo # Error: Unexpected SHOW CREATE TABLE output
152  --echo # Got: $value
153  --echo # Expected: $cr_value2
154  --echo # abort
155  exit;
156  }
157  EXECUTE drop_index;
158  dec $loop_run;
159  }
160  if (`EXECUTE stmt_break`)
161  {
162  let $run= 0;
163  }
164 }
165 DEALLOCATE PREPARE create_index1;
166 DEALLOCATE PREPARE create_index2;
167 DEALLOCATE PREPARE show_table;
168 DEALLOCATE PREPARE drop_index;
169 --enable_result_log
170 --enable_query_log
171 #
172 --echo # Subtest 8C (two connections, no PREPARE/EXECUTE)
173 --echo # connection action
174 --echo # default: $create_index1
175 --echo # con2: $show_table
176 --echo # default: $drop_index
177 --echo # default: $create_index2
178 --echo # con2: $show_table
179 --echo # default: $drop_index
180 --disable_query_log
181 --disable_result_log
182 connection default;
183 let $run= 1;
184 # Determine the current time.
185 EXECUTE stmt_start;
186 # Run execution loops till the planned runtime is reached
187 while ($run)
188 {
189  let $loop_run= $loop_size;
190  while ($loop_run)
191  {
192  eval $create_index1;
193  connection con2;
194  let $value= INITIALIZED;
195  let $value= query_get_value($show_table, Create Table, 1);
196  if (`SELECT '$value' <> '$cr_value1'`)
197  {
198  --echo # Error: Unexpected SHOW CREATE TABLE output
199  --echo # Got: $value
200  --echo # Expected: $cr_value1
201  --echo # abort
202  exit;
203  }
204  connection default;
205  eval $drop_index;
206  eval $create_index2;
207  connection con2;
208  let $value= INITIALIZED;
209  let $value= query_get_value($show_table, Create Table, 1);
210  if (`SELECT '$value' <> '$cr_value2'`)
211  {
212  --echo # Error: Unexpected SHOW CREATE TABLE output
213  --echo # Got: $value
214  --echo # Expected: $cr_value2
215  --echo # abort
216  exit;
217  }
218  connection default;
219  eval $drop_index;
220  dec $loop_run;
221  }
222  if (`EXECUTE stmt_break`)
223  {
224  let $run= 0;
225  }
226 }
227 --enable_result_log
228 --enable_query_log
229 #
230 --echo # Subtest 8D (two connections, use PREPARE/EXECUTE)
231 --echo # connection action
232 --echo # default: $create_index1
233 --echo # con2: $show_table
234 --echo # default: $drop_index
235 --echo # default: $create_index2
236 --echo # con2: $show_table
237 --echo # default: $drop_index
238 --disable_query_log
239 --disable_result_log
240 connection default;
241 eval PREPARE create_index1 FROM "$create_index1";
242 eval PREPARE create_index2 FROM "$create_index2";
243 eval PREPARE drop_index FROM "$drop_index";
244 EXECUTE create_index1;
245 connection con2;
246 eval PREPARE show_table FROM "$show_table";
247 connection default;
248 EXECUTE drop_index;
249 let $run= 1;
250 # Determine the current time.
251 EXECUTE stmt_start;
252 # Run execution loops till the planned runtime is reached
253 while ($run)
254 {
255  let $loop_run= $loop_size;
256  while ($loop_run)
257  {
258  EXECUTE create_index1;
259  connection con2;
260  let $value= INITIALIZED;
261  let $value= query_get_value(EXECUTE show_table, Create Table, 1);
262  if (`SELECT '$value' <> '$cr_value1'`)
263  {
264  --echo # Error: Unexpected SHOW CREATE TABLE output
265  --echo # Got: $value
266  --echo # Expected: $cr_value1
267  --echo # abort
268  exit;
269  }
270  connection default;
271  EXECUTE drop_index;
272  EXECUTE create_index2;
273  connection con2;
274  let $value= INITIALIZED;
275  let $value= query_get_value(EXECUTE show_table, Create Table, 1);
276  if (`SELECT '$value' <> '$cr_value2'`)
277  {
278  --echo # Error: Unexpected SHOW CREATE TABLE output
279  --echo # Got: $value
280  --echo # Expected: $cr_value2
281  --echo # abort
282  exit;
283  }
284  connection default;
285  EXECUTE drop_index;
286  dec $loop_run;
287  }
288  if (`EXECUTE stmt_break`)
289  {
290  let $run= 0;
291  }
292 }
293 DEALLOCATE PREPARE create_index1;
294 DEALLOCATE PREPARE create_index2;
295 DEALLOCATE PREPARE drop_index;
296 connection con2;
297 DEALLOCATE PREPARE show_table;
298 connection default;
299 --enable_result_log
300 --enable_query_log
301 
302 DROP TABLE t1;