~ubuntu-branches/ubuntu/trusty/mariadb-5.5/trusty-proposed

« back to all changes in this revision

Viewing changes to mysql-test/suite/innodb/t/innodb-create-options.test

  • Committer: Package Import Robot
  • Author(s): Otto Kekäläinen, Otto Kekäläinen, James Page
  • Date: 2014-03-02 01:38:26 UTC
  • mfrom: (2.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20140302013826-z3afnfteqo86pccd
Tags: 5.5.36-1
[ Otto Kekäläinen ]
* New upstream release.
* Updated Danish debconf translation (Closes: #739750).
* d/control: Added explicit Conflicts/Replaces for mysql-5.6 packages
  (Closes: #739841).
* d/control: Update for use of virtual-* packages for switching to/from
  MySQL alternatives.

[ James Page ]
* d/control: Drop Nicholas from Uploaders, MIA (Closes: #739360).
* d/control: Add libjemalloc-dev to BD's.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
--source include/have_innodb.inc
2
 
# Tests for various combinations of ROW_FORMAT and KEY_BLOCK_SIZE
3
 
# Related bugs; 
4
 
# Bug#54679: ALTER TABLE causes compressed row_format to revert to compact
5
 
# Bug#56628: ALTER TABLE .. KEY_BLOCK_SIZE=0 produces untrue warning or unnecessary error
6
 
# Bug#56632: ALTER TABLE implicitly changes ROW_FORMAT to COMPRESSED
7
 
# Rules for interpreting CREATE_OPTIONS
8
 
# 1) Create options on an ALTER are added to the options on the
9
 
#    previous CREATE or ALTER statements.
10
 
# 2) KEY_BLOCK_SIZE=0 is considered a unspecified value.
11
 
#    If the current ROW_FORMAT has explicitly been set to COMPRESSED,
12
 
#    InnoDB will use a default value of 8.  Otherwise KEY_BLOCK_SIZE
13
 
#    will not be used.
14
 
# 3) ROW_FORMAT=DEFAULT allows InnoDB to choose its own default, COMPACT.
15
 
# 4) ROW_FORMAT=DEFAULT and KEY_BLOCK_SIZE=0 can be used at any time to
16
 
#    unset or erase the values persisted in the MySQL dictionary and
17
 
#    by SHOW CTREATE TABLE.
18
 
# 5) When incompatible values for ROW_FORMAT and KEY_BLOCK_SIZE are
19
 
#    both explicitly given, the ROW_FORMAT is always used in non-strict
20
 
#    mode.
21
 
# 6) InnoDB will automatically convert a table to COMPRESSED only if a
22
 
#    valid non-zero KEY_BLOCK_SIZE has been given and ROW_FORMAT=DEFAULT
23
 
#    or has not been used on a previous CREATE TABLE or ALTER TABLE.
24
 
# 7) InnoDB strict mode is designed to prevent incompatible create
25
 
#    options from being used together.
26
 
# 8) The non-strict behavior is intended to permit you to import a
27
 
#    mysqldump file into a database that does not support compressed
28
 
#    tables, even if the source database contained compressed tables.
29
 
#    All invalid values and/or incompatible combinations of ROW_FORMAT
30
 
#    and KEY_BLOCK_SIZE are automatically corrected
31
 
#
32
 
# *** innodb_strict_mode=ON ***
33
 
# 1) Valid ROW_FORMATs are COMPRESSED, COMPACT, DEFAULT, DYNAMIC
34
 
#    & REDUNDANT. All others are rejected.
35
 
# 2) Valid KEY_BLOCK_SIZEs are 0,1,2,4,8,16.  All others are rejected.
36
 
# 3) KEY_BLOCK_SIZE=0 can be used to set it to 'unspecified'.
37
 
# 4) KEY_BLOCK_SIZE=1,2,4,8 & 16 are incompatible with COMPACT, DYNAMIC &
38
 
#    REDUNDANT.
39
 
# 5) KEY_BLOCK_SIZE=1,2,4,8 & 16 as well as ROW_FORMAT=COMPRESSED and
40
 
#    ROW_FORMAT=DYNAMIC are incompatible with innodb_file_format=Antelope
41
 
#    and innodb_file_per_table=OFF
42
 
# 6) KEY_BLOCK_SIZE on an ALTER must occur with ROW_FORMAT=COMPRESSED
43
 
#    or ROW_FORMAT=DEFAULT if the ROW_FORMAT was previously specified
44
 
#    as COMPACT, DYNAMIC or REDUNDANT.
45
 
# 7) KEY_BLOCK_SIZE on an ALTER can occur without a ROW_FORMAT if the
46
 
#    previous ROW_FORMAT was DEFAULT, COMPRESSED, or unspecified.
47
 
#
48
 
# *** innodb_strict_mode=OFF ***
49
 
# 1. Ignore a bad KEY_BLOCK_SIZE, defaulting it to 8.
50
 
# 2. Ignore a bad ROW_FORMAT, defaulting to COMPACT.
51
 
# 3. Ignore a valid KEY_BLOCK_SIZE when an incompatible but valid
52
 
#    ROW_FORMAT is specified.
53
 
# 4. If innodb_file_format=Antelope or innodb_file_per_table=OFF
54
 
#    it will ignore ROW_FORMAT=COMPRESSED or DYNAMIC and it will
55
 
#    ignore all non-zero KEY_BLOCK_SIZEs.
56
 
#
57
 
# See InnoDB documentation page "SQL Compression Syntax Warnings and Errors"
58
 
 
59
 
SET storage_engine=InnoDB;
60
 
 
61
 
--disable_query_log
62
 
# These values can change during the test
63
 
LET $innodb_file_format_orig=`select @@innodb_file_format`;
64
 
LET $innodb_file_per_table_orig=`select @@innodb_file_per_table`;
65
 
LET $innodb_strict_mode_orig=`select @@session.innodb_strict_mode`;
66
 
--enable_query_log
67
 
 
68
 
SET GLOBAL innodb_file_format=`Barracuda`;
69
 
SET GLOBAL innodb_file_per_table=ON;
70
 
 
71
 
# The first half of these tests are with strict mode ON.
72
 
SET SESSION innodb_strict_mode = ON;
73
 
 
74
 
--echo # Test 1) StrictMode=ON, CREATE and ALTER with each ROW_FORMAT & KEY_BLOCK_SIZE=0
75
 
--echo #         KEY_BLOCK_SIZE=0 means 'no KEY_BLOCK_SIZE is specified'
76
 
DROP TABLE IF EXISTS t1;
77
 
--echo #         'FIXED' is sent to InnoDB since it is used by MyISAM.
78
 
--echo #         But it is an invalid mode in InnoDB
79
 
--error ER_CANT_CREATE_TABLE
80
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=FIXED;
81
 
SHOW WARNINGS;
82
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=0;
83
 
SHOW WARNINGS;
84
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
85
 
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=0;
86
 
SHOW WARNINGS;
87
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
88
 
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=0;
89
 
SHOW WARNINGS;
90
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
91
 
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=0;
92
 
SHOW WARNINGS;
93
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
94
 
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
95
 
SHOW WARNINGS;
96
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
97
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
98
 
--error ER_CANT_CREATE_TABLE
99
 
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=0;
100
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
101
 
SHOW WARNINGS;
102
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
103
 
 
104
 
 
105
 
 
106
 
--echo # Test 2) StrictMode=ON, CREATE with each ROW_FORMAT & a valid non-zero KEY_BLOCK_SIZE
107
 
--echo #         KEY_BLOCK_SIZE is incompatible with COMPACT, REDUNDANT, & DYNAMIC
108
 
DROP TABLE IF EXISTS t1;
109
 
--error ER_CANT_CREATE_TABLE
110
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
111
 
SHOW WARNINGS;
112
 
--error ER_CANT_CREATE_TABLE
113
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=2;
114
 
SHOW WARNINGS;
115
 
--error ER_CANT_CREATE_TABLE
116
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4;
117
 
SHOW WARNINGS;
118
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
119
 
SHOW WARNINGS;
120
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
121
 
ALTER TABLE t1 ADD COLUMN f1 INT;
122
 
SHOW WARNINGS;
123
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
124
 
DROP TABLE IF EXISTS t1;
125
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16;
126
 
SHOW WARNINGS;
127
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
128
 
ALTER TABLE t1 ADD COLUMN f1 INT;
129
 
SHOW WARNINGS;
130
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
131
 
 
132
 
 
133
 
--echo # Test 3) StrictMode=ON, ALTER with each ROW_FORMAT & a valid non-zero KEY_BLOCK_SIZE
134
 
DROP TABLE IF EXISTS t1;
135
 
CREATE TABLE t1 ( i INT );
136
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
137
 
--error ER_CANT_CREATE_TABLE
138
 
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=1;
139
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
140
 
SHOW WARNINGS;
141
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
142
 
--error ER_CANT_CREATE_TABLE
143
 
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=2;
144
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
145
 
SHOW WARNINGS;
146
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
147
 
--error ER_CANT_CREATE_TABLE
148
 
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4;
149
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
150
 
SHOW WARNINGS;
151
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
152
 
--error ER_CANT_CREATE_TABLE
153
 
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=8;
154
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
155
 
SHOW WARNINGS;
156
 
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16;
157
 
SHOW WARNINGS;
158
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
159
 
ALTER TABLE t1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
160
 
SHOW WARNINGS;
161
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
162
 
 
163
 
 
164
 
--echo # Test 4) StrictMode=ON, CREATE with ROW_FORMAT=COMPACT, ALTER with a valid non-zero KEY_BLOCK_SIZE
165
 
DROP TABLE IF EXISTS t1;
166
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
167
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
168
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
169
 
--error ER_CANT_CREATE_TABLE
170
 
ALTER TABLE t1 KEY_BLOCK_SIZE=2;
171
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
172
 
SHOW WARNINGS;
173
 
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
174
 
SHOW WARNINGS;
175
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
176
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
177
 
--error ER_CANT_CREATE_TABLE
178
 
ALTER TABLE t1 KEY_BLOCK_SIZE=4;
179
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
180
 
SHOW WARNINGS;
181
 
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
182
 
SHOW WARNINGS;
183
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
184
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
185
 
--error ER_CANT_CREATE_TABLE
186
 
ALTER TABLE t1 KEY_BLOCK_SIZE=8;
187
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
188
 
SHOW WARNINGS;
189
 
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
190
 
SHOW WARNINGS;
191
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
192
 
ALTER TABLE t1 KEY_BLOCK_SIZE=16;
193
 
SHOW WARNINGS;
194
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
195
 
DROP TABLE IF EXISTS t1;
196
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
197
 
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=1;
198
 
SHOW WARNINGS;
199
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
200
 
 
201
 
--echo # Test 5) StrictMode=ON, CREATE with a valid KEY_BLOCK_SIZE
202
 
--echo #         ALTER with each ROW_FORMAT
203
 
DROP TABLE IF EXISTS t1;
204
 
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=2;
205
 
SHOW CREATE TABLE t1;
206
 
ALTER TABLE t1 ADD COLUMN f1 INT;
207
 
SHOW CREATE TABLE t1;
208
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
209
 
--error ER_CANT_CREATE_TABLE
210
 
ALTER TABLE t1 ROW_FORMAT=COMPACT;
211
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
212
 
SHOW WARNINGS;
213
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
214
 
--error ER_CANT_CREATE_TABLE
215
 
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
216
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
217
 
SHOW WARNINGS;
218
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
219
 
--error ER_CANT_CREATE_TABLE
220
 
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
221
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
222
 
SHOW WARNINGS;
223
 
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
224
 
SHOW WARNINGS;
225
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
226
 
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
227
 
SHOW WARNINGS;
228
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
229
 
ALTER TABLE t1 ROW_FORMAT=COMPACT;
230
 
SHOW WARNINGS;
231
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
232
 
 
233
 
--echo # Test 6) StrictMode=ON, CREATE with an invalid KEY_BLOCK_SIZE.
234
 
DROP TABLE IF EXISTS t1;
235
 
--error ER_CANT_CREATE_TABLE
236
 
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=9;
237
 
SHOW WARNINGS;
238
 
 
239
 
--echo # Test 7) StrictMode=ON, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and
240
 
--echo #         and a valid non-zero KEY_BLOCK_SIZE are rejected with Antelope
241
 
--echo #         and that they can be set to default values during strict mode.
242
 
SET GLOBAL innodb_file_format=Antelope;
243
 
DROP TABLE IF EXISTS t1;
244
 
--error ER_CANT_CREATE_TABLE
245
 
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=4;
246
 
SHOW WARNINGS;
247
 
--error ER_CANT_CREATE_TABLE
248
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED;
249
 
SHOW WARNINGS;
250
 
--error ER_CANT_CREATE_TABLE
251
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
252
 
SHOW WARNINGS;
253
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT;
254
 
SHOW WARNINGS;
255
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
256
 
DROP TABLE IF EXISTS t1;
257
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
258
 
SHOW WARNINGS;
259
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
260
 
DROP TABLE IF EXISTS t1;
261
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT;
262
 
SHOW WARNINGS;
263
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
264
 
--error ER_CANT_CREATE_TABLE
265
 
ALTER TABLE t1 KEY_BLOCK_SIZE=8;
266
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
267
 
SHOW WARNINGS;
268
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
269
 
--error ER_CANT_CREATE_TABLE
270
 
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
271
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
272
 
SHOW WARNINGS;
273
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
274
 
--error ER_CANT_CREATE_TABLE
275
 
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
276
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
277
 
SHOW WARNINGS;
278
 
SET GLOBAL innodb_file_format=Barracuda;
279
 
DROP TABLE IF EXISTS t1;
280
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
281
 
SET GLOBAL innodb_file_format=Antelope;
282
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
283
 
--error ER_CANT_CREATE_TABLE
284
 
ALTER TABLE t1 ADD COLUMN f1 INT;
285
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
286
 
SHOW WARNINGS;
287
 
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
288
 
SHOW WARNINGS;
289
 
ALTER TABLE t1 ADD COLUMN f2 INT;
290
 
SHOW WARNINGS;
291
 
SET GLOBAL innodb_file_format=Barracuda;
292
 
 
293
 
--echo # Test 8) StrictMode=ON, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and
294
 
--echo #         and a valid non-zero KEY_BLOCK_SIZE are rejected with
295
 
--echo #         innodb_file_per_table=OFF and that they can be set to default
296
 
--echo #         values during strict mode.
297
 
SET GLOBAL innodb_file_per_table=OFF;
298
 
DROP TABLE IF EXISTS t1;
299
 
--error ER_CANT_CREATE_TABLE
300
 
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=16;
301
 
SHOW WARNINGS;
302
 
--error ER_CANT_CREATE_TABLE
303
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED;
304
 
SHOW WARNINGS;
305
 
--error ER_CANT_CREATE_TABLE
306
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
307
 
SHOW WARNINGS;
308
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT;
309
 
SHOW WARNINGS;
310
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
311
 
DROP TABLE IF EXISTS t1;
312
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
313
 
SHOW WARNINGS;
314
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
315
 
DROP TABLE IF EXISTS t1;
316
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT;
317
 
SHOW WARNINGS;
318
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
319
 
--error ER_CANT_CREATE_TABLE
320
 
ALTER TABLE t1 KEY_BLOCK_SIZE=1;
321
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
322
 
SHOW WARNINGS;
323
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
324
 
--error ER_CANT_CREATE_TABLE
325
 
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
326
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
327
 
SHOW WARNINGS;
328
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
329
 
--error ER_CANT_CREATE_TABLE
330
 
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
331
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
332
 
SHOW WARNINGS;
333
 
ALTER TABLE t1 ROW_FORMAT=COMPACT;
334
 
SHOW WARNINGS;
335
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
336
 
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
337
 
SHOW WARNINGS;
338
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
339
 
ALTER TABLE t1 ROW_FORMAT=DEFAULT;
340
 
SHOW WARNINGS;
341
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
342
 
SET GLOBAL innodb_file_per_table=ON;
343
 
DROP TABLE IF EXISTS t1;
344
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
345
 
SET GLOBAL innodb_file_per_table=OFF;
346
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
347
 
--error ER_CANT_CREATE_TABLE
348
 
ALTER TABLE t1 ADD COLUMN f1 INT;
349
 
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
350
 
SHOW WARNINGS;
351
 
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
352
 
SHOW WARNINGS;
353
 
ALTER TABLE t1 ADD COLUMN f2 INT;
354
 
SHOW WARNINGS;
355
 
SET GLOBAL innodb_file_per_table=ON;
356
 
 
357
 
--echo ##################################################
358
 
SET SESSION innodb_strict_mode = OFF;
359
 
 
360
 
--echo # Test 9) StrictMode=OFF, CREATE and ALTER with each ROW_FORMAT & KEY_BLOCK_SIZE=0
361
 
--echo #         KEY_BLOCK_SIZE=0 means 'no KEY_BLOCK_SIZE is specified'
362
 
--echo #         'FIXED' is sent to InnoDB since it is used by MyISAM.
363
 
--echo #         It is an invalid mode in InnoDB, use COMPACT
364
 
DROP TABLE IF EXISTS t1;
365
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=FIXED;
366
 
SHOW WARNINGS;
367
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
368
 
DROP TABLE IF EXISTS t1;
369
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=0;
370
 
SHOW WARNINGS;
371
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
372
 
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=0;
373
 
SHOW WARNINGS;
374
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
375
 
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=0;
376
 
SHOW WARNINGS;
377
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
378
 
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=0;
379
 
SHOW WARNINGS;
380
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
381
 
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
382
 
SHOW WARNINGS;
383
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
384
 
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=0;
385
 
SHOW WARNINGS;
386
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
387
 
 
388
 
--echo # Test 10) StrictMode=OFF, CREATE with each ROW_FORMAT & a valid KEY_BLOCK_SIZE
389
 
--echo #          KEY_BLOCK_SIZE is ignored with COMPACT, REDUNDANT, & DYNAMIC
390
 
DROP TABLE IF EXISTS t1;
391
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=1;
392
 
SHOW WARNINGS;
393
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
394
 
DROP TABLE IF EXISTS t1;
395
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=2;
396
 
SHOW WARNINGS;
397
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
398
 
DROP TABLE IF EXISTS t1;
399
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4;
400
 
SHOW WARNINGS;
401
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
402
 
DROP TABLE IF EXISTS t1;
403
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
404
 
SHOW WARNINGS;
405
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
406
 
ALTER TABLE t1 ADD COLUMN f1 INT;
407
 
SHOW WARNINGS;
408
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
409
 
DROP TABLE IF EXISTS t1;
410
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16;
411
 
SHOW WARNINGS;
412
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
413
 
ALTER TABLE t1 ADD COLUMN f1 INT;
414
 
SHOW WARNINGS;
415
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
416
 
 
417
 
 
418
 
--echo # Test 11) StrictMode=OFF, ALTER with each ROW_FORMAT & a valid KEY_BLOCK_SIZE
419
 
DROP TABLE IF EXISTS t1;
420
 
CREATE TABLE t1 ( i INT );
421
 
ALTER TABLE t1 ROW_FORMAT=FIXED KEY_BLOCK_SIZE=1;
422
 
SHOW WARNINGS;
423
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
424
 
DROP TABLE IF EXISTS t1;
425
 
CREATE TABLE t1 ( i INT );
426
 
ALTER TABLE t1 ROW_FORMAT=COMPACT KEY_BLOCK_SIZE=2;
427
 
SHOW WARNINGS;
428
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
429
 
DROP TABLE IF EXISTS t1;
430
 
CREATE TABLE t1 ( i INT );
431
 
ALTER TABLE t1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=4;
432
 
SHOW WARNINGS;
433
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
434
 
DROP TABLE IF EXISTS t1;
435
 
CREATE TABLE t1 ( i INT );
436
 
ALTER TABLE t1 ROW_FORMAT=REDUNDANT KEY_BLOCK_SIZE=8;
437
 
SHOW WARNINGS;
438
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
439
 
DROP TABLE IF EXISTS t1;
440
 
CREATE TABLE t1 ( i INT );
441
 
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=16;
442
 
SHOW WARNINGS;
443
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
444
 
ALTER TABLE t1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
445
 
SHOW WARNINGS;
446
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
447
 
 
448
 
 
449
 
--echo # Test 12) StrictMode=OFF, CREATE with ROW_FORMAT=COMPACT, ALTER with a valid KEY_BLOCK_SIZE
450
 
DROP TABLE IF EXISTS t1;
451
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
452
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
453
 
ALTER TABLE t1 KEY_BLOCK_SIZE=2;
454
 
SHOW WARNINGS;
455
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
456
 
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
457
 
SHOW WARNINGS;
458
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
459
 
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
460
 
SHOW WARNINGS;
461
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
462
 
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
463
 
SHOW WARNINGS;
464
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
465
 
ALTER TABLE t1 KEY_BLOCK_SIZE=4;
466
 
SHOW WARNINGS;
467
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
468
 
DROP TABLE IF EXISTS t1;
469
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPACT;
470
 
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=8;
471
 
SHOW WARNINGS;
472
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
473
 
 
474
 
--echo # Test 13) StrictMode=OFF, CREATE with a valid KEY_BLOCK_SIZE
475
 
--echo #          ALTER with each ROW_FORMAT
476
 
DROP TABLE IF EXISTS t1;
477
 
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=16;
478
 
SHOW WARNINGS;
479
 
SHOW CREATE TABLE t1;
480
 
ALTER TABLE t1 ADD COLUMN f1 INT;
481
 
SHOW WARNINGS;
482
 
SHOW CREATE TABLE t1;
483
 
ALTER TABLE t1 ROW_FORMAT=COMPACT;
484
 
SHOW WARNINGS;
485
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
486
 
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
487
 
SHOW WARNINGS;
488
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
489
 
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
490
 
SHOW WARNINGS;
491
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
492
 
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
493
 
SHOW WARNINGS;
494
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
495
 
ALTER TABLE t1 ROW_FORMAT=DEFAULT KEY_BLOCK_SIZE=0;
496
 
SHOW WARNINGS;
497
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
498
 
ALTER TABLE t1 ROW_FORMAT=COMPACT;
499
 
SHOW WARNINGS;
500
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
501
 
 
502
 
--echo # Test 14) StrictMode=OFF, CREATE with an invalid KEY_BLOCK_SIZE, it defaults to 8
503
 
DROP TABLE IF EXISTS t1;
504
 
CREATE TABLE t1 ( i INT ) KEY_BLOCK_SIZE=15;
505
 
SHOW WARNINGS;
506
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
507
 
 
508
 
--echo # Test 15) StrictMode=OFF, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and a
509
 
--echo            valid KEY_BLOCK_SIZE are remembered but not used when ROW_FORMAT
510
 
--echo            is reverted to Antelope and then used again when ROW_FORMAT=Barracuda.
511
 
DROP TABLE IF EXISTS t1;
512
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
513
 
SHOW WARNINGS;
514
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
515
 
SET GLOBAL innodb_file_format=Antelope;
516
 
ALTER TABLE t1 ADD COLUMN f1 INT;
517
 
SHOW WARNINGS;
518
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
519
 
SET GLOBAL innodb_file_format=Barracuda;
520
 
ALTER TABLE t1 ADD COLUMN f2 INT;
521
 
SHOW WARNINGS;
522
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
523
 
DROP TABLE IF EXISTS t1;
524
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
525
 
SHOW WARNINGS;
526
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
527
 
SET GLOBAL innodb_file_format=Antelope;
528
 
ALTER TABLE t1 ADD COLUMN f1 INT;
529
 
SHOW WARNINGS;
530
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
531
 
SET GLOBAL innodb_file_format=Barracuda;
532
 
ALTER TABLE t1 ADD COLUMN f2 INT;
533
 
SHOW WARNINGS;
534
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
535
 
 
536
 
--echo # Test 16) StrictMode=OFF, Make sure ROW_FORMAT= COMPRESSED & DYNAMIC and a
537
 
--echo            valid KEY_BLOCK_SIZE are remembered but not used when innodb_file_per_table=OFF
538
 
--echo            and then used again when innodb_file_per_table=ON.
539
 
DROP TABLE IF EXISTS t1;
540
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2;
541
 
SHOW WARNINGS;
542
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
543
 
SET GLOBAL innodb_file_per_table=OFF;
544
 
ALTER TABLE t1 ADD COLUMN f1 INT;
545
 
SHOW WARNINGS;
546
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
547
 
SET GLOBAL innodb_file_per_table=ON;
548
 
ALTER TABLE t1 ADD COLUMN f2 INT;
549
 
SHOW WARNINGS;
550
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
551
 
DROP TABLE IF EXISTS t1;
552
 
CREATE TABLE t1 ( i INT ) ROW_FORMAT=DYNAMIC;
553
 
SHOW WARNINGS;
554
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
555
 
SET GLOBAL innodb_file_per_table=OFF;
556
 
ALTER TABLE t1 ADD COLUMN f1 INT;
557
 
SHOW WARNINGS;
558
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
559
 
SET GLOBAL innodb_file_per_table=ON;
560
 
ALTER TABLE t1 ADD COLUMN f2 INT;
561
 
SHOW WARNINGS;
562
 
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables WHERE TABLE_NAME = 't1';
563
 
 
564
 
 
565
 
--echo # Cleanup
566
 
DROP TABLE IF EXISTS t1;
567
 
 
568
 
--disable_query_log
569
 
EVAL SET GLOBAL innodb_file_format=$innodb_file_format_orig;
570
 
EVAL SET GLOBAL innodb_file_per_table=$innodb_file_per_table_orig;
571
 
EVAL SET SESSION innodb_strict_mode=$innodb_strict_mode_orig;
572
 
--enable_query_log
573