~vkolesnikov/pbxt/pbxt-07-diskfull

« back to all changes in this revision

Viewing changes to pbxt/mysql-test-update/mysql-test/r/partition_02myisam.result

  • Committer: paul-mccullagh
  • Date: 2006-10-23 09:14:04 UTC
  • Revision ID: paul-mccullagh-918861e03d351978a9541168a96e58cc826734ee
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
SET SESSION storage_engine='MYISAM';
 
2
SET @max_row = 200;
 
3
SET AUTOCOMMIT= 1;
 
4
 
 
5
#------------------------------------------------------------------------
 
6
# There are several testcases disabled because ouf the open bugs 
 
7
# #15407 , #15408 , #15890 , #15961 , #13447 , #15966 , #15968, #16370
 
8
#------------------------------------------------------------------------
 
9
 
 
10
#------------------------------------------------------------------------
 
11
#  0. Setting of auxiliary variables + Creation of an auxiliary table
 
12
#     needed in all testcases
 
13
#------------------------------------------------------------------------
 
14
DROP TABLE IF EXISTS t0_template;
 
15
CREATE TABLE t0_template ( f1 INTEGER, f2 char(20), PRIMARY KEY(f1))
 
16
ENGINE = MEMORY;
 
17
#     Logging of <max_row> INSERTs into t0_template suppressed
 
18
 
 
19
#------------------------------------------------------------------------
 
20
#  1. Some syntax checks
 
21
#------------------------------------------------------------------------
 
22
#  1.1 Subpartioned table without subpartitioning rule must be rejected
 
23
DROP TABLE IF EXISTS t1;
 
24
#  FIXME Implement testcases, where it is checked that all create and
 
25
#  alter table statements
 
26
#  - with missing mandatory parameters are rejected
 
27
#  - with optional parameters are accepted
 
28
#  - with wrong combinations of optional parameters are rejected
 
29
#  - ............
 
30
 
 
31
#------------------------------------------------------------------------
 
32
#  2. Checks where the engine is assigned on all supported (CREATE TABLE
 
33
#     statement) positions + basic operations on the tables
 
34
#        Storage engine mixups are currently (2005-12-23) not supported
 
35
#------------------------------------------------------------------------
 
36
DROP TABLE IF EXISTS t1;
 
37
# 2.1 non partitioned table (for comparison)
 
38
CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = 'MYISAM';
 
39
SHOW CREATE TABLE t1;
 
40
Table   Create Table
 
41
t1      CREATE TABLE `t1` (
 
42
  `f1` int(11) DEFAULT NULL,
 
43
  `f2` char(20) DEFAULT NULL
 
44
) ENGINE=MyISAM DEFAULT CHARSET=latin1
 
45
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
46
my_value
 
47
1
 
48
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
49
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
50
AS my_value FROM t1;
 
51
my_value
 
52
1
 
53
UPDATE t1 SET f1 = f1 + 200
 
54
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
55
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
56
AS my_value FROM t1;
 
57
my_value
 
58
1
 
59
DELETE FROM t1
 
60
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
61
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
62
AS my_value FROM t1;
 
63
my_value
 
64
1
 
65
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
66
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
67
my_value
 
68
1
 
69
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
70
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
71
my_value
 
72
1
 
73
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
74
     WHERE  f1 = 0 AND f2 = '#######';
 
75
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
76
my_value
 
77
1
 
78
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
79
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
80
my_value
 
81
1
 
82
TRUNCATE t1;
 
83
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
84
my_value
 
85
1
 
86
DROP TABLE t1;
 
87
# 2.2 Assignment of storage engine just after column list only
 
88
CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = 'MYISAM'
 
89
PARTITION BY HASH(f1) PARTITIONS 2;
 
90
SHOW CREATE TABLE t1;
 
91
Table   Create Table
 
92
t1      CREATE TABLE `t1` (
 
93
  `f1` int(11) DEFAULT NULL,
 
94
  `f2` char(20) DEFAULT NULL
 
95
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) PARTITIONS 2  */
 
96
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
97
my_value
 
98
1
 
99
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
100
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
101
AS my_value FROM t1;
 
102
my_value
 
103
1
 
104
UPDATE t1 SET f1 = f1 + 200
 
105
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
106
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
107
AS my_value FROM t1;
 
108
my_value
 
109
1
 
110
DELETE FROM t1
 
111
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
112
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
113
AS my_value FROM t1;
 
114
my_value
 
115
1
 
116
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
117
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
118
my_value
 
119
1
 
120
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
121
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
122
my_value
 
123
1
 
124
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
125
     WHERE  f1 = 0 AND f2 = '#######';
 
126
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
127
my_value
 
128
1
 
129
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
130
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
131
my_value
 
132
1
 
133
TRUNCATE t1;
 
134
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
135
my_value
 
136
1
 
137
DROP TABLE t1;
 
138
# 2.3 Assignment of storage engine just after partition or subpartition
 
139
#     name only
 
140
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
141
PARTITION BY HASH(f1)
 
142
( PARTITION part1 STORAGE ENGINE = 'MYISAM',
 
143
PARTITION part2 STORAGE ENGINE = 'MYISAM'
 
144
);
 
145
SHOW CREATE TABLE t1;
 
146
Table   Create Table
 
147
t1      CREATE TABLE `t1` (
 
148
  `f1` int(11) DEFAULT NULL,
 
149
  `f2` char(20) DEFAULT NULL
 
150
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */
 
151
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
152
my_value
 
153
1
 
154
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
155
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
156
AS my_value FROM t1;
 
157
my_value
 
158
1
 
159
UPDATE t1 SET f1 = f1 + 200
 
160
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
161
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
162
AS my_value FROM t1;
 
163
my_value
 
164
1
 
165
DELETE FROM t1
 
166
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
167
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
168
AS my_value FROM t1;
 
169
my_value
 
170
1
 
171
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
172
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
173
my_value
 
174
1
 
175
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
176
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
177
my_value
 
178
1
 
179
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
180
     WHERE  f1 = 0 AND f2 = '#######';
 
181
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
182
my_value
 
183
1
 
184
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
185
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
186
my_value
 
187
1
 
188
TRUNCATE t1;
 
189
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
190
my_value
 
191
1
 
192
DROP TABLE t1;
 
193
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
194
PARTITION BY RANGE(f1)
 
195
SUBPARTITION BY HASH(f1)
 
196
( PARTITION part1 VALUES LESS THAN (100)
 
197
(SUBPARTITION subpart11 STORAGE ENGINE = 'MYISAM',
 
198
SUBPARTITION subpart12 STORAGE ENGINE = 'MYISAM'),
 
199
PARTITION part2 VALUES LESS THAN (2147483647)
 
200
(SUBPARTITION subpart21 STORAGE ENGINE = 'MYISAM',
 
201
SUBPARTITION subpart22 STORAGE ENGINE = 'MYISAM')
 
202
);
 
203
SHOW CREATE TABLE t1;
 
204
Table   Create Table
 
205
t1      CREATE TABLE `t1` (
 
206
  `f1` int(11) DEFAULT NULL,
 
207
  `f2` char(20) DEFAULT NULL
 
208
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */
 
209
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
210
my_value
 
211
1
 
212
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
213
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
214
AS my_value FROM t1;
 
215
my_value
 
216
1
 
217
UPDATE t1 SET f1 = f1 + 200
 
218
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
219
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
220
AS my_value FROM t1;
 
221
my_value
 
222
1
 
223
DELETE FROM t1
 
224
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
225
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
226
AS my_value FROM t1;
 
227
my_value
 
228
1
 
229
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
230
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
231
my_value
 
232
1
 
233
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
234
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
235
my_value
 
236
1
 
237
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
238
     WHERE  f1 = 0 AND f2 = '#######';
 
239
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
240
my_value
 
241
1
 
242
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
243
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
244
my_value
 
245
1
 
246
TRUNCATE t1;
 
247
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
248
my_value
 
249
1
 
250
DROP TABLE t1;
 
251
# 2.4 Some but not all named partitions or subpartitions get a storage
 
252
#     engine assigned
 
253
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
254
PARTITION BY HASH(f1)
 
255
( PARTITION part1 STORAGE ENGINE = 'MYISAM',
 
256
PARTITION part2
 
257
);
 
258
SHOW CREATE TABLE t1;
 
259
Table   Create Table
 
260
t1      CREATE TABLE `t1` (
 
261
  `f1` int(11) DEFAULT NULL,
 
262
  `f2` char(20) DEFAULT NULL
 
263
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */
 
264
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
265
my_value
 
266
1
 
267
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
268
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
269
AS my_value FROM t1;
 
270
my_value
 
271
1
 
272
UPDATE t1 SET f1 = f1 + 200
 
273
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
274
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
275
AS my_value FROM t1;
 
276
my_value
 
277
1
 
278
DELETE FROM t1
 
279
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
280
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
281
AS my_value FROM t1;
 
282
my_value
 
283
1
 
284
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
285
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
286
my_value
 
287
1
 
288
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
289
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
290
my_value
 
291
1
 
292
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
293
     WHERE  f1 = 0 AND f2 = '#######';
 
294
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
295
my_value
 
296
1
 
297
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
298
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
299
my_value
 
300
1
 
301
TRUNCATE t1;
 
302
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
303
my_value
 
304
1
 
305
DROP TABLE t1;
 
306
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
307
PARTITION BY HASH(f1)
 
308
( PARTITION part1                         ,
 
309
PARTITION part2 STORAGE ENGINE = 'MYISAM'
 
310
);
 
311
SHOW CREATE TABLE t1;
 
312
Table   Create Table
 
313
t1      CREATE TABLE `t1` (
 
314
  `f1` int(11) DEFAULT NULL,
 
315
  `f2` char(20) DEFAULT NULL
 
316
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */
 
317
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
318
my_value
 
319
1
 
320
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
321
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
322
AS my_value FROM t1;
 
323
my_value
 
324
1
 
325
UPDATE t1 SET f1 = f1 + 200
 
326
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
327
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
328
AS my_value FROM t1;
 
329
my_value
 
330
1
 
331
DELETE FROM t1
 
332
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
333
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
334
AS my_value FROM t1;
 
335
my_value
 
336
1
 
337
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
338
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
339
my_value
 
340
1
 
341
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
342
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
343
my_value
 
344
1
 
345
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
346
     WHERE  f1 = 0 AND f2 = '#######';
 
347
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
348
my_value
 
349
1
 
350
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
351
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
352
my_value
 
353
1
 
354
TRUNCATE t1;
 
355
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
356
my_value
 
357
1
 
358
DROP TABLE t1;
 
359
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
360
PARTITION BY RANGE(f1)
 
361
SUBPARTITION BY HASH(f1)
 
362
( PARTITION part1 VALUES LESS THAN (100)
 
363
(SUBPARTITION subpart11,
 
364
SUBPARTITION subpart12 STORAGE ENGINE = 'MYISAM'),
 
365
PARTITION part2 VALUES LESS THAN (2147483647)
 
366
(SUBPARTITION subpart21 STORAGE ENGINE = 'MYISAM',
 
367
SUBPARTITION subpart22 STORAGE ENGINE = 'MYISAM')
 
368
);
 
369
SHOW CREATE TABLE t1;
 
370
Table   Create Table
 
371
t1      CREATE TABLE `t1` (
 
372
  `f1` int(11) DEFAULT NULL,
 
373
  `f2` char(20) DEFAULT NULL
 
374
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */
 
375
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
376
my_value
 
377
1
 
378
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
379
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
380
AS my_value FROM t1;
 
381
my_value
 
382
1
 
383
UPDATE t1 SET f1 = f1 + 200
 
384
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
385
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
386
AS my_value FROM t1;
 
387
my_value
 
388
1
 
389
DELETE FROM t1
 
390
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
391
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
392
AS my_value FROM t1;
 
393
my_value
 
394
1
 
395
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
396
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
397
my_value
 
398
1
 
399
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
400
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
401
my_value
 
402
1
 
403
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
404
     WHERE  f1 = 0 AND f2 = '#######';
 
405
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
406
my_value
 
407
1
 
408
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
409
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
410
my_value
 
411
1
 
412
TRUNCATE t1;
 
413
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
414
my_value
 
415
1
 
416
DROP TABLE t1;
 
417
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
418
PARTITION BY RANGE(f1)
 
419
SUBPARTITION BY HASH(f1)
 
420
( PARTITION part1 VALUES LESS THAN (100)
 
421
(SUBPARTITION subpart11 STORAGE ENGINE = 'MYISAM',
 
422
SUBPARTITION subpart12 STORAGE ENGINE = 'MYISAM'),
 
423
PARTITION part2 VALUES LESS THAN (2147483647)
 
424
(SUBPARTITION subpart21,
 
425
SUBPARTITION subpart22 )
 
426
);
 
427
SHOW CREATE TABLE t1;
 
428
Table   Create Table
 
429
t1      CREATE TABLE `t1` (
 
430
  `f1` int(11) DEFAULT NULL,
 
431
  `f2` char(20) DEFAULT NULL
 
432
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */
 
433
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
434
my_value
 
435
1
 
436
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
437
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
438
AS my_value FROM t1;
 
439
my_value
 
440
1
 
441
UPDATE t1 SET f1 = f1 + 200
 
442
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
443
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
444
AS my_value FROM t1;
 
445
my_value
 
446
1
 
447
DELETE FROM t1
 
448
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
449
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
450
AS my_value FROM t1;
 
451
my_value
 
452
1
 
453
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
454
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
455
my_value
 
456
1
 
457
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
458
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
459
my_value
 
460
1
 
461
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
462
     WHERE  f1 = 0 AND f2 = '#######';
 
463
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
464
my_value
 
465
1
 
466
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
467
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
468
my_value
 
469
1
 
470
TRUNCATE t1;
 
471
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
472
my_value
 
473
1
 
474
DROP TABLE t1;
 
475
# 2.5 Storage engine assignment after partition name + after name of
 
476
#     subpartitions belonging to another partition
 
477
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
478
PARTITION BY RANGE(f1)
 
479
SUBPARTITION BY HASH(f1)
 
480
( PARTITION part1 VALUES LESS THAN (100) ENGINE = 'MYISAM'
 
481
(SUBPARTITION subpart11,
 
482
SUBPARTITION subpart12),
 
483
PARTITION part2 VALUES LESS THAN (2147483647)
 
484
(SUBPARTITION subpart21 STORAGE ENGINE = 'MYISAM',
 
485
SUBPARTITION subpart22 STORAGE ENGINE = 'MYISAM')
 
486
);
 
487
SHOW CREATE TABLE t1;
 
488
Table   Create Table
 
489
t1      CREATE TABLE `t1` (
 
490
  `f1` int(11) DEFAULT NULL,
 
491
  `f2` char(20) DEFAULT NULL
 
492
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */
 
493
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
494
my_value
 
495
1
 
496
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
497
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
498
AS my_value FROM t1;
 
499
my_value
 
500
1
 
501
UPDATE t1 SET f1 = f1 + 200
 
502
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
503
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
504
AS my_value FROM t1;
 
505
my_value
 
506
1
 
507
DELETE FROM t1
 
508
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
509
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
510
AS my_value FROM t1;
 
511
my_value
 
512
1
 
513
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
514
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
515
my_value
 
516
1
 
517
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
518
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
519
my_value
 
520
1
 
521
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
522
     WHERE  f1 = 0 AND f2 = '#######';
 
523
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
524
my_value
 
525
1
 
526
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
527
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
528
my_value
 
529
1
 
530
TRUNCATE t1;
 
531
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
532
my_value
 
533
1
 
534
DROP TABLE t1;
 
535
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
536
PARTITION BY RANGE(f1)
 
537
SUBPARTITION BY HASH(f1)
 
538
( PARTITION part1 VALUES LESS THAN (100)
 
539
(SUBPARTITION subpart11 STORAGE ENGINE = 'MYISAM',
 
540
SUBPARTITION subpart12 STORAGE ENGINE = 'MYISAM'),
 
541
PARTITION part2 VALUES LESS THAN (2147483647) ENGINE = 'MYISAM'
 
542
(SUBPARTITION subpart21,
 
543
SUBPARTITION subpart22)
 
544
);
 
545
SHOW CREATE TABLE t1;
 
546
Table   Create Table
 
547
t1      CREATE TABLE `t1` (
 
548
  `f1` int(11) DEFAULT NULL,
 
549
  `f2` char(20) DEFAULT NULL
 
550
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */
 
551
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
552
my_value
 
553
1
 
554
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
555
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
556
AS my_value FROM t1;
 
557
my_value
 
558
1
 
559
UPDATE t1 SET f1 = f1 + 200
 
560
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
561
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
562
AS my_value FROM t1;
 
563
my_value
 
564
1
 
565
DELETE FROM t1
 
566
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
567
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
568
AS my_value FROM t1;
 
569
my_value
 
570
1
 
571
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
572
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
573
my_value
 
574
1
 
575
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
576
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
577
my_value
 
578
1
 
579
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
580
     WHERE  f1 = 0 AND f2 = '#######';
 
581
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
582
my_value
 
583
1
 
584
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
585
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
586
my_value
 
587
1
 
588
TRUNCATE t1;
 
589
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
590
my_value
 
591
1
 
592
DROP TABLE t1;
 
593
# 2.6 Precedence of storage engine assignments
 
594
# 2.6.1 Storage engine assignment after column list + after partition
 
595
#       or subpartition name
 
596
CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = 'MYISAM'
 
597
PARTITION BY HASH(f1)
 
598
( PARTITION part1 STORAGE ENGINE = 'MYISAM',
 
599
PARTITION part2 STORAGE ENGINE = 'MYISAM'
 
600
);
 
601
SHOW CREATE TABLE t1;
 
602
Table   Create Table
 
603
t1      CREATE TABLE `t1` (
 
604
  `f1` int(11) DEFAULT NULL,
 
605
  `f2` char(20) DEFAULT NULL
 
606
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */
 
607
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
608
my_value
 
609
1
 
610
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
611
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
612
AS my_value FROM t1;
 
613
my_value
 
614
1
 
615
UPDATE t1 SET f1 = f1 + 200
 
616
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
617
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
618
AS my_value FROM t1;
 
619
my_value
 
620
1
 
621
DELETE FROM t1
 
622
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
623
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
624
AS my_value FROM t1;
 
625
my_value
 
626
1
 
627
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
628
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
629
my_value
 
630
1
 
631
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
632
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
633
my_value
 
634
1
 
635
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
636
     WHERE  f1 = 0 AND f2 = '#######';
 
637
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
638
my_value
 
639
1
 
640
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
641
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
642
my_value
 
643
1
 
644
TRUNCATE t1;
 
645
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
646
my_value
 
647
1
 
648
DROP TABLE t1;
 
649
CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = 'MYISAM'
 
650
PARTITION BY RANGE(f1)
 
651
SUBPARTITION BY HASH(f1)
 
652
( PARTITION part1 VALUES LESS THAN (100)
 
653
(SUBPARTITION subpart11 STORAGE ENGINE = 'MYISAM',
 
654
SUBPARTITION subpart12 STORAGE ENGINE = 'MYISAM'),
 
655
PARTITION part2 VALUES LESS THAN (2147483647)
 
656
(SUBPARTITION subpart21 STORAGE ENGINE = 'MYISAM',
 
657
SUBPARTITION subpart22 STORAGE ENGINE = 'MYISAM')
 
658
);
 
659
SHOW CREATE TABLE t1;
 
660
Table   Create Table
 
661
t1      CREATE TABLE `t1` (
 
662
  `f1` int(11) DEFAULT NULL,
 
663
  `f2` char(20) DEFAULT NULL
 
664
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */
 
665
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
666
my_value
 
667
1
 
668
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
669
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
670
AS my_value FROM t1;
 
671
my_value
 
672
1
 
673
UPDATE t1 SET f1 = f1 + 200
 
674
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
675
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
676
AS my_value FROM t1;
 
677
my_value
 
678
1
 
679
DELETE FROM t1
 
680
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
681
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
682
AS my_value FROM t1;
 
683
my_value
 
684
1
 
685
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
686
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
687
my_value
 
688
1
 
689
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
690
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
691
my_value
 
692
1
 
693
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
694
     WHERE  f1 = 0 AND f2 = '#######';
 
695
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
696
my_value
 
697
1
 
698
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
699
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
700
my_value
 
701
1
 
702
TRUNCATE t1;
 
703
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
704
my_value
 
705
1
 
706
DROP TABLE t1;
 
707
# 2.6.2 Storage engine assignment after partition name + after 
 
708
#       subpartition name
 
709
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
710
PARTITION BY RANGE(f1)
 
711
SUBPARTITION BY HASH(f1)
 
712
( PARTITION part1 VALUES LESS THAN (100) STORAGE ENGINE = 'MYISAM'
 
713
(SUBPARTITION subpart11 STORAGE ENGINE = 'MYISAM',
 
714
SUBPARTITION subpart12 STORAGE ENGINE = 'MYISAM'),
 
715
PARTITION part2 VALUES LESS THAN (2147483647)
 
716
(SUBPARTITION subpart21 STORAGE ENGINE = 'MYISAM',
 
717
SUBPARTITION subpart22 STORAGE ENGINE = 'MYISAM')
 
718
);
 
719
SHOW CREATE TABLE t1;
 
720
Table   Create Table
 
721
t1      CREATE TABLE `t1` (
 
722
  `f1` int(11) DEFAULT NULL,
 
723
  `f2` char(20) DEFAULT NULL
 
724
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */
 
725
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
726
my_value
 
727
1
 
728
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
729
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
730
AS my_value FROM t1;
 
731
my_value
 
732
1
 
733
UPDATE t1 SET f1 = f1 + 200
 
734
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
735
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
736
AS my_value FROM t1;
 
737
my_value
 
738
1
 
739
DELETE FROM t1
 
740
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
741
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
742
AS my_value FROM t1;
 
743
my_value
 
744
1
 
745
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
746
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
747
my_value
 
748
1
 
749
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
750
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
751
my_value
 
752
1
 
753
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
754
     WHERE  f1 = 0 AND f2 = '#######';
 
755
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
756
my_value
 
757
1
 
758
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
759
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
760
my_value
 
761
1
 
762
TRUNCATE t1;
 
763
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
764
my_value
 
765
1
 
766
DROP TABLE t1;
 
767
# 2.7 Session default engine differs from engine used within create table
 
768
SET SESSION storage_engine='MEMORY';
 
769
SET SESSION storage_engine='MYISAM';
 
770
 
 
771
#------------------------------------------------------------------------
 
772
#  3. Check assigning the number of partitions and subpartitions
 
773
#     with and without named partitions/subpartitions
 
774
#------------------------------------------------------------------------
 
775
DROP TABLE IF EXISTS t1;
 
776
# 3.1 (positive) without partition/subpartition number assignment
 
777
# 3.1.1 no partition number, no named partitions
 
778
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
779
PARTITION BY HASH(f1);
 
780
SHOW CREATE TABLE t1;
 
781
Table   Create Table
 
782
t1      CREATE TABLE `t1` (
 
783
  `f1` int(11) DEFAULT NULL,
 
784
  `f2` char(20) DEFAULT NULL
 
785
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1)  */
 
786
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
787
my_value
 
788
1
 
789
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
790
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
791
AS my_value FROM t1;
 
792
my_value
 
793
1
 
794
UPDATE t1 SET f1 = f1 + 200
 
795
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
796
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
797
AS my_value FROM t1;
 
798
my_value
 
799
1
 
800
DELETE FROM t1
 
801
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
802
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
803
AS my_value FROM t1;
 
804
my_value
 
805
1
 
806
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
807
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
808
my_value
 
809
1
 
810
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
811
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
812
my_value
 
813
1
 
814
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
815
     WHERE  f1 = 0 AND f2 = '#######';
 
816
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
817
my_value
 
818
1
 
819
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
820
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
821
my_value
 
822
1
 
823
TRUNCATE t1;
 
824
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
825
my_value
 
826
1
 
827
DROP TABLE t1;
 
828
# 3.1.2 no partition number, named partitions
 
829
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
830
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part2);
 
831
SHOW CREATE TABLE t1;
 
832
Table   Create Table
 
833
t1      CREATE TABLE `t1` (
 
834
  `f1` int(11) DEFAULT NULL,
 
835
  `f2` char(20) DEFAULT NULL
 
836
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */
 
837
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
838
my_value
 
839
1
 
840
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
841
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
842
AS my_value FROM t1;
 
843
my_value
 
844
1
 
845
UPDATE t1 SET f1 = f1 + 200
 
846
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
847
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
848
AS my_value FROM t1;
 
849
my_value
 
850
1
 
851
DELETE FROM t1
 
852
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
853
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
854
AS my_value FROM t1;
 
855
my_value
 
856
1
 
857
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
858
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
859
my_value
 
860
1
 
861
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
862
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
863
my_value
 
864
1
 
865
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
866
     WHERE  f1 = 0 AND f2 = '#######';
 
867
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
868
my_value
 
869
1
 
870
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
871
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
872
my_value
 
873
1
 
874
TRUNCATE t1;
 
875
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
876
my_value
 
877
1
 
878
DROP TABLE t1;
 
879
# 3.1.3 variations on no partition/subpartition number, named partitions,
 
880
#       different subpartitions are/are not named
 
881
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
882
PARTITION BY RANGE(f1) SUBPARTITION BY HASH(f1) (PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (200), PARTITION part3 VALUES LESS THAN (2147483647)) ;
 
883
DROP TABLE t1;
 
884
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
885
PARTITION BY RANGE(f1) SUBPARTITION BY HASH(f1) (PARTITION part1 VALUES LESS THAN (100)
 
886
(SUBPARTITION subpart11 , SUBPARTITION subpart12 ), PARTITION part2 VALUES LESS THAN (200)
 
887
(SUBPARTITION subpart21 , SUBPARTITION subpart22 ), PARTITION part3 VALUES LESS THAN (2147483647)
 
888
(SUBPARTITION subpart31 , SUBPARTITION subpart32 )) ;
 
889
SHOW CREATE TABLE t1;
 
890
Table   Create Table
 
891
t1      CREATE TABLE `t1` (
 
892
  `f1` int(11) DEFAULT NULL,
 
893
  `f2` char(20) DEFAULT NULL
 
894
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (100) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (200) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part3 VALUES LESS THAN (2147483647) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM)) */
 
895
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
896
my_value
 
897
1
 
898
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
899
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
900
AS my_value FROM t1;
 
901
my_value
 
902
1
 
903
UPDATE t1 SET f1 = f1 + 200
 
904
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
905
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
906
AS my_value FROM t1;
 
907
my_value
 
908
1
 
909
DELETE FROM t1
 
910
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
911
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
912
AS my_value FROM t1;
 
913
my_value
 
914
1
 
915
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
916
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
917
my_value
 
918
1
 
919
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
920
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
921
my_value
 
922
1
 
923
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
924
     WHERE  f1 = 0 AND f2 = '#######';
 
925
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
926
my_value
 
927
1
 
928
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
929
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
930
my_value
 
931
1
 
932
TRUNCATE t1;
 
933
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
934
my_value
 
935
1
 
936
DROP TABLE t1;
 
937
# 3.2 partition/subpartition numbers good and bad values and notations
 
938
DROP TABLE IF EXISTS t1;
 
939
# 3.2.1 partition/subpartition numbers INTEGER notation
 
940
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
941
PARTITION BY HASH(f1) PARTITIONS 2;
 
942
SHOW CREATE TABLE t1;
 
943
Table   Create Table
 
944
t1      CREATE TABLE `t1` (
 
945
  `f1` int(11) DEFAULT NULL,
 
946
  `f2` char(20) DEFAULT NULL
 
947
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) PARTITIONS 2  */
 
948
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
949
my_value
 
950
1
 
951
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
952
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
953
AS my_value FROM t1;
 
954
my_value
 
955
1
 
956
UPDATE t1 SET f1 = f1 + 200
 
957
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
958
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
959
AS my_value FROM t1;
 
960
my_value
 
961
1
 
962
DELETE FROM t1
 
963
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
964
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
965
AS my_value FROM t1;
 
966
my_value
 
967
1
 
968
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
969
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
970
my_value
 
971
1
 
972
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
973
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
974
my_value
 
975
1
 
976
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
977
     WHERE  f1 = 0 AND f2 = '#######';
 
978
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
979
my_value
 
980
1
 
981
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
982
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
983
my_value
 
984
1
 
985
TRUNCATE t1;
 
986
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
987
my_value
 
988
1
 
989
DROP TABLE t1;
 
990
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
991
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
992
SUBPARTITIONS 2
 
993
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
994
SHOW CREATE TABLE t1;
 
995
Table   Create Table
 
996
t1      CREATE TABLE `t1` (
 
997
  `f1` int(11) DEFAULT NULL,
 
998
  `f2` char(20) DEFAULT NULL
 
999
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) SUBPARTITIONS 2 (PARTITION part1 VALUES LESS THAN (100) ENGINE = MyISAM, PARTITION part2 VALUES LESS THAN (2147483647) ENGINE = MyISAM) */
 
1000
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
1001
my_value
 
1002
1
 
1003
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
1004
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1005
AS my_value FROM t1;
 
1006
my_value
 
1007
1
 
1008
UPDATE t1 SET f1 = f1 + 200
 
1009
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
1010
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
1011
AS my_value FROM t1;
 
1012
my_value
 
1013
1
 
1014
DELETE FROM t1
 
1015
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
1016
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1017
AS my_value FROM t1;
 
1018
my_value
 
1019
1
 
1020
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
1021
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
1022
my_value
 
1023
1
 
1024
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
1025
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
1026
my_value
 
1027
1
 
1028
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
1029
     WHERE  f1 = 0 AND f2 = '#######';
 
1030
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1031
my_value
 
1032
1
 
1033
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1034
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
1035
my_value
 
1036
1
 
1037
TRUNCATE t1;
 
1038
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
1039
my_value
 
1040
1
 
1041
DROP TABLE t1;
 
1042
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1043
PARTITION BY HASH(f1) PARTITIONS 1;
 
1044
SHOW CREATE TABLE t1;
 
1045
Table   Create Table
 
1046
t1      CREATE TABLE `t1` (
 
1047
  `f1` int(11) DEFAULT NULL,
 
1048
  `f2` char(20) DEFAULT NULL
 
1049
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) PARTITIONS 1  */
 
1050
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
1051
my_value
 
1052
1
 
1053
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
1054
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1055
AS my_value FROM t1;
 
1056
my_value
 
1057
1
 
1058
UPDATE t1 SET f1 = f1 + 200
 
1059
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
1060
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
1061
AS my_value FROM t1;
 
1062
my_value
 
1063
1
 
1064
DELETE FROM t1
 
1065
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
1066
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1067
AS my_value FROM t1;
 
1068
my_value
 
1069
1
 
1070
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
1071
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
1072
my_value
 
1073
1
 
1074
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
1075
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
1076
my_value
 
1077
1
 
1078
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
1079
     WHERE  f1 = 0 AND f2 = '#######';
 
1080
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1081
my_value
 
1082
1
 
1083
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1084
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
1085
my_value
 
1086
1
 
1087
TRUNCATE t1;
 
1088
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
1089
my_value
 
1090
1
 
1091
DROP TABLE t1;
 
1092
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1093
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1094
SUBPARTITIONS 1
 
1095
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1096
SHOW CREATE TABLE t1;
 
1097
Table   Create Table
 
1098
t1      CREATE TABLE `t1` (
 
1099
  `f1` int(11) DEFAULT NULL,
 
1100
  `f2` char(20) DEFAULT NULL
 
1101
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) SUBPARTITIONS 1 (PARTITION part1 VALUES LESS THAN (100) ENGINE = MyISAM, PARTITION part2 VALUES LESS THAN (2147483647) ENGINE = MyISAM) */
 
1102
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
1103
my_value
 
1104
1
 
1105
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 200;
 
1106
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1107
AS my_value FROM t1;
 
1108
my_value
 
1109
1
 
1110
UPDATE t1 SET f1 = f1 + 200
 
1111
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
1112
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
1113
AS my_value FROM t1;
 
1114
my_value
 
1115
1
 
1116
DELETE FROM t1
 
1117
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
1118
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1119
AS my_value FROM t1;
 
1120
my_value
 
1121
1
 
1122
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
1123
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
1124
my_value
 
1125
1
 
1126
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
1127
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
1128
my_value
 
1129
1
 
1130
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
1131
     WHERE  f1 = 0 AND f2 = '#######';
 
1132
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1133
my_value
 
1134
1
 
1135
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1136
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
1137
my_value
 
1138
1
 
1139
TRUNCATE t1;
 
1140
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
1141
my_value
 
1142
1
 
1143
DROP TABLE t1;
 
1144
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1145
PARTITION BY HASH(f1) PARTITIONS 0;
 
1146
ERROR HY000: Number of partitions = 0 is not an allowed value
 
1147
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1148
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1149
SUBPARTITIONS 0
 
1150
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1151
ERROR HY000: Number of subpartitions = 0 is not an allowed value
 
1152
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1153
PARTITION BY HASH(f1) PARTITIONS -1;
 
1154
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1' at line 2
 
1155
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1156
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1157
SUBPARTITIONS -1
 
1158
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1159
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1
 
1160
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (21' at line 3
 
1161
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1162
PARTITION BY HASH(f1) PARTITIONS 1000000;
 
1163
ERROR HY000: Too many partitions (including subpartitions) were defined
 
1164
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1165
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1166
SUBPARTITIONS 1000000
 
1167
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1168
ERROR HY000: Too many partitions (including subpartitions) were defined
 
1169
# 3.2.4 partition/subpartition numbers STRING notation
 
1170
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1171
PARTITION BY HASH(f1) PARTITIONS '2';
 
1172
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2'' at line 2
 
1173
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1174
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1175
SUBPARTITIONS '2'
 
1176
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1177
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2'
 
1178
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2' at line 3
 
1179
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1180
PARTITION BY HASH(f1) PARTITIONS '2.0';
 
1181
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2.0'' at line 2
 
1182
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1183
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1184
SUBPARTITIONS '2.0'
 
1185
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1186
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2.0'
 
1187
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN ' at line 3
 
1188
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1189
PARTITION BY HASH(f1) PARTITIONS '0.2E+1';
 
1190
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0.2E+1'' at line 2
 
1191
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1192
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1193
SUBPARTITIONS '0.2E+1'
 
1194
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1195
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0.2E+1'
 
1196
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS TH' at line 3
 
1197
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1198
PARTITION BY HASH(f1) PARTITIONS '2A';
 
1199
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2A'' at line 2
 
1200
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1201
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1202
SUBPARTITIONS '2A'
 
1203
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1204
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2A'
 
1205
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (' at line 3
 
1206
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1207
PARTITION BY HASH(f1) PARTITIONS 'A2';
 
1208
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''A2'' at line 2
 
1209
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1210
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1211
SUBPARTITIONS 'A2'
 
1212
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1213
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''A2'
 
1214
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (' at line 3
 
1215
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1216
PARTITION BY HASH(f1) PARTITIONS '';
 
1217
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''' at line 2
 
1218
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1219
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1220
SUBPARTITIONS ''
 
1221
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1222
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''
 
1223
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (21' at line 3
 
1224
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1225
PARTITION BY HASH(f1) PARTITIONS 'GARBAGE';
 
1226
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''GARBAGE'' at line 2
 
1227
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1228
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1229
SUBPARTITIONS 'GARBAGE'
 
1230
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1231
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''GARBAGE'
 
1232
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS T' at line 3
 
1233
# 3.2.5 partition/subpartition numbers other notations
 
1234
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1235
PARTITION BY HASH(f1) PARTITIONS 2A;
 
1236
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2A' at line 2
 
1237
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1238
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1239
SUBPARTITIONS 2A
 
1240
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1241
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2A
 
1242
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (21' at line 3
 
1243
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1244
PARTITION BY HASH(f1) PARTITIONS A2;
 
1245
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'A2' at line 2
 
1246
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1247
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1248
SUBPARTITIONS A2
 
1249
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1250
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'A2
 
1251
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (21' at line 3
 
1252
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1253
PARTITION BY HASH(f1) PARTITIONS GARBAGE;
 
1254
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GARBAGE' at line 2
 
1255
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1256
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1257
SUBPARTITIONS GARBAGE
 
1258
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1259
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GARBAGE
 
1260
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THA' at line 3
 
1261
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1262
PARTITION BY HASH(f1) PARTITIONS "2";
 
1263
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"2"' at line 2
 
1264
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1265
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1266
SUBPARTITIONS "2"
 
1267
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1268
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"2"
 
1269
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2' at line 3
 
1270
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1271
PARTITION BY HASH(f1) PARTITIONS "2A";
 
1272
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"2A"' at line 2
 
1273
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1274
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1275
SUBPARTITIONS "2A"
 
1276
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1277
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"2A"
 
1278
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (' at line 3
 
1279
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1280
PARTITION BY HASH(f1) PARTITIONS "A2";
 
1281
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"A2"' at line 2
 
1282
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1283
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1284
SUBPARTITIONS "A2"
 
1285
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1286
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"A2"
 
1287
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (' at line 3
 
1288
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1289
PARTITION BY HASH(f1) PARTITIONS "GARBAGE";
 
1290
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"GARBAGE"' at line 2
 
1291
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1292
PARTITION    BY RANGE(f1) SUBPARTITION BY HASH(f1)
 
1293
SUBPARTITIONS "GARBAGE"
 
1294
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS THAN (2147483647));
 
1295
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"GARBAGE"
 
1296
(PARTITION part1 VALUES LESS THAN (100), PARTITION part2 VALUES LESS T' at line 3
 
1297
# 3.3 Mixups of assigned partition/subpartition numbers and names
 
1298
# 3.3.1 (positive) number of partition/subpartition
 
1299
#                         = number of named partition/subpartition
 
1300
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1301
PARTITION BY HASH(f1) PARTITIONS 2 ( PARTITION part1, PARTITION part2 ) ;
 
1302
SHOW CREATE TABLE t1;
 
1303
Table   Create Table
 
1304
t1      CREATE TABLE `t1` (
 
1305
  `f1` int(11) DEFAULT NULL,
 
1306
  `f2` char(20) DEFAULT NULL
 
1307
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */
 
1308
DROP TABLE t1;
 
1309
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1310
PARTITION BY RANGE(f1) PARTITIONS 2
 
1311
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
 
1312
( PARTITION part1 VALUES LESS THAN (1000)
 
1313
(SUBPARTITION subpart11, SUBPARTITION subpart12),
 
1314
PARTITION part2 VALUES LESS THAN (2147483647)
 
1315
(SUBPARTITION subpart21, SUBPARTITION subpart22)
 
1316
);
 
1317
SHOW CREATE TABLE t1;
 
1318
Table   Create Table
 
1319
t1      CREATE TABLE `t1` (
 
1320
  `f1` int(11) DEFAULT NULL,
 
1321
  `f2` char(20) DEFAULT NULL
 
1322
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f1) SUBPARTITION BY HASH (f1) (PARTITION part1 VALUES LESS THAN (1000) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (2147483647) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM)) */
 
1323
DROP TABLE t1;
 
1324
# 3.3.2 (positive) number of partition/subpartition ,
 
1325
#                  0 (= no) named partition/subpartition
 
1326
#                  already checked above
 
1327
# 3.3.3 (negative) number of partitions/subpartitions
 
1328
#                         > number of named partitions/subpartitions
 
1329
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1330
PARTITION BY HASH(f1) PARTITIONS 2 ( PARTITION part1 ) ;
 
1331
ERROR 42000: Wrong number of partitions defined, mismatch with previous setting near ')' at line 2
 
1332
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1333
PARTITION BY RANGE(f1)
 
1334
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
 
1335
( PARTITION part1 VALUES LESS THAN (1000)
 
1336
(SUBPARTITION subpart11 ),
 
1337
PARTITION part2 VALUES LESS THAN (2147483647)
 
1338
(SUBPARTITION subpart21, SUBPARTITION subpart22)
 
1339
);
 
1340
ERROR 42000: Wrong number of subpartitions defined, mismatch with previous setting near '),
 
1341
PARTITION part2 VALUES LESS THAN (2147483647)
 
1342
(SUBPARTITION subpart21, SUBPAR' at line 5
 
1343
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1344
PARTITION BY RANGE(f1)
 
1345
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
 
1346
( PARTITION part1 VALUES LESS THAN (1000)
 
1347
(SUBPARTITION subpart11, SUBPARTITION subpart12),
 
1348
PARTITION part2 VALUES LESS THAN (2000)
 
1349
(SUBPARTITION subpart21 ),
 
1350
PARTITION part3 VALUES LESS THAN (2147483647)
 
1351
(SUBPARTITION subpart31, SUBPARTITION subpart32)
 
1352
);
 
1353
ERROR 42000: Wrong number of subpartitions defined, mismatch with previous setting near '),
 
1354
PARTITION part3 VALUES LESS THAN (2147483647)
 
1355
(SUBPARTITION subpart31, SUBPAR' at line 7
 
1356
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1357
PARTITION BY RANGE(f1) PARTITIONS 2
 
1358
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
 
1359
( PARTITION part1 VALUES LESS THAN (1000)
 
1360
(SUBPARTITION subpart11, SUBPARTITION subpart12),
 
1361
PARTITION part2 VALUES LESS THAN (2147483647)
 
1362
(SUBPARTITION subpart21                        )
 
1363
);
 
1364
ERROR 42000: Wrong number of subpartitions defined, mismatch with previous setting near ')
 
1365
)' at line 7
 
1366
# 3.3.4 (negative) number of partitions < number of named partitions
 
1367
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1368
PARTITION BY HASH(f1) PARTITIONS 1 ( PARTITION part1, PARTITION part2 ) ;
 
1369
ERROR 42000: Wrong number of partitions defined, mismatch with previous setting near ')' at line 2
 
1370
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1371
PARTITION BY RANGE(f1)
 
1372
SUBPARTITION BY HASH(f1) SUBPARTITIONS 1
 
1373
( PARTITION part1 VALUES LESS THAN (1000)
 
1374
(SUBPARTITION subpart11, SUBPARTITION subpart12),
 
1375
PARTITION part2 VALUES LESS THAN (2147483647)
 
1376
(SUBPARTITION subpart21, SUBPARTITION subpart22)
 
1377
);
 
1378
ERROR 42000: Wrong number of subpartitions defined, mismatch with previous setting near '),
 
1379
PARTITION part2 VALUES LESS THAN (2147483647)
 
1380
(SUBPARTITION subpart21, SUBPAR' at line 5
 
1381
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1382
PARTITION BY RANGE(f1)
 
1383
SUBPARTITION BY HASH(f1) SUBPARTITIONS 1
 
1384
( PARTITION part1 VALUES LESS THAN (1000)
 
1385
(SUBPARTITION subpart11, SUBPARTITION subpart12),
 
1386
PARTITION part2 VALUES LESS THAN (2000)
 
1387
(SUBPARTITION subpart21                        ),
 
1388
PARTITION part3 VALUES LESS THAN (2147483647)
 
1389
(SUBPARTITION subpart31, SUBPARTITION subpart32)
 
1390
);
 
1391
ERROR 42000: Wrong number of subpartitions defined, mismatch with previous setting near '),
 
1392
PARTITION part2 VALUES LESS THAN (2000)
 
1393
(SUBPARTITION subpart21              ' at line 5
 
1394
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1395
PARTITION BY RANGE(f1)
 
1396
SUBPARTITION BY HASH(f1) SUBPARTITIONS 1
 
1397
( PARTITION part1 VALUES LESS THAN (1000)
 
1398
(SUBPARTITION subpart11, SUBPARTITION subpart12),
 
1399
PARTITION part2 VALUES LESS THAN (2147483647)
 
1400
(SUBPARTITION subpart21, SUBPARTITION subpart22)
 
1401
);
 
1402
ERROR 42000: Wrong number of subpartitions defined, mismatch with previous setting near '),
 
1403
PARTITION part2 VALUES LESS THAN (2147483647)
 
1404
(SUBPARTITION subpart21, SUBPAR' at line 5
 
1405
 
 
1406
#------------------------------------------------------------------------
 
1407
#  4. Checks of logical partition/subpartition name
 
1408
#     file name clashes during CREATE TABLE
 
1409
#------------------------------------------------------------------------
 
1410
DROP TABLE IF EXISTS t1;
 
1411
#  4.1 (negative) A partition name used more than once
 
1412
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1413
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part1);
 
1414
ERROR HY000: Duplicate partition name part1
 
1415
# FIXME Implement testcases with filename problems
 
1416
#       existing file of other table --- partition/subpartition file name
 
1417
#       partition/subpartition file name  --- file of the same table
 
1418
 
 
1419
#------------------------------------------------------------------------
 
1420
#  5. Alter table experiments
 
1421
#------------------------------------------------------------------------
 
1422
DROP TABLE IF EXISTS t1;
 
1423
# 5.1 alter table add partition
 
1424
# 5.1.1 (negative) add partition to non partitioned table
 
1425
CREATE TABLE t1 ( f1 INTEGER, f2 char(20));
 
1426
SHOW CREATE TABLE t1;
 
1427
Table   Create Table
 
1428
t1      CREATE TABLE `t1` (
 
1429
  `f1` int(11) DEFAULT NULL,
 
1430
  `f2` char(20) DEFAULT NULL
 
1431
) ENGINE=MyISAM DEFAULT CHARSET=latin1
 
1432
ALTER TABLE t1 ADD PARTITION (PARTITION part1);
 
1433
Got one of the listed errors
 
1434
SHOW CREATE TABLE t1;
 
1435
Table   Create Table
 
1436
t1      CREATE TABLE `t1` (
 
1437
  `f1` int(11) DEFAULT NULL,
 
1438
  `f2` char(20) DEFAULT NULL
 
1439
) ENGINE=MyISAM DEFAULT CHARSET=latin1
 
1440
DROP TABLE t1;
 
1441
# 5.1.2 Add one partition to a table with one partition
 
1442
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1443
PARTITION BY HASH(f1);
 
1444
SHOW CREATE TABLE t1;
 
1445
Table   Create Table
 
1446
t1      CREATE TABLE `t1` (
 
1447
  `f1` int(11) DEFAULT NULL,
 
1448
  `f2` char(20) DEFAULT NULL
 
1449
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1)  */
 
1450
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 100 - 1;
 
1451
ALTER TABLE t1 ADD PARTITION (PARTITION part1);
 
1452
SHOW CREATE TABLE t1;
 
1453
Table   Create Table
 
1454
t1      CREATE TABLE `t1` (
 
1455
  `f1` int(11) DEFAULT NULL,
 
1456
  `f2` char(20) DEFAULT NULL
 
1457
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION p0 ENGINE = MyISAM, PARTITION part1 ENGINE = MyISAM) */
 
1458
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200;
 
1459
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1460
AS my_value FROM t1;
 
1461
my_value
 
1462
1
 
1463
UPDATE t1 SET f1 = f1 + 200
 
1464
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
1465
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
1466
AS my_value FROM t1;
 
1467
my_value
 
1468
1
 
1469
DELETE FROM t1
 
1470
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
1471
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1472
AS my_value FROM t1;
 
1473
my_value
 
1474
1
 
1475
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
1476
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
1477
my_value
 
1478
1
 
1479
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
1480
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
1481
my_value
 
1482
1
 
1483
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
1484
     WHERE  f1 = 0 AND f2 = '#######';
 
1485
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1486
my_value
 
1487
1
 
1488
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1489
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
1490
my_value
 
1491
1
 
1492
TRUNCATE t1;
 
1493
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
1494
my_value
 
1495
1
 
1496
DROP TABLE t1;
 
1497
# 5.1.3 Several times add one partition to a table with some partitions
 
1498
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1499
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part3);
 
1500
SHOW CREATE TABLE t1;
 
1501
Table   Create Table
 
1502
t1      CREATE TABLE `t1` (
 
1503
  `f1` int(11) DEFAULT NULL,
 
1504
  `f2` char(20) DEFAULT NULL
 
1505
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) */
 
1506
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 100 - 1;
 
1507
ALTER TABLE t1 ADD PARTITION (PARTITION part0);
 
1508
SHOW CREATE TABLE t1;
 
1509
Table   Create Table
 
1510
t1      CREATE TABLE `t1` (
 
1511
  `f1` int(11) DEFAULT NULL,
 
1512
  `f2` char(20) DEFAULT NULL
 
1513
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM) */
 
1514
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200;
 
1515
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1516
AS my_value FROM t1;
 
1517
my_value
 
1518
1
 
1519
UPDATE t1 SET f1 = f1 + 200
 
1520
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
1521
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
1522
AS my_value FROM t1;
 
1523
my_value
 
1524
1
 
1525
DELETE FROM t1
 
1526
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
1527
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1528
AS my_value FROM t1;
 
1529
my_value
 
1530
1
 
1531
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
1532
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
1533
my_value
 
1534
1
 
1535
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
1536
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
1537
my_value
 
1538
1
 
1539
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
1540
     WHERE  f1 = 0 AND f2 = '#######';
 
1541
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1542
my_value
 
1543
1
 
1544
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1545
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
1546
my_value
 
1547
1
 
1548
TRUNCATE t1;
 
1549
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
1550
my_value
 
1551
1
 
1552
DELETE FROM t1;
 
1553
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 100 - 1;
 
1554
ALTER TABLE t1 ADD PARTITION (PARTITION part2);
 
1555
SHOW CREATE TABLE t1;
 
1556
Table   Create Table
 
1557
t1      CREATE TABLE `t1` (
 
1558
  `f1` int(11) DEFAULT NULL,
 
1559
  `f2` char(20) DEFAULT NULL
 
1560
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */
 
1561
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200;
 
1562
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1563
AS my_value FROM t1;
 
1564
my_value
 
1565
1
 
1566
UPDATE t1 SET f1 = f1 + 200
 
1567
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
1568
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
1569
AS my_value FROM t1;
 
1570
my_value
 
1571
1
 
1572
DELETE FROM t1
 
1573
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
1574
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1575
AS my_value FROM t1;
 
1576
my_value
 
1577
1
 
1578
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
1579
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
1580
my_value
 
1581
1
 
1582
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
1583
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
1584
my_value
 
1585
1
 
1586
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
1587
     WHERE  f1 = 0 AND f2 = '#######';
 
1588
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1589
my_value
 
1590
1
 
1591
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1592
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
1593
my_value
 
1594
1
 
1595
TRUNCATE t1;
 
1596
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
1597
my_value
 
1598
1
 
1599
DELETE FROM t1;
 
1600
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 100 - 1;
 
1601
SHOW CREATE TABLE t1;
 
1602
Table   Create Table
 
1603
t1      CREATE TABLE `t1` (
 
1604
  `f1` int(11) DEFAULT NULL,
 
1605
  `f2` char(20) DEFAULT NULL
 
1606
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM, PARTITION part0 ENGINE = MyISAM, PARTITION part2 ENGINE = MyISAM) */
 
1607
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200;
 
1608
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1609
AS my_value FROM t1;
 
1610
my_value
 
1611
1
 
1612
UPDATE t1 SET f1 = f1 + 200
 
1613
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
1614
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
1615
AS my_value FROM t1;
 
1616
my_value
 
1617
1
 
1618
DELETE FROM t1
 
1619
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
1620
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1621
AS my_value FROM t1;
 
1622
my_value
 
1623
1
 
1624
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
1625
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
1626
my_value
 
1627
1
 
1628
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
1629
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
1630
my_value
 
1631
1
 
1632
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
1633
     WHERE  f1 = 0 AND f2 = '#######';
 
1634
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1635
my_value
 
1636
1
 
1637
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1638
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
1639
my_value
 
1640
1
 
1641
TRUNCATE t1;
 
1642
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
1643
my_value
 
1644
1
 
1645
DROP TABLE t1;
 
1646
# 5.1.4 Add several partitions to a table with some partitions
 
1647
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1648
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part3);
 
1649
SHOW CREATE TABLE t1;
 
1650
Table   Create Table
 
1651
t1      CREATE TABLE `t1` (
 
1652
  `f1` int(11) DEFAULT NULL,
 
1653
  `f2` char(20) DEFAULT NULL
 
1654
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) */
 
1655
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 100 - 1;
 
1656
SHOW CREATE TABLE t1;
 
1657
Table   Create Table
 
1658
t1      CREATE TABLE `t1` (
 
1659
  `f1` int(11) DEFAULT NULL,
 
1660
  `f2` char(20) DEFAULT NULL
 
1661
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f1) (PARTITION part1 ENGINE = MyISAM, PARTITION part3 ENGINE = MyISAM) */
 
1662
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 100 AND 200;
 
1663
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1664
AS my_value FROM t1;
 
1665
my_value
 
1666
1
 
1667
UPDATE t1 SET f1 = f1 + 200
 
1668
WHERE f1 BETWEEN 100 - 50 AND 100 + 50;
 
1669
SELECT (COUNT(*) = 200) AND (MIN(f1) = 1) AND (MAX(f1) = 100 + 50 + 200 )
 
1670
AS my_value FROM t1;
 
1671
my_value
 
1672
1
 
1673
DELETE FROM t1
 
1674
WHERE f1 BETWEEN 100 - 50 + 200 AND 100 + 50 + 200;
 
1675
SELECT (COUNT(*) = 200 - 50 - 50 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = 200)
 
1676
AS my_value FROM t1;
 
1677
my_value
 
1678
1
 
1679
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
 
1680
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
 
1681
my_value
 
1682
1
 
1683
INSERT INTO t1 SET f1 = 200 + 1, f2 = '#######';
 
1684
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 1 AND f2 = '#######';
 
1685
my_value
 
1686
1
 
1687
UPDATE t1 SET f1 = 200 + 2, f2 = 'ZZZZZZZ'
 
1688
     WHERE  f1 = 0 AND f2 = '#######';
 
1689
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1690
my_value
 
1691
1
 
1692
DELETE FROM t1 WHERE f1 = 200 + 2 AND f2 = 'ZZZZZZZ';
 
1693
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
 
1694
my_value
 
1695
1
 
1696
TRUNCATE t1;
 
1697
SELECT COUNT(*) = 0 AS my_value FROM t1;
 
1698
my_value
 
1699
1
 
1700
DROP TABLE t1;
 
1701
# 5.1.5 (negative) Add partitions to a table with some partitions
 
1702
#       clash on new and already existing partition names
 
1703
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1704
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part2, PARTITION part3);
 
1705
ALTER TABLE t1 ADD PARTITION (PARTITION part1);
 
1706
ERROR HY000: Duplicate partition name part1
 
1707
ALTER TABLE t1 ADD PARTITION (PARTITION part2);
 
1708
ERROR HY000: Duplicate partition name part2
 
1709
ALTER TABLE t1 ADD PARTITION (PARTITION part3);
 
1710
ERROR HY000: Duplicate partition name part3
 
1711
ALTER TABLE t1 ADD PARTITION (PARTITION part1, PARTITION part2, PARTITION part3);
 
1712
ERROR HY000: Duplicate partition name part1
 
1713
DROP TABLE t1;
 
1714
# 5.2 alter table add subpartition
 
1715
# 5.2.1 Add one subpartition to a table with subpartitioning rule and
 
1716
#       no explicit defined subpartitions
 
1717
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
 
1718
PARTITION BY RANGE(f1)
 
1719
SUBPARTITION BY HASH(f1)
 
1720
(PARTITION part1 VALUES LESS THAN (100));
 
1721
INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND 100 - 1;
 
1722
ALTER TABLE t1 ADD PARTITION (PARTITION part2 VALUES LESS THAN (2147483647)
 
1723
(SUBPARTITION subpart21));
 
1724
DROP TABLE t1;
 
1725
DROP TABLE if exists t0_template;