MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ddl4.inc
1 ######## include/ddl4.inc ######
2 #
3 # Stress the storage engine with rapid CREATE/DROP TABLE/INDEX
4 # and following SELECT/INSERT/SHOW etc.
5 # Subtest 4 variants (4A - 4D)
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 4 variants
26 # Scenario: CREATE TABLE variant1/SHOW/DROP TABLE/SHOW(F)/
27 # CREATE TABLE variant2/SHOW/DROP TABLE
28 let $create_table1= CREATE TABLE t1 (f1 BIGINT, f2 BIGINT, UNIQUE(f1), UNIQUE (f2)) ENGINE=$engine_type;
29 let $create_table2= CREATE TABLE t1 (f1 BIGINT) ENGINE=$engine_type;
30 let $show_table= SHOW CREATE TABLE t1;
31 let $drop_table= DROP TABLE t1;
32 #
33 eval $create_table1;
34 let $cr_value1= INITIALIZED;
35 let $cr_value1= query_get_value($show_table, Create Table, 1);
36 eval $drop_table;
37 eval $create_table2;
38 let $cr_value2= INITIALIZED;
39 let $cr_value2= query_get_value($show_table, Create Table, 1);
40 eval $drop_table;
41 if (`SELECT '$cr_value1' = '$cr_value2'`)
42 {
43  --echo # Error during generation of prerequisites.
44  --echo # cr_value1 equals cr_value2
45  --echo # cr_value1: $cr_value1
46  --echo # cr_value2: $cr_value2
47  --echo # abort
48  exit;
49 }
50 #----------------------------------------------------------------------
51 
52 #
53 --echo # Subtest 4A (one connection, no PREPARE/EXECUTE)
54 --echo # connection action
55 --echo # default: $create_table1
56 --echo # default: $show_table
57 --echo # default: $drop_table
58 --echo # default: $show_table (expect to get ER_NO_SUCH_TABLE)
59 --echo # default: $create_table2
60 --echo # default: $show_table
61 --echo # default: $drop_table
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_table1;
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_table;
86  --error 0,ER_NO_SUCH_TABLE
87  eval $show_table;
88  if (!$mysql_errno)
89  {
90  --echo # Error: SHOW CREATE TABLE was successful though we expected ER_NO_SUCH_TABLE)
91  --echo # abort
92  exit;
93  }
94  eval $create_table2;
95  let $value= INITIALIZED;
96  let $value= query_get_value($show_table, Create Table, 1);
97  if (`SELECT '$value' <> '$cr_value2'`)
98  {
99  --echo # Error: Unexpected SHOW CREATE TABLE output
100  --echo # Got: $value
101  --echo # Expected: $cr_value2
102  --echo # abort
103  exit;
104  }
105  eval $drop_table;
106  dec $loop_run;
107  }
108  if (`EXECUTE stmt_break`)
109  {
110  let $run= 0;
111  }
112 }
113 --enable_result_log
114 --enable_query_log
115 #
116 --echo # Subtest 4B (one connection, use PREPARE/EXECUTE)
117 --echo # connection action
118 --echo # default: $create_table1
119 --echo # default: $show_table
120 --echo # default: $drop_table
121 --echo # default: $show_table (expect to get ER_NO_SUCH_TABLE)
122 --echo # default: $create_table2
123 --echo # default: $show_table
124 --echo # default: $drop_table
125 --disable_query_log
126 --disable_result_log
127 connection default;
128 eval PREPARE create_table1 FROM "$create_table1";
129 eval PREPARE create_table2 FROM "$create_table2";
130 EXECUTE create_table1;
131 eval PREPARE show_table FROM "$show_table";
132 eval PREPARE drop_table FROM "$drop_table";
133 EXECUTE drop_table;
134 let $run= 1;
135 # Determine the current time.
136 EXECUTE stmt_start;
137 # Run execution loops till the planned runtime is reached
138 while ($run)
139 {
140  let $loop_run= $loop_size;
141  while ($loop_run)
142  {
143  EXECUTE create_table1;
144  let $value= INITIALIZED;
145  let $value= query_get_value(EXECUTE show_table, Create Table, 1);
146  if (`SELECT '$value' <> '$cr_value1'`)
147  {
148  --echo # Error: Unexpected SHOW CREATE TABLE output
149  --echo # Got: $value
150  --echo # Expected: $cr_value1
151  --echo # abort
152  exit;
153  }
154  EXECUTE drop_table;
155  --error 0,ER_NO_SUCH_TABLE
156  EXECUTE show_table;
157  if (!$mysql_errno)
158  {
159  --echo # Error: SHOW CREATE TABLE was successful though we expected ER_NO_SUCH_TABLE)
160  --echo # abort
161  exit;
162  }
163  EXECUTE create_table2;
164  let $value= INITIALIZED;
165  let $value= query_get_value(EXECUTE show_table, Create Table, 1);
166  if (`SELECT '$value' <> '$cr_value2'`)
167  {
168  --echo # Error: Unexpected SHOW CREATE TABLE output
169  --echo # Got: $value
170  --echo # Expected: $cr_value2
171  --echo # abort
172  exit;
173  }
174  EXECUTE drop_table;
175  dec $loop_run;
176  }
177  if (`EXECUTE stmt_break`)
178  {
179  let $run= 0;
180  }
181 }
182 DEALLOCATE PREPARE create_table1;
183 DEALLOCATE PREPARE create_table2;
184 DEALLOCATE PREPARE show_table;
185 DEALLOCATE PREPARE drop_table;
186 --enable_result_log
187 --enable_query_log
188 #
189 --echo # Subtest 4C (two connections, no PREPARE/EXECUTE)
190 --echo # connection action
191 --echo # default: $create_table1
192 --echo # con2: $show_table
193 --echo # default: $drop_table
194 --echo # con2: $show_table (expect to get ER_NO_SUCH_TABLE)
195 --echo # default: $create_table2
196 --echo # con2: $show_table
197 --echo # default: $drop_table
198 --disable_query_log
199 --disable_result_log
200 connection default;
201 let $run= 1;
202 # Determine the current time.
203 EXECUTE stmt_start;
204 # Run execution loops till the planned runtime is reached
205 while ($run)
206 {
207  let $loop_run= $loop_size;
208  while ($loop_run)
209  {
210  eval $create_table1;
211  connection con2;
212  let $value= INITIALIZED;
213  let $value= query_get_value($show_table, Create Table, 1);
214  if (`SELECT '$value' <> '$cr_value1'`)
215  {
216  --echo # Error: Unexpected SHOW CREATE TABLE output
217  --echo # Got: $value
218  --echo # Expected: $cr_value1
219  --echo # abort
220  exit;
221  }
222  connection default;
223  eval $drop_table;
224  connection con2;
225  --error 0,ER_NO_SUCH_TABLE
226  eval $show_table;
227  if (!$mysql_errno)
228  {
229  --echo # Error: SHOW CREATE TABLE was successful though we expected ER_NO_SUCH_TABLE)
230  --echo # abort
231  exit;
232  }
233  connection default;
234  eval $create_table2;
235  connection con2;
236  let $value= INITIALIZED;
237  let $value= query_get_value($show_table, Create Table, 1);
238  if (`SELECT '$value' <> '$cr_value2'`)
239  {
240  --echo # Error: Unexpected SHOW CREATE TABLE output
241  --echo # Got: $value
242  --echo # Expected: $cr_value2
243  --echo # abort
244  exit;
245  }
246  connection default;
247  eval $drop_table;
248  dec $loop_run;
249  }
250  if (`EXECUTE stmt_break`)
251  {
252  let $run= 0;
253  }
254 }
255 --enable_result_log
256 --enable_query_log
257 #
258 --echo # Subtest 4D (two connections, use PREPARE/EXECUTE)
259 --echo # connection action
260 --echo # default: $create_table1
261 --echo # con2: $show_table
262 --echo # default: $drop_table
263 --echo # con2: $show_table (expect to get ER_NO_SUCH_TABLE)
264 --echo # default: $create_table2
265 --echo # con2: $show_table
266 --echo # default: $drop_table
267 --disable_query_log
268 --disable_result_log
269 connection default;
270 eval PREPARE create_table1 FROM "$create_table1";
271 eval PREPARE create_table2 FROM "$create_table2";
272 eval PREPARE drop_table FROM "$drop_table";
273 EXECUTE create_table1;
274 connection con2;
275 eval PREPARE show_table FROM "$show_table";
276 connection default;
277 EXECUTE drop_table;
278 let $run= 1;
279 # Determine the current time.
280 EXECUTE stmt_start;
281 # Run execution loops till the planned runtime is reached
282 while ($run)
283 {
284  let $loop_run= $loop_size;
285  while ($loop_run)
286  {
287  EXECUTE create_table1;
288  connection con2;
289  let $value= INITIALIZED;
290  let $value= query_get_value(EXECUTE show_table, Create Table, 1);
291  if (`SELECT '$value' <> '$cr_value1'`)
292  {
293  --echo # Error: Unexpected SHOW CREATE TABLE output
294  --echo # Got: $value
295  --echo # Expected: $cr_value1
296  --echo # abort
297  exit;
298  }
299  connection default;
300  EXECUTE drop_table;
301  connection con2;
302  --error 0,ER_NO_SUCH_TABLE
303  EXECUTE show_table;
304  if (!$mysql_errno)
305  {
306  --echo # Error: SHOW CREATE TABLE was successful though we expected ER_NO_SUCH_TABLE)
307  --echo # abort
308  exit;
309  }
310  connection default;
311  EXECUTE create_table2;
312  connection con2;
313  let $value= INITIALIZED;
314  let $value= query_get_value(EXECUTE show_table, Create Table, 1);
315  if (`SELECT '$value' <> '$cr_value2'`)
316  {
317  --echo # Error: Unexpected SHOW CREATE TABLE output
318  --echo # Got: $value
319  --echo # Expected: $cr_value2
320  --echo # abort
321  exit;
322  }
323  connection default;
324  EXECUTE drop_table;
325  dec $loop_run;
326  }
327  if (`EXECUTE stmt_break`)
328  {
329  let $run= 0;
330  }
331 }
332 DEALLOCATE PREPARE create_table1;
333 DEALLOCATE PREPARE create_table2;
334 DEALLOCATE PREPARE drop_table;
335 connection con2;
336 DEALLOCATE PREPARE show_table;
337 connection default;
338 --enable_result_log
339 --enable_query_log