~ubuntu-branches/ubuntu/trusty/mysql-5.6/trusty

« back to all changes in this revision

Viewing changes to mysql-test/t/partition_error.test

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-02-12 11:54:27 UTC
  • Revision ID: package-import@ubuntu.com-20140212115427-oq6tfsqxl1wuwehi
Tags: upstream-5.6.15
ImportĀ upstreamĀ versionĀ 5.6.15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# Simple test for the erroneos statements using the 
 
3
# partition storage engine
 
4
#
 
5
-- source include/have_partition.inc
 
6
 
 
7
--disable_warnings
 
8
drop table if exists t1, t2;
 
9
--enable_warnings
 
10
 
 
11
let $MYSQLD_DATADIR= `SELECT @@datadir`;
 
12
 
 
13
--echo #
 
14
--echo # Bug#60039: crash when exchanging a partition on
 
15
--echo #            nonpartitioned table with a view
 
16
--echo #
 
17
CREATE TABLE t1 (a int);
 
18
CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1;
 
19
--error ER_CHECK_NO_SUCH_TABLE
 
20
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE v1;
 
21
DROP VIEW v1;
 
22
DROP TABLE t1;
 
23
 
 
24
--echo #
 
25
--echo # Bug#57924: crash when creating partitioned table with
 
26
--echo #            multiple columns in the partition key
 
27
--echo #
 
28
--error ER_SAME_NAME_PARTITION_FIELD
 
29
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b))
 
30
PARTITION BY KEY(a, b, a);
 
31
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b))
 
32
PARTITION BY KEY(A, b);
 
33
DROP TABLE t1;
 
34
--error ER_SAME_NAME_PARTITION_FIELD
 
35
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b))
 
36
PARTITION BY KEY(a, b, A);
 
37
 
 
38
 
 
39
--echo #
 
40
--echo # Bug#54483: valgrind errors when making warnings for multiline inserts
 
41
--echo #            into partition
 
42
--echo #
 
43
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
44
CREATE TABLE t1 (a VARBINARY(10))
 
45
PARTITION BY RANGE (DAYOFWEEK(a))
 
46
(PARTITION a1 VALUES LESS THAN (60));
 
47
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
48
CREATE TABLE t1 (a CHAR(10))
 
49
PARTITION BY RANGE (DAYOFWEEK(a))
 
50
(PARTITION a1 VALUES LESS THAN (60));
 
51
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
52
CREATE TABLE t1 (a VARCHAR(10))
 
53
PARTITION BY RANGE (DAYOFWEEK(a))
 
54
(PARTITION a1 VALUES LESS THAN (60));
 
55
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
56
CREATE TABLE t1 (a TIMESTAMP)
 
57
PARTITION BY RANGE (DAYOFWEEK(a))
 
58
(PARTITION a1 VALUES LESS THAN (60));
 
59
CREATE TABLE t1 (a DATE)
 
60
PARTITION BY RANGE (DAYOFWEEK(a))
 
61
(PARTITION a1 VALUES LESS THAN (60));
 
62
INSERT INTO t1 VALUES ('test'),('a'),('5');
 
63
SHOW WARNINGS;
 
64
DROP TABLE t1;
 
65
CREATE TABLE t1 (a DATETIME)
 
66
PARTITION BY RANGE (DAYOFWEEK(a))
 
67
(PARTITION a1 VALUES LESS THAN (60));
 
68
INSERT INTO t1 VALUES ('test'),('a'),('5');
 
69
SHOW WARNINGS;
 
70
DROP TABLE t1;
 
71
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
72
CREATE TABLE t1 (a TIME)
 
73
PARTITION BY RANGE (DAYOFWEEK(a))
 
74
(PARTITION a1 VALUES LESS THAN (60));
 
75
SHOW WARNINGS;
 
76
 
 
77
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
78
CREATE TABLE t1 (a TIME)
 
79
PARTITION BY HASH (TO_DAYS(a));
 
80
CREATE TABLE t1 (a DATE)
 
81
PARTITION BY HASH (TO_DAYS(a));
 
82
DROP TABLE t1;
 
83
CREATE TABLE t1 (a DATETIME)
 
84
PARTITION BY HASH (TO_DAYS(a));
 
85
DROP TABLE t1;
 
86
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
87
CREATE TABLE t1 (a VARCHAR(10))
 
88
PARTITION BY HASH (TO_DAYS(a));
 
89
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
90
CREATE TABLE t1 (a INT)
 
91
PARTITION BY HASH (TO_DAYS(a));
 
92
 
 
93
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
94
CREATE TABLE t1 (a TIME)
 
95
PARTITION BY HASH (DAYOFMONTH(a));
 
96
CREATE TABLE t1 (a DATE)
 
97
PARTITION BY HASH (DAYOFMONTH(a));
 
98
DROP TABLE t1;
 
99
CREATE TABLE t1 (a DATETIME)
 
100
PARTITION BY HASH (DAYOFMONTH(a));
 
101
DROP TABLE t1;
 
102
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
103
CREATE TABLE t1 (a VARCHAR(10))
 
104
PARTITION BY HASH (DAYOFMONTH(a));
 
105
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
106
CREATE TABLE t1 (a INT)
 
107
PARTITION BY HASH (DAYOFMONTH(a));
 
108
 
 
109
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
110
CREATE TABLE t1 (a TIME)
 
111
PARTITION BY HASH (MONTH(a));
 
112
CREATE TABLE t1 (a DATE)
 
113
PARTITION BY HASH (MONTH(a));
 
114
DROP TABLE t1;
 
115
CREATE TABLE t1 (a DATETIME)
 
116
PARTITION BY HASH (MONTH(a));
 
117
DROP TABLE t1;
 
118
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
119
CREATE TABLE t1 (a VARCHAR(10))
 
120
PARTITION BY HASH (MONTH(a));
 
121
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
122
CREATE TABLE t1 (a INT)
 
123
PARTITION BY HASH (MONTH(a));
 
124
 
 
125
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
126
CREATE TABLE t1 (a TIME)
 
127
PARTITION BY HASH (DAYOFYEAR(a));
 
128
CREATE TABLE t1 (a DATE)
 
129
PARTITION BY HASH (DAYOFYEAR(a));
 
130
DROP TABLE t1;
 
131
CREATE TABLE t1 (a DATETIME)
 
132
PARTITION BY HASH (DAYOFYEAR(a));
 
133
DROP TABLE t1;
 
134
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
135
CREATE TABLE t1 (a VARCHAR(10))
 
136
PARTITION BY HASH (DAYOFYEAR(a));
 
137
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
138
CREATE TABLE t1 (a INT)
 
139
PARTITION BY HASH (DAYOFYEAR(a));
 
140
 
 
141
CREATE TABLE t1 (a TIME)
 
142
PARTITION BY HASH (HOUR(a));
 
143
DROP TABLE t1;
 
144
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
145
CREATE TABLE t1 (a DATE)
 
146
PARTITION BY HASH (HOUR(a));
 
147
CREATE TABLE t1 (a DATETIME)
 
148
PARTITION BY HASH (HOUR(a));
 
149
DROP TABLE t1;
 
150
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
151
CREATE TABLE t1 (a VARCHAR(10))
 
152
PARTITION BY HASH (HOUR(a));
 
153
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
154
CREATE TABLE t1 (a INT)
 
155
PARTITION BY HASH (HOUR(a));
 
156
 
 
157
CREATE TABLE t1 (a TIME)
 
158
PARTITION BY HASH (MINUTE(a));
 
159
DROP TABLE t1;
 
160
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
161
CREATE TABLE t1 (a DATE)
 
162
PARTITION BY HASH (MINUTE(a));
 
163
CREATE TABLE t1 (a DATETIME)
 
164
PARTITION BY HASH (MINUTE(a));
 
165
DROP TABLE t1;
 
166
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
167
CREATE TABLE t1 (a VARCHAR(10))
 
168
PARTITION BY HASH (MINUTE(a));
 
169
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
170
CREATE TABLE t1 (a INT)
 
171
PARTITION BY HASH (MINUTE(a));
 
172
 
 
173
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
174
CREATE TABLE t1 (a TIME)
 
175
PARTITION BY HASH (QUARTER(a));
 
176
CREATE TABLE t1 (a DATE)
 
177
PARTITION BY HASH (QUARTER(a));
 
178
DROP TABLE t1;
 
179
CREATE TABLE t1 (a DATETIME)
 
180
PARTITION BY HASH (QUARTER(a));
 
181
DROP TABLE t1;
 
182
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
183
CREATE TABLE t1 (a VARCHAR(10))
 
184
PARTITION BY HASH (QUARTER(a));
 
185
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
186
CREATE TABLE t1 (a INT)
 
187
PARTITION BY HASH (QUARTER(a));
 
188
 
 
189
CREATE TABLE t1 (a TIME)
 
190
PARTITION BY HASH (SECOND(a));
 
191
DROP TABLE t1;
 
192
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
193
CREATE TABLE t1 (a DATE)
 
194
PARTITION BY HASH (SECOND(a));
 
195
CREATE TABLE t1 (a DATETIME)
 
196
PARTITION BY HASH (SECOND(a));
 
197
DROP TABLE t1;
 
198
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
199
CREATE TABLE t1 (a VARCHAR(10))
 
200
PARTITION BY HASH (SECOND(a));
 
201
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
202
CREATE TABLE t1 (a INT)
 
203
PARTITION BY HASH (SECOND(a));
 
204
 
 
205
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
206
CREATE TABLE t1 (a TIME)
 
207
PARTITION BY HASH (YEARWEEK(a));
 
208
CREATE TABLE t1 (a DATE)
 
209
PARTITION BY HASH (YEARWEEK(a));
 
210
DROP TABLE t1;
 
211
CREATE TABLE t1 (a DATETIME)
 
212
PARTITION BY HASH (YEARWEEK(a));
 
213
DROP TABLE t1;
 
214
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
215
CREATE TABLE t1 (a VARCHAR(10))
 
216
PARTITION BY HASH (YEARWEEK(a));
 
217
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
218
CREATE TABLE t1 (a INT)
 
219
PARTITION BY HASH (YEARWEEK(a));
 
220
 
 
221
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
222
CREATE TABLE t1 (a TIME)
 
223
PARTITION BY HASH (WEEKDAY(a));
 
224
CREATE TABLE t1 (a DATE)
 
225
PARTITION BY HASH (WEEKDAY(a));
 
226
DROP TABLE t1;
 
227
CREATE TABLE t1 (a DATETIME)
 
228
PARTITION BY HASH (WEEKDAY(a));
 
229
DROP TABLE t1;
 
230
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
231
CREATE TABLE t1 (a VARCHAR(10))
 
232
PARTITION BY HASH (WEEKDAY(a));
 
233
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
234
CREATE TABLE t1 (a INT)
 
235
PARTITION BY HASH (WEEKDAY(a));
 
236
 
 
237
--echo # TO_SECONDS() is added in 5.5.
 
238
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
239
CREATE TABLE t1 (a TIME)
 
240
PARTITION BY HASH (TO_SECONDS(a));
 
241
CREATE TABLE t1 (a DATE)
 
242
PARTITION BY HASH (TO_SECONDS(a));
 
243
DROP TABLE t1;
 
244
CREATE TABLE t1 (a DATETIME)
 
245
PARTITION BY HASH (TO_SECONDS(a));
 
246
DROP TABLE t1;
 
247
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
248
CREATE TABLE t1 (a VARCHAR(10))
 
249
PARTITION BY HASH (TO_SECONDS(a));
 
250
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
251
CREATE TABLE t1 (a INT)
 
252
PARTITION BY HASH (TO_SECONDS(a));
 
253
 
 
254
CREATE TABLE t1 (a TIME)
 
255
PARTITION BY HASH (TIME_TO_SEC(a));
 
256
DROP TABLE t1;
 
257
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
258
CREATE TABLE t1 (a DATE)
 
259
PARTITION BY HASH (TIME_TO_SEC(a));
 
260
CREATE TABLE t1 (a DATETIME)
 
261
PARTITION BY HASH (TIME_TO_SEC(a));
 
262
DROP TABLE t1;
 
263
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
264
CREATE TABLE t1 (a VARCHAR(10))
 
265
PARTITION BY HASH (TIME_TO_SEC(a));
 
266
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
267
CREATE TABLE t1 (a INT)
 
268
PARTITION BY HASH (TIME_TO_SEC(a));
 
269
 
 
270
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
271
CREATE TABLE t1 (a TIME)
 
272
PARTITION BY HASH (FROM_DAYS(a));
 
273
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
274
CREATE TABLE t1 (a DATE)
 
275
PARTITION BY HASH (FROM_DAYS(a));
 
276
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
277
CREATE TABLE t1 (a DATETIME)
 
278
PARTITION BY HASH (FROM_DAYS(a));
 
279
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
280
CREATE TABLE t1 (a VARCHAR(10))
 
281
PARTITION BY HASH (TO_DAYS(FROM_DAYS(a)));
 
282
--error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
 
283
CREATE TABLE t1 (a VARCHAR(10))
 
284
PARTITION BY HASH (FROM_DAYS(a));
 
285
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
286
CREATE TABLE t1 (a INT)
 
287
PARTITION BY HASH (TO_DAYS(FROM_DAYS(a)));
 
288
--error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
 
289
CREATE TABLE t1 (a INT)
 
290
PARTITION BY HASH (FROM_DAYS(a));
 
291
 
 
292
CREATE TABLE t1 (a TIME)
 
293
PARTITION BY HASH (MICROSECOND(a));
 
294
DROP TABLE t1;
 
295
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
296
CREATE TABLE t1 (a DATE)
 
297
PARTITION BY HASH (MICROSECOND(a));
 
298
CREATE TABLE t1 (a DATETIME)
 
299
PARTITION BY HASH (MICROSECOND(a));
 
300
DROP TABLE t1;
 
301
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
302
CREATE TABLE t1 (a VARCHAR(10))
 
303
PARTITION BY HASH (MICROSECOND(a));
 
304
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
305
CREATE TABLE t1 (a INT)
 
306
PARTITION BY HASH (MICROSECOND(a));
 
307
--echo # Bug#57071
 
308
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
309
CREATE TABLE t1
 
310
(`date` date,
 
311
 `extracted_week` int,
 
312
 `yearweek` int,
 
313
 `week` int,
 
314
 `default_week_format` int)
 
315
PARTITION BY LIST (EXTRACT(WEEK FROM date) % 3)
 
316
(PARTITION p0 VALUES IN (0),
 
317
 PARTITION p1 VALUES IN (1),
 
318
 PARTITION p2 VALUES IN (2));
 
319
CREATE TABLE t1
 
320
(`date` date,
 
321
 `extracted_week` int,
 
322
 `yearweek` int,
 
323
 `week` int,
 
324
 `default_week_format` int);
 
325
SET @old_default_week_format := @@default_week_format;
 
326
SET default_week_format = 0;
 
327
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
 
328
SET default_week_format = 1;
 
329
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
 
330
SET default_week_format = 2;
 
331
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
 
332
SET default_week_format = 3;
 
333
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
 
334
SET default_week_format = 4;
 
335
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
 
336
SET default_week_format = 5;
 
337
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
 
338
SET default_week_format = 6;
 
339
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
 
340
SET default_week_format = 7;
 
341
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
 
342
SELECT * FROM t1;
 
343
SET default_week_format = @old_default_week_format;
 
344
DROP TABLE t1;
 
345
 
 
346
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
347
CREATE TABLE t1 (a TIME)
 
348
PARTITION BY HASH (EXTRACT(YEAR FROM a));
 
349
CREATE TABLE t1 (a DATE)
 
350
PARTITION BY HASH (EXTRACT(YEAR FROM a));
 
351
DROP TABLE t1;
 
352
CREATE TABLE t1 (a DATETIME)
 
353
PARTITION BY HASH (EXTRACT(YEAR FROM a));
 
354
DROP TABLE t1;
 
355
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
356
CREATE TABLE t1 (a VARCHAR(10))
 
357
PARTITION BY HASH (EXTRACT(YEAR FROM a));
 
358
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
359
CREATE TABLE t1 (a INT)
 
360
PARTITION BY HASH (EXTRACT(YEAR FROM a));
 
361
 
 
362
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
363
CREATE TABLE t1 (a TIME)
 
364
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
 
365
CREATE TABLE t1 (a DATE)
 
366
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
 
367
DROP TABLE t1;
 
368
CREATE TABLE t1 (a DATETIME)
 
369
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
 
370
DROP TABLE t1;
 
371
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
372
CREATE TABLE t1 (a VARCHAR(10))
 
373
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
 
374
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
375
CREATE TABLE t1 (a INT)
 
376
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
 
377
 
 
378
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
379
CREATE TABLE t1 (a TIME)
 
380
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
 
381
CREATE TABLE t1 (a DATE)
 
382
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
 
383
DROP TABLE t1;
 
384
CREATE TABLE t1 (a DATETIME)
 
385
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
 
386
DROP TABLE t1;
 
387
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
388
CREATE TABLE t1 (a VARCHAR(10))
 
389
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
 
390
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
391
CREATE TABLE t1 (a INT)
 
392
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
 
393
 
 
394
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
395
CREATE TABLE t1 (a TIME)
 
396
PARTITION BY HASH (EXTRACT(MONTH FROM a));
 
397
CREATE TABLE t1 (a DATE)
 
398
PARTITION BY HASH (EXTRACT(MONTH FROM a));
 
399
DROP TABLE t1;
 
400
CREATE TABLE t1 (a DATETIME)
 
401
PARTITION BY HASH (EXTRACT(MONTH FROM a));
 
402
DROP TABLE t1;
 
403
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
404
CREATE TABLE t1 (a VARCHAR(10))
 
405
PARTITION BY HASH (EXTRACT(MONTH FROM a));
 
406
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
407
CREATE TABLE t1 (a INT)
 
408
PARTITION BY HASH (EXTRACT(MONTH FROM a));
 
409
 
 
410
--echo # EXTRACT(WEEK...) is disallowed, see bug#57071.
 
411
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
412
CREATE TABLE t1 (a TIME)
 
413
PARTITION BY HASH (EXTRACT(WEEK FROM a));
 
414
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
415
CREATE TABLE t1 (a DATE)
 
416
PARTITION BY HASH (EXTRACT(WEEK FROM a));
 
417
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
418
CREATE TABLE t1 (a DATETIME)
 
419
PARTITION BY HASH (EXTRACT(WEEK FROM a));
 
420
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
421
CREATE TABLE t1 (a VARCHAR(10))
 
422
PARTITION BY HASH (EXTRACT(WEEK FROM a));
 
423
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
424
CREATE TABLE t1 (a INT)
 
425
PARTITION BY HASH (EXTRACT(WEEK FROM a));
 
426
 
 
427
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
428
CREATE TABLE t1 (a TIME)
 
429
PARTITION BY HASH (EXTRACT(DAY FROM a));
 
430
CREATE TABLE t1 (a DATE)
 
431
PARTITION BY HASH (EXTRACT(DAY FROM a));
 
432
DROP TABLE t1;
 
433
CREATE TABLE t1 (a DATETIME)
 
434
PARTITION BY HASH (EXTRACT(DAY FROM a));
 
435
DROP TABLE t1;
 
436
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
437
CREATE TABLE t1 (a VARCHAR(10))
 
438
PARTITION BY HASH (EXTRACT(DAY FROM a));
 
439
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
440
CREATE TABLE t1 (a INT)
 
441
PARTITION BY HASH (EXTRACT(DAY FROM a));
 
442
 
 
443
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
444
CREATE TABLE t1 (a TIME)
 
445
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
 
446
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
447
CREATE TABLE t1 (a DATE)
 
448
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
 
449
CREATE TABLE t1 (a DATETIME)
 
450
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
 
451
DROP TABLE t1;
 
452
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
453
CREATE TABLE t1 (a VARCHAR(10))
 
454
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
 
455
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
456
CREATE TABLE t1 (a INT)
 
457
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
 
458
 
 
459
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
460
CREATE TABLE t1 (a TIME)
 
461
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
 
462
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
463
CREATE TABLE t1 (a DATE)
 
464
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
 
465
CREATE TABLE t1 (a DATETIME)
 
466
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
 
467
DROP TABLE t1;
 
468
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
469
CREATE TABLE t1 (a VARCHAR(10))
 
470
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
 
471
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
472
CREATE TABLE t1 (a INT)
 
473
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
 
474
 
 
475
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
476
CREATE TABLE t1 (a TIME)
 
477
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
 
478
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
479
CREATE TABLE t1 (a DATE)
 
480
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
 
481
CREATE TABLE t1 (a DATETIME)
 
482
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
 
483
DROP TABLE t1;
 
484
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
485
CREATE TABLE t1 (a VARCHAR(10))
 
486
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
 
487
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
488
CREATE TABLE t1 (a INT)
 
489
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
 
490
 
 
491
CREATE TABLE t1 (a TIME)
 
492
PARTITION BY HASH (EXTRACT(HOUR FROM a));
 
493
DROP TABLE t1;
 
494
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
495
CREATE TABLE t1 (a DATE)
 
496
PARTITION BY HASH (EXTRACT(HOUR FROM a));
 
497
CREATE TABLE t1 (a DATETIME)
 
498
PARTITION BY HASH (EXTRACT(HOUR FROM a));
 
499
DROP TABLE t1;
 
500
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
501
CREATE TABLE t1 (a VARCHAR(10))
 
502
PARTITION BY HASH (EXTRACT(HOUR FROM a));
 
503
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
504
CREATE TABLE t1 (a INT)
 
505
PARTITION BY HASH (EXTRACT(HOUR FROM a));
 
506
 
 
507
CREATE TABLE t1 (a TIME)
 
508
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
 
509
DROP TABLE t1;
 
510
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
511
CREATE TABLE t1 (a DATE)
 
512
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
 
513
CREATE TABLE t1 (a DATETIME)
 
514
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
 
515
DROP TABLE t1;
 
516
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
517
CREATE TABLE t1 (a VARCHAR(10))
 
518
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
 
519
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
520
CREATE TABLE t1 (a INT)
 
521
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
 
522
 
 
523
CREATE TABLE t1 (a TIME)
 
524
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
 
525
DROP TABLE t1;
 
526
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
527
CREATE TABLE t1 (a DATE)
 
528
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
 
529
CREATE TABLE t1 (a DATETIME)
 
530
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
 
531
DROP TABLE t1;
 
532
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
533
CREATE TABLE t1 (a VARCHAR(10))
 
534
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
 
535
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
536
CREATE TABLE t1 (a INT)
 
537
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
 
538
 
 
539
CREATE TABLE t1 (a TIME)
 
540
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
 
541
DROP TABLE t1;
 
542
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
543
CREATE TABLE t1 (a DATE)
 
544
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
 
545
CREATE TABLE t1 (a DATETIME)
 
546
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
 
547
DROP TABLE t1;
 
548
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
549
CREATE TABLE t1 (a VARCHAR(10))
 
550
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
 
551
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
552
CREATE TABLE t1 (a INT)
 
553
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
 
554
 
 
555
CREATE TABLE t1 (a TIME)
 
556
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
 
557
DROP TABLE t1;
 
558
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
559
CREATE TABLE t1 (a DATE)
 
560
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
 
561
CREATE TABLE t1 (a DATETIME)
 
562
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
 
563
DROP TABLE t1;
 
564
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
565
CREATE TABLE t1 (a VARCHAR(10))
 
566
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
 
567
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
568
CREATE TABLE t1 (a INT)
 
569
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
 
570
 
 
571
CREATE TABLE t1 (a TIME)
 
572
PARTITION BY HASH (EXTRACT(SECOND FROM a));
 
573
DROP TABLE t1;
 
574
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
575
CREATE TABLE t1 (a DATE)
 
576
PARTITION BY HASH (EXTRACT(SECOND FROM a));
 
577
CREATE TABLE t1 (a DATETIME)
 
578
PARTITION BY HASH (EXTRACT(SECOND FROM a));
 
579
DROP TABLE t1;
 
580
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
581
CREATE TABLE t1 (a VARCHAR(10))
 
582
PARTITION BY HASH (EXTRACT(SECOND FROM a));
 
583
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
584
CREATE TABLE t1 (a INT)
 
585
PARTITION BY HASH (EXTRACT(SECOND FROM a));
 
586
 
 
587
CREATE TABLE t1 (a TIME)
 
588
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
 
589
DROP TABLE t1;
 
590
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
591
CREATE TABLE t1 (a DATE)
 
592
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
 
593
CREATE TABLE t1 (a DATETIME)
 
594
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
 
595
DROP TABLE t1;
 
596
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
597
CREATE TABLE t1 (a VARCHAR(10))
 
598
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
 
599
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
600
CREATE TABLE t1 (a INT)
 
601
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
 
602
 
 
603
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
604
CREATE TABLE t1 (a TIME)
 
605
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
 
606
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
607
CREATE TABLE t1 (a DATE)
 
608
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
 
609
CREATE TABLE t1 (a DATETIME)
 
610
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
 
611
DROP TABLE t1;
 
612
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
613
CREATE TABLE t1 (a VARCHAR(10))
 
614
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
 
615
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
616
CREATE TABLE t1 (a INT)
 
617
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
 
618
 
 
619
CREATE TABLE t1 (a TIME)
 
620
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
 
621
DROP TABLE t1;
 
622
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
623
CREATE TABLE t1 (a DATE)
 
624
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
 
625
CREATE TABLE t1 (a DATETIME)
 
626
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
 
627
DROP TABLE t1;
 
628
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
629
CREATE TABLE t1 (a VARCHAR(10))
 
630
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
 
631
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
632
CREATE TABLE t1 (a INT)
 
633
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
 
634
 
 
635
CREATE TABLE t1 (a TIME)
 
636
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
 
637
DROP TABLE t1;
 
638
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
639
CREATE TABLE t1 (a DATE)
 
640
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
 
641
CREATE TABLE t1 (a DATETIME)
 
642
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
 
643
DROP TABLE t1;
 
644
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
645
CREATE TABLE t1 (a VARCHAR(10))
 
646
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
 
647
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
648
CREATE TABLE t1 (a INT)
 
649
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
 
650
 
 
651
CREATE TABLE t1 (a TIME)
 
652
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
 
653
DROP TABLE t1;
 
654
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
655
CREATE TABLE t1 (a DATE)
 
656
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
 
657
CREATE TABLE t1 (a DATETIME)
 
658
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
 
659
DROP TABLE t1;
 
660
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
661
CREATE TABLE t1 (a VARCHAR(10))
 
662
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
 
663
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
664
CREATE TABLE t1 (a INT)
 
665
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
 
666
 
 
667
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
668
CREATE TABLE t1 (a TIME, b DATE)
 
669
PARTITION BY HASH (DATEDIFF(a, b));
 
670
CREATE TABLE t1 (a DATE, b DATETIME)
 
671
PARTITION BY HASH (DATEDIFF(a, b));
 
672
DROP TABLE t1;
 
673
CREATE TABLE t1 (a DATETIME, b DATE)
 
674
PARTITION BY HASH (DATEDIFF(a, b));
 
675
DROP TABLE t1;
 
676
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
677
CREATE TABLE t1 (a DATE, b VARCHAR(10))
 
678
PARTITION BY HASH (DATEDIFF(a, b));
 
679
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
680
CREATE TABLE t1 (a INT, b DATETIME)
 
681
PARTITION BY HASH (DATEDIFF(a, b));
 
682
 
 
683
CREATE TABLE t1 (a TIME)
 
684
PARTITION BY HASH (TIME_TO_SEC(a));
 
685
DROP TABLE t1;
 
686
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
687
CREATE TABLE t1 (a DATE)
 
688
PARTITION BY HASH (TIME_TO_SEC(a));
 
689
CREATE TABLE t1 (a DATETIME)
 
690
PARTITION BY HASH (TIME_TO_SEC(a));
 
691
DROP TABLE t1;
 
692
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
693
CREATE TABLE t1 (a VARCHAR(10))
 
694
PARTITION BY HASH (TIME_TO_SEC(a));
 
695
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
696
CREATE TABLE t1 (a INT)
 
697
PARTITION BY HASH (TIME_TO_SEC(a));
 
698
 
 
699
--echo #
 
700
--echo # Bug#50036: Inconsistent errors when using TIMESTAMP
 
701
--echo #            columns/expressions
 
702
 
 
703
--echo # 1. correct and appropriate errors in light of
 
704
--echo #    the fix for BUG#42849:
 
705
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
706
CREATE TABLE t1 (c TIMESTAMP)
 
707
PARTITION BY RANGE (TO_DAYS(c))
 
708
(PARTITION p0 VALUES LESS THAN (10000),
 
709
 PARTITION p1 VALUES LESS THAN (MAXVALUE));
 
710
CREATE TABLE t2 (c TIMESTAMP);
 
711
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
712
ALTER TABLE t2
 
713
PARTITION BY RANGE (TO_DAYS(c))
 
714
(PARTITION p0 VALUES LESS THAN (10000),
 
715
 PARTITION p1 VALUES LESS THAN (MAXVALUE));
 
716
 
 
717
--error ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD
 
718
CREATE TABLE t1 (c TIMESTAMP)
 
719
PARTITION BY RANGE COLUMNS(c)
 
720
(PARTITION p0 VALUES LESS THAN ('2000-01-01 00:00:00'),
 
721
 PARTITION p1 VALUES LESS THAN (MAXVALUE));
 
722
--error ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD
 
723
ALTER TABLE t2 PARTITION BY RANGE COLUMNS(c)
 
724
(PARTITION p0 VALUES LESS THAN ('2000-01-01 00:00:00'),
 
725
 PARTITION p1 VALUES LESS THAN (MAXVALUE));
 
726
DROP TABLE t2;
 
727
 
 
728
--echo # 2. These errors where questionable before the fix:
 
729
 
 
730
--echo # VALUES clause are checked first, clearified the error message.
 
731
--error ER_VALUES_IS_NOT_INT_TYPE_ERROR
 
732
CREATE TABLE t1 (c TIMESTAMP)
 
733
PARTITION BY RANGE (c)
 
734
(PARTITION p0 VALUES LESS THAN ('2000-01-01 00:00:00'),
 
735
 PARTITION p1 VALUES LESS THAN (MAXVALUE));
 
736
 
 
737
--echo # TIMESTAMP is not INT (e.g. UNIX_TIMESTAMP).
 
738
--error ER_VALUES_IS_NOT_INT_TYPE_ERROR
 
739
CREATE TABLE t1 (c TIMESTAMP)
 
740
PARTITION BY RANGE (UNIX_TIMESTAMP(c))
 
741
(PARTITION p0 VALUES LESS THAN ('2000-01-01 00:00:00'),
 
742
 PARTITION p1 VALUES LESS THAN (MAXVALUE));
 
743
 
 
744
CREATE TABLE t1 (c TIMESTAMP)
 
745
PARTITION BY RANGE (UNIX_TIMESTAMP(c))
 
746
(PARTITION p0 VALUES LESS THAN (UNIX_TIMESTAMP('2000-01-01 00:00:00')),
 
747
 PARTITION p1 VALUES LESS THAN (MAXVALUE));
 
748
DROP TABLE t1;
 
749
 
 
750
--echo # Changed error from ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR
 
751
--error ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD
 
752
CREATE TABLE t1 (c TIMESTAMP)
 
753
PARTITION BY HASH (c) PARTITIONS 4;
 
754
 
 
755
--echo # Moved to partition_myisam, since it was MyISAM specific
 
756
--echo # Added test with existing TIMESTAMP partitioning (when it was allowed).
 
757
 
 
758
--echo #
 
759
--echo # Bug#49477: Assertion `0' failed in ha_partition.cc:5530
 
760
--echo # with temporary table and partitions
 
761
--echo #
 
762
CREATE TABLE t1 (a INT) PARTITION BY HASH(a);
 
763
--error ER_PARTITION_NO_TEMPORARY
 
764
CREATE TEMPORARY TABLE tmp_t1 LIKE t1;
 
765
DROP TABLE t1;
 
766
--echo #
 
767
--echo # Bug#42954: SQL MODE 'NO_DIR_IN_CREATE' does not work with
 
768
--echo #            subpartitions
 
769
SET @org_mode=@@sql_mode;
 
770
SET @@sql_mode='NO_DIR_IN_CREATE';
 
771
SELECT @@sql_mode;
 
772
CREATE TABLE t1 (id INT, purchased DATE)
 
773
PARTITION BY RANGE(YEAR(purchased))
 
774
SUBPARTITION BY HASH(TO_DAYS(purchased))
 
775
(PARTITION p0 VALUES LESS THAN MAXVALUE
 
776
  DATA DIRECTORY = '/tmp/not-existing' 
 
777
  INDEX DIRECTORY = '/tmp/not-existing');
 
778
--replace_result MyISAM <curr_engine> InnoDB <curr_engine>
 
779
SHOW CREATE TABLE t1;
 
780
DROP TABLE t1;
 
781
CREATE TABLE t1 (id INT, purchased DATE)
 
782
PARTITION BY RANGE(YEAR(purchased))
 
783
SUBPARTITION BY HASH(TO_DAYS(purchased)) SUBPARTITIONS 2
 
784
(PARTITION p0 VALUES LESS THAN MAXVALUE
 
785
 (SUBPARTITION sp0
 
786
   DATA DIRECTORY = '/tmp/not-existing' 
 
787
   INDEX DIRECTORY = '/tmp/not-existing',
 
788
  SUBPARTITION sp1));
 
789
--replace_result MyISAM <curr_engine> InnoDB <curr_engine>
 
790
SHOW CREATE TABLE t1;
 
791
DROP TABLE t1;
 
792
CREATE TABLE t1 (id INT, purchased DATE)
 
793
PARTITION BY RANGE(YEAR(purchased))
 
794
(PARTITION p0 VALUES LESS THAN MAXVALUE
 
795
  DATA DIRECTORY = '/tmp/not-existing' 
 
796
  INDEX DIRECTORY = '/tmp/not-existing');
 
797
--replace_result MyISAM <curr_engine> InnoDB <curr_engine>
 
798
SHOW CREATE TABLE t1;
 
799
DROP TABLE t1;
 
800
SET @@sql_mode= @org_mode;
 
801
 
 
802
#
 
803
# Bug#38719: Partitioning returns a different error code for a
 
804
# duplicate key error
 
805
CREATE TABLE t1 (a INTEGER NOT NULL, PRIMARY KEY (a));
 
806
-- error ER_DUP_ENTRY
 
807
INSERT INTO t1 VALUES (1),(1);
 
808
DROP TABLE t1;
 
809
CREATE TABLE t1 (a INTEGER NOT NULL, PRIMARY KEY (a))
 
810
PARTITION BY KEY (a) PARTITIONS 2;
 
811
-- error ER_DUP_ENTRY
 
812
INSERT INTO t1 VALUES (1),(1);
 
813
DROP TABLE t1;
 
814
 
 
815
#
 
816
# Bug 29368:
 
817
# Incorrect error, 1467, for syntax error when creating partition
 
818
--error ER_PARTITION_REQUIRES_VALUES_ERROR
 
819
CREATE TABLE t1 (
 
820
  a int
 
821
)
 
822
PARTITION BY RANGE (a)
 
823
(
 
824
  PARTITION p0 VALUES LESS THAN (1),
 
825
  PARTITION p1 VALU ES LESS THAN (2)
 
826
);
 
827
 
 
828
#
 
829
# Partition by key stand-alone error
 
830
#
 
831
--error ER_PARSE_ERROR
 
832
partition by list (a)
 
833
partitions 3
 
834
(partition x1 values in (1,2,9,4) tablespace ts1,
 
835
 partition x2 values in (3, 11, 5, 7) tablespace ts2,
 
836
 partition x3 values in (16, 8, 5+19, 70-43) tablespace ts3);
 
837
 
 
838
#
 
839
# Partition by key list, number of partitions defined, no partition defined
 
840
#
 
841
--error ER_PARTITIONS_MUST_BE_DEFINED_ERROR
 
842
CREATE TABLE t1 (
 
843
a int not null,
 
844
b int not null,
 
845
c int not null,
 
846
primary key(a,b))
 
847
partition by list (a)
 
848
partitions 2;
 
849
 
 
850
#
 
851
# Partition by key list, wrong result type
 
852
#
 
853
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
 
854
CREATE TABLE t1 (
 
855
a int not null,
 
856
b int not null,
 
857
c int not null,
 
858
primary key(a,b))
 
859
partition by list (sin(a))
 
860
partitions 3
 
861
(partition x1 values in (1,2,9,4) tablespace ts1,
 
862
 partition x2 values in (3, 11, 5, 7) tablespace ts2,
 
863
 partition x3 values in (16, 8, 5+19, 70-43) tablespace ts3);
 
864
 
 
865
#
 
866
# Partition by key, partition function not allowed
 
867
#
 
868
--error ER_PARSE_ERROR
 
869
CREATE TABLE t1 (
 
870
a int not null,
 
871
b int not null,
 
872
c int not null,
 
873
primary key(a,b))
 
874
partition by key (a+2)
 
875
partitions 3
 
876
(partition x1 tablespace ts1,
 
877
 partition x2 tablespace ts2,
 
878
 partition x3 tablespace ts3);
 
879
 
 
880
#
 
881
# Partition by key, no partition name
 
882
#
 
883
--error ER_PARSE_ERROR
 
884
CREATE TABLE t1 (
 
885
a int not null,
 
886
b int not null,
 
887
c int not null,
 
888
primary key(a,b))
 
889
partition by key (a)
 
890
partitions 3
 
891
(partition tablespace ts1,
 
892
 partition x2 tablespace ts2,
 
893
 partition x3 tablespace ts3);
 
894
 
 
895
#
 
896
# Partition by range columns, invalid field in field list
 
897
#
 
898
--error ER_FIELD_NOT_FOUND_PART_ERROR
 
899
CREATE TABLE t1 (
 
900
a int not null,
 
901
b int not null,
 
902
c int not null,
 
903
primary key(a,b))
 
904
partition by range columns (a,d)
 
905
(partition x1 VALUES LESS THAN (1,1),
 
906
 partition x2 VALUES LESS THAN (2,2),
 
907
 partition x3 VALUES LESS THAN (3,3));
 
908
 
 
909
let $MYSQLD_DATADIR= `select @@datadir`;
 
910
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
911
 
 
912
#
 
913
# Partition by key, invalid field in field list
 
914
#
 
915
--error ER_FIELD_NOT_FOUND_PART_ERROR
 
916
CREATE TABLE t1 (
 
917
a int not null,
 
918
b int not null,
 
919
c int not null,
 
920
primary key(a,b))
 
921
partition by key (a,d)
 
922
partitions 3
 
923
(partition x1 tablespace ts1,
 
924
 partition x2 tablespace ts2,
 
925
 partition x3 tablespace ts3);
 
926
 
 
927
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
928
#
 
929
# Partition by hash, invalid field in function
 
930
#
 
931
--error ER_BAD_FIELD_ERROR
 
932
CREATE TABLE t1 (
 
933
a int not null,
 
934
b int not null,
 
935
c int not null,
 
936
primary key(a,b))
 
937
partition by hash (a + d)
 
938
partitions 3
 
939
(partition x1 tablespace ts1,
 
940
 partition x2 tablespace ts2,
 
941
 partition x3 tablespace ts3);
 
942
 
 
943
#
 
944
# Partition by hash, invalid result type
 
945
#
 
946
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
 
947
CREATE TABLE t1 (
 
948
a int not null,
 
949
b int not null,
 
950
c int not null,
 
951
primary key(a,b))
 
952
partition by hash (sin(a))
 
953
partitions 3
 
954
(partition x1 tablespace ts1,
 
955
 partition x2 tablespace ts2,
 
956
 partition x3 tablespace ts3);
 
957
 
 
958
#
 
959
# Partition by key specified 3 partitions but only defined 2 => error
 
960
#
 
961
--error ER_PARSE_ERROR
 
962
CREATE TABLE t1 (
 
963
a int not null,
 
964
b int not null,
 
965
c int not null,
 
966
primary key(a,b))
 
967
partition by key (a)
 
968
partitions 3
 
969
(partition x1, partition x2);
 
970
 
 
971
#
 
972
# Partition by hash, random function
 
973
#
 
974
--error ER_PARSE_ERROR
 
975
CREATE TABLE t1 (
 
976
a int not null,
 
977
b int not null,
 
978
c int not null,
 
979
primary key(a,b))
 
980
partition by hash (rand(a))
 
981
partitions 2
 
982
(partition x1, partition x2);
 
983
 
 
984
#
 
985
# Partition by range, random function
 
986
#
 
987
--error ER_PARSE_ERROR
 
988
CREATE TABLE t1 (
 
989
a int not null,
 
990
b int not null,
 
991
c int not null,
 
992
primary key(a,b))
 
993
partition by range (rand(a))
 
994
partitions 2
 
995
(partition x1 values less than (0), partition x2 values less than (2));
 
996
 
 
997
#
 
998
# Partition by list, random function
 
999
#
 
1000
--error ER_PARSE_ERROR
 
1001
CREATE TABLE t1 (
 
1002
a int not null,
 
1003
b int not null,
 
1004
c int not null,
 
1005
primary key(a,b))
 
1006
partition by list (rand(a))
 
1007
partitions 2
 
1008
(partition x1 values in (1), partition x2 values in (2));
 
1009
 
 
1010
#
 
1011
# Partition by hash, values less than error
 
1012
#
 
1013
--error ER_PARTITION_WRONG_VALUES_ERROR
 
1014
CREATE TABLE t1 (
 
1015
a int not null,
 
1016
b int not null,
 
1017
c int not null,
 
1018
primary key(a,b))
 
1019
partition by hash (a)
 
1020
partitions 2
 
1021
(partition x1 values less than (4),
 
1022
 partition x2 values less than (5));
 
1023
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
1024
 
 
1025
#
 
1026
# Partition by hash, values in error
 
1027
#
 
1028
--error ER_PARTITION_WRONG_VALUES_ERROR
 
1029
CREATE TABLE t1 (
 
1030
a int not null,
 
1031
b int not null,
 
1032
c int not null,
 
1033
primary key(a,b))
 
1034
partition by hash (a)
 
1035
partitions 2
 
1036
(partition x1 values in (4),
 
1037
 partition x2 values in (5));
 
1038
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
1039
 
 
1040
#
 
1041
# Partition by hash, values in error
 
1042
#
 
1043
--error ER_PARTITION_WRONG_VALUES_ERROR
 
1044
CREATE TABLE t1 (
 
1045
a int not null,
 
1046
b int not null,
 
1047
c int not null,
 
1048
primary key(a,b))
 
1049
partition by hash (a)
 
1050
partitions 2
 
1051
(partition x1 values in (4,6),
 
1052
 partition x2 values in (5,7));
 
1053
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
1054
 
 
1055
#
 
1056
# Subpartition by key, no partitions defined, single field
 
1057
#
 
1058
--error ER_SUBPARTITION_ERROR
 
1059
CREATE TABLE t1 (
 
1060
a int not null,
 
1061
b int not null,
 
1062
c int not null,
 
1063
primary key (a,b))
 
1064
partition by key (a)
 
1065
subpartition by key (b);
 
1066
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
1067
 
 
1068
#
 
1069
# Subpartition by key, no partitions defined, list of fields
 
1070
#
 
1071
--error ER_SUBPARTITION_ERROR
 
1072
CREATE TABLE t1 (
 
1073
a int not null,
 
1074
b int not null,
 
1075
c int not null,
 
1076
primary key (a,b))
 
1077
partition by key (a)
 
1078
subpartition by key (a, b);
 
1079
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
1080
 
 
1081
#
 
1082
# Subpartition by hash, no partitions defined
 
1083
#
 
1084
--error ER_SUBPARTITION_ERROR
 
1085
CREATE TABLE t1 (
 
1086
a int not null,
 
1087
b int not null,
 
1088
c int not null,
 
1089
primary key (a,b))
 
1090
partition by key (a)
 
1091
subpartition by hash (a+b);
 
1092
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
1093
 
 
1094
#
 
1095
# Subpartition by key, no partitions defined, single field
 
1096
#
 
1097
--error ER_SUBPARTITION_ERROR
 
1098
CREATE TABLE t1 (
 
1099
a int not null,
 
1100
b int not null,
 
1101
c int not null,
 
1102
primary key (a,b))
 
1103
partition by key (a)
 
1104
subpartition by key (b);
 
1105
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
1106
 
 
1107
#
 
1108
# Subpartition by key, no partitions defined, list of fields
 
1109
#
 
1110
--error ER_SUBPARTITION_ERROR
 
1111
CREATE TABLE t1 (
 
1112
a int not null,
 
1113
b int not null,
 
1114
c int not null,
 
1115
primary key (a,b))
 
1116
partition by key (a)
 
1117
subpartition by key (a, b);
 
1118
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
1119
 
 
1120
#
 
1121
# Subpartition by hash, no partitions defined
 
1122
#
 
1123
--error ER_SUBPARTITION_ERROR
 
1124
CREATE TABLE t1 (
 
1125
a int not null,
 
1126
b int not null,
 
1127
c int not null,
 
1128
primary key (a,b))
 
1129
partition by key (a)
 
1130
subpartition by hash (a+b);
 
1131
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
1132
 
 
1133
#
 
1134
# Subpartition by hash, no partitions defined, wrong subpartition function
 
1135
#
 
1136
--error ER_PARSE_ERROR
 
1137
CREATE TABLE t1 (
 
1138
a int not null,
 
1139
b int not null,
 
1140
c int not null,
 
1141
primary key (a,b))
 
1142
partition by key (a)
 
1143
subpartition by hash (rand(a+b));
 
1144
 
 
1145
#
 
1146
# Subpartition by hash, wrong subpartition function
 
1147
#
 
1148
--error ER_SUBPARTITION_ERROR
 
1149
CREATE TABLE t1 (
 
1150
a int not null,
 
1151
b int not null,
 
1152
c int not null,
 
1153
primary key (a,b))
 
1154
partition by key (a)
 
1155
subpartition by hash (sin(a+b))
 
1156
(partition x1 (subpartition x11, subpartition x12),
 
1157
 partition x2 (subpartition x21, subpartition x22));
 
1158
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
1159
 
 
1160
#
 
1161
# Subpartition by hash, no partitions defined, wrong subpartition function
 
1162
#
 
1163
--error ER_PARSE_ERROR
 
1164
CREATE TABLE t1 (
 
1165
a int not null,
 
1166
b int not null,
 
1167
c int not null,
 
1168
primary key (a,b))
 
1169
partition by range (a)
 
1170
subpartition by key (a+b)
 
1171
(partition x1 values less than (1) (subpartition x11, subpartition x12),
 
1172
 partition x2 values less than (2) (subpartition x21, subpartition x22));
 
1173
 
 
1174
#
 
1175
# Subpartition by hash, no partitions defined, wrong subpartition function
 
1176
#
 
1177
--error ER_FIELD_NOT_FOUND_PART_ERROR
 
1178
CREATE TABLE t1 (
 
1179
a int not null,
 
1180
b int not null,
 
1181
c int not null,
 
1182
primary key (a,b))
 
1183
partition by range (a)
 
1184
subpartition by key (a,d)
 
1185
(partition x1 values less than (1) (subpartition x11, subpartition x12),
 
1186
 partition x2 values less than (2) (subpartition x21, subpartition x22));
 
1187
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
1188
 
 
1189
#
 
1190
# Subpartition by hash, no partitions defined, wrong subpartition function
 
1191
#
 
1192
--error ER_SUBPARTITION_ERROR
 
1193
CREATE TABLE t1 (
 
1194
a int not null,
 
1195
b int not null,
 
1196
c int not null,
 
1197
primary key (a,b))
 
1198
partition by key (a)
 
1199
subpartition by hash (3+4);
 
1200
 
 
1201
#
 
1202
# Subpartition by hash, no partitions defined, wrong subpartition function
 
1203
#
 
1204
--error ER_BAD_FIELD_ERROR
 
1205
CREATE TABLE t1 (
 
1206
a int not null,
 
1207
b int not null,
 
1208
c int not null,
 
1209
primary key (a,b))
 
1210
partition by range (a)
 
1211
subpartition by hash (a+d)
 
1212
(partition x1 values less than (1) (subpartition x11, subpartition x12),
 
1213
 partition x2 values less than (2) (subpartition x21, subpartition x22));
 
1214
 
 
1215
#
 
1216
# Partition by range, no partition => error
 
1217
#
 
1218
--error ER_PARTITIONS_MUST_BE_DEFINED_ERROR
 
1219
CREATE TABLE t1 (
 
1220
a int not null,
 
1221
b int not null,
 
1222
c int not null,
 
1223
primary key(a,b))
 
1224
partition by range (a);
 
1225
select load_file('$MYSQLD_DATADIR/test/t1.par');
 
1226
 
 
1227
#
 
1228
# Partition by range, invalid field in function
 
1229
#
 
1230
--error ER_BAD_FIELD_ERROR
 
1231
CREATE TABLE t1 (
 
1232
a int not null,
 
1233
b int not null,
 
1234
c int not null,
 
1235
primary key(a,b))
 
1236
partition by range (a+d)
 
1237
partitions 2
 
1238
(partition x1 values less than (4) tablespace ts1,
 
1239
 partition x2 values less than (8) tablespace ts2);
 
1240
 
 
1241
#
 
1242
# Partition by range, inconsistent partition function and constants
 
1243
#
 
1244
--error ER_VALUES_IS_NOT_INT_TYPE_ERROR
 
1245
CREATE TABLE t1 (
 
1246
a int not null,
 
1247
b int not null,
 
1248
c int not null,
 
1249
primary key(a,b))
 
1250
partition by range (a)
 
1251
partitions 2
 
1252
(partition x1 values less than (4.0) tablespace ts1,
 
1253
 partition x2 values less than (8) tablespace ts2);
 
1254
 
 
1255
#
 
1256
# Partition by range, constant partition function not allowed
 
1257
#
 
1258
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1259
CREATE TABLE t1 (
 
1260
a int not null,
 
1261
b int not null,
 
1262
c int not null,
 
1263
primary key(a,b))
 
1264
partition by range (3+4)
 
1265
partitions 2
 
1266
(partition x1 values less than (4) tablespace ts1,
 
1267
 partition x2 values less than (8) tablespace ts2);
 
1268
 
 
1269
 
1270
# Partition by range, no values less than definition
 
1271
 
1272
--error ER_PARTITION_REQUIRES_VALUES_ERROR
 
1273
CREATE TABLE t1 ( 
 
1274
a int not null,
 
1275
b int not null,
 
1276
c int not null,
 
1277
primary key(a,b))
 
1278
partition by range (a)
 
1279
partitions 2
 
1280
(partition x1 values less than (4),
 
1281
 partition x2); 
 
1282
 
 
1283
#
 
1284
# Partition by range, no values in definition allowed
 
1285
#
 
1286
--error ER_PARTITION_WRONG_VALUES_ERROR
 
1287
CREATE TABLE t1 (
 
1288
a int not null,
 
1289
b int not null,
 
1290
c int not null,
 
1291
primary key(a,b))
 
1292
partition by range (a)
 
1293
partitions 2
 
1294
(partition x1 values in (4),
 
1295
 partition x2);
 
1296
 
 
1297
#
 
1298
# Partition by range, values in error
 
1299
#
 
1300
--error ER_PARTITION_WRONG_VALUES_ERROR
 
1301
CREATE TABLE t1 (
 
1302
a int not null,
 
1303
b int not null,
 
1304
c int not null,
 
1305
primary key(a,b))
 
1306
partition by range (a)
 
1307
partitions 2
 
1308
(partition x1 values in (4),
 
1309
 partition x2 values less than (5));
 
1310
 
 
1311
#
 
1312
# Partition by range, missing parenthesis
 
1313
#
 
1314
--error ER_PARTITION_WRONG_VALUES_ERROR
 
1315
CREATE TABLE t1 (
 
1316
a int not null,
 
1317
b int not null,
 
1318
c int not null,
 
1319
primary key(a,b))
 
1320
partition by list (a)
 
1321
partitions 2
 
1322
(partition x1 values less than 4,
 
1323
 partition x2 values less than (5));
 
1324
 
 
1325
#
 
1326
# Partition by range, maxvalue in wrong place
 
1327
#
 
1328
--error ER_PARTITION_MAXVALUE_ERROR
 
1329
CREATE TABLE t1 (
 
1330
a int not null,
 
1331
b int not null,
 
1332
c int not null,
 
1333
primary key(a,b))
 
1334
partition by range (a)
 
1335
partitions 2
 
1336
(partition x1 values less than maxvalue,
 
1337
 partition x2 values less than (5));
 
1338
 
 
1339
#
 
1340
# Partition by range, maxvalue in several places
 
1341
#
 
1342
--error ER_PARTITION_MAXVALUE_ERROR
 
1343
CREATE TABLE t1 (
 
1344
a int not null,
 
1345
b int not null,
 
1346
c int not null,
 
1347
primary key(a,b))
 
1348
partition by range (a)
 
1349
partitions 2
 
1350
(partition x1 values less than maxvalue,
 
1351
 partition x2 values less than maxvalue);
 
1352
 
 
1353
#
 
1354
# Partition by range, not increasing ranges
 
1355
#
 
1356
--error ER_RANGE_NOT_INCREASING_ERROR
 
1357
CREATE TABLE t1 (
 
1358
a int not null,
 
1359
b int not null,
 
1360
c int not null,
 
1361
primary key(a,b))
 
1362
partition by range (a)
 
1363
partitions 2
 
1364
(partition x1 values less than (4),
 
1365
 partition x2 values less than (3));
 
1366
 
 
1367
#
 
1368
# Partition by range, wrong result type of partition function
 
1369
#
 
1370
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
 
1371
CREATE TABLE t1 (
 
1372
a int not null,
 
1373
b int not null,
 
1374
c int not null,
 
1375
primary key(a,b))
 
1376
partition by range (sin(a))
 
1377
partitions 2
 
1378
(partition x1 values less than (4),
 
1379
 partition x2 values less than (5));
 
1380
 
 
1381
#
 
1382
# Subpartition by hash, wrong number of subpartitions
 
1383
#
 
1384
--error ER_PARSE_ERROR
 
1385
CREATE TABLE t1 (
 
1386
a int not null,
 
1387
b int not null,
 
1388
c int not null,
 
1389
primary key (a,b))
 
1390
partition by list (a)
 
1391
subpartition by hash (a+b)
 
1392
subpartitions 3
 
1393
( partition x1 values in (1,2,4)
 
1394
  ( subpartition x11 nodegroup 0,
 
1395
    subpartition x12 nodegroup 1),
 
1396
  partition x2 values in (3,5,6)
 
1397
  ( subpartition x21 nodegroup 0,
 
1398
    subpartition x22 nodegroup 1)
 
1399
);
 
1400
 
 
1401
#
 
1402
# Subpartition by hash, wrong number of subpartitions
 
1403
#
 
1404
--error ER_PARSE_ERROR
 
1405
CREATE TABLE t1 (
 
1406
a int not null,
 
1407
b int not null,
 
1408
c int not null,
 
1409
primary key (a,b))
 
1410
partition by list (a)
 
1411
subpartition by hash (a+b)
 
1412
( partition x1 values in (1)
 
1413
  ( subpartition x11 nodegroup 0,
 
1414
    subpartition xextra,
 
1415
    subpartition x12 nodegroup 1),
 
1416
  partition x2 values in (2)
 
1417
  ( subpartition x21 nodegroup 0,
 
1418
    subpartition x22 nodegroup 1)
 
1419
);
 
1420
 
 
1421
#
 
1422
# Subpartition by list => error
 
1423
#
 
1424
--error ER_PARSE_ERROR 
 
1425
CREATE TABLE t1 (
 
1426
a int not null,
 
1427
b int not null,
 
1428
c int not null,
 
1429
primary key (a,b))
 
1430
partition by key (a) 
 
1431
subpartition by list (a+b)
 
1432
( partition x1
 
1433
  ( subpartition x11 engine myisam,
 
1434
    subpartition x12 engine myisam),
 
1435
   partition x2 
 
1436
   ( subpartition x21 engine myisam,
 
1437
     subpartition x22 engine myisam)
 
1438
);
 
1439
 
 
1440
#
 
1441
# Subpartition by list => error
 
1442
#
 
1443
--error ER_PARSE_ERROR
 
1444
CREATE TABLE t1 (
 
1445
a int not null,
 
1446
b int not null,
 
1447
c int not null,
 
1448
primary key (a,b))
 
1449
partition by key (a)
 
1450
subpartition by list (a+b)
 
1451
( partition x1
 
1452
  ( subpartition x11 engine myisam values in (0),
 
1453
    subpartition x12 engine myisam values in (1)),
 
1454
  partition x2
 
1455
  ( subpartition x21 engine myisam values in (0),
 
1456
    subpartition x22 engine myisam values in (1))
 
1457
);
 
1458
 
 
1459
#
 
1460
# Partition by list, no partition => error
 
1461
#
 
1462
--error ER_PARTITIONS_MUST_BE_DEFINED_ERROR
 
1463
CREATE TABLE t1 (
 
1464
a int not null,
 
1465
b int not null,
 
1466
c int not null,
 
1467
primary key(a,b))
 
1468
partition by list (a);
 
1469
 
 
1470
#
 
1471
# Partition by list, constant partition function not allowed
 
1472
#
 
1473
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1474
CREATE TABLE t1 (
 
1475
a int not null,
 
1476
b int not null,
 
1477
c int not null,
 
1478
primary key(a,b))
 
1479
partition by list (3+4)
 
1480
partitions 2 
 
1481
(partition x1 values in (4) tablespace ts1,
 
1482
 partition x2 values in (8) tablespace ts2);
 
1483
 
 
1484
#
 
1485
# Partition by list, invalid field in function
 
1486
#
 
1487
--error ER_BAD_FIELD_ERROR
 
1488
CREATE TABLE t1 (
 
1489
a int not null,
 
1490
b int not null,
 
1491
c int not null,
 
1492
primary key(a,b))
 
1493
partition by list (a+d)
 
1494
partitions 2
 
1495
(partition x1 values in (4) tablespace ts1,
 
1496
 partition x2 values in (8) tablespace ts2);
 
1497
 
 
1498
 
1499
# Partition by list, no values in definition
 
1500
 
1501
--error ER_PARTITION_REQUIRES_VALUES_ERROR
 
1502
CREATE TABLE t1 (
 
1503
a int not null,
 
1504
b int not null,
 
1505
c int not null,
 
1506
primary key(a,b))
 
1507
partition by list (a)
 
1508
partitions 2
 
1509
(partition x1 values in (4),
 
1510
 partition x2);
 
1511
 
 
1512
#
 
1513
# Partition by list, values less than error
 
1514
#
 
1515
--error ER_PARTITION_WRONG_VALUES_ERROR
 
1516
CREATE TABLE t1 (
 
1517
a int not null,
 
1518
b int not null,
 
1519
c int not null,
 
1520
primary key(a,b))
 
1521
partition by list (a)
 
1522
partitions 2
 
1523
(partition x1 values in (4),
 
1524
 partition x2 values less than (5));
 
1525
 
 
1526
#
 
1527
# Partition by list, no values in definition
 
1528
#
 
1529
--error ER_PARTITION_REQUIRES_VALUES_ERROR
 
1530
CREATE TABLE t1 (
 
1531
a int not null,
 
1532
b int not null,
 
1533
c int not null,
 
1534
primary key(a,b))
 
1535
partition by list (a)
 
1536
partitions 2
 
1537
(partition x1 values in (4,6),
 
1538
 partition x2);
 
1539
 
 
1540
#
 
1541
# Partition by list, duplicate values
 
1542
#
 
1543
--error ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR
 
1544
CREATE TABLE t1 (
 
1545
a int not null,
 
1546
b int not null,
 
1547
c int not null,
 
1548
primary key(a,b))
 
1549
partition by list (a)
 
1550
partitions 2
 
1551
(partition x1 values in (4, 12+9),
 
1552
 partition x2 values in (3, 21));
 
1553
 
 
1554
#
 
1555
# Partition by list, wrong constant result type (not INT)
 
1556
#
 
1557
--error ER_VALUES_IS_NOT_INT_TYPE_ERROR
 
1558
CREATE TABLE t1 (
 
1559
a int not null,
 
1560
b int not null,
 
1561
c int not null,
 
1562
primary key(a,b))
 
1563
partition by list (a)
 
1564
partitions 2
 
1565
(partition x1 values in (4.0, 12+8),
 
1566
 partition x2 values in (3, 21));
 
1567
 
 
1568
#
 
1569
# Partition by list, missing parenthesis
 
1570
#
 
1571
--error ER_PARSE_ERROR
 
1572
CREATE TABLE t1 (
 
1573
a int not null,
 
1574
b int not null,
 
1575
c int not null,
 
1576
primary key(a,b))
 
1577
partition by list (a)
 
1578
partitions 2
 
1579
(partition x1 values in 4,
 
1580
 partition x2 values in (5));
 
1581
 
 
1582
#
 
1583
# Bug #13439: Crash when LESS THAN (non-literal)
 
1584
#
 
1585
--error ER_BAD_FIELD_ERROR
 
1586
CREATE TABLE t1 (a int)
 
1587
PARTITION BY RANGE (a)
 
1588
(PARTITION p0 VALUES LESS THAN (x1));
 
1589
 
 
1590
#
 
1591
# No partition for the given value
 
1592
#
 
1593
CREATE TABLE t1(a int)
 
1594
  PARTITION BY RANGE (a) (PARTITION p1 VALUES LESS THAN(5));
 
1595
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
 
1596
insert into t1 values (10);
 
1597
drop table t1;
 
1598
 
 
1599
--error ER_PARTITION_CONST_DOMAIN_ERROR
 
1600
create table t1 (a bigint unsigned)
 
1601
partition by range (a)
 
1602
(partition p0 values less than (-1));
 
1603
#
 
1604
# Bug 18198 Partitions: Verify that erroneus partition functions doesn't work
 
1605
#
 
1606
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
 
1607
create table t1 (v varchar(12))
 
1608
partition by range (ascii(v))
 
1609
(partition p0 values less than (10));
 
1610
#drop table t1;
 
1611
 
 
1612
-- error ER_PARSE_ERROR
 
1613
create table t1 (a int)
 
1614
partition by hash (rand(a));
 
1615
-- error ER_PARSE_ERROR
 
1616
create table t1 (a int)
 
1617
partition by hash(CURTIME() + a);
 
1618
-- error ER_PARSE_ERROR
 
1619
create table t1 (a int)
 
1620
partition by hash (NOW()+a);
 
1621
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
 
1622
create table t1 (a int)
 
1623
partition by hash (extract(hour from convert_tz(a, '+00:00', '+00:00')));
 
1624
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
 
1625
create table t1 (a int)
 
1626
partition by range (a + (select count(*) from t1))
 
1627
(partition p1 values less than (1));
 
1628
-- error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
 
1629
create table t1 (a char(10))
 
1630
partition by hash (extractvalue(a,'a'));
 
1631
 
 
1632
--echo #
 
1633
--echo # Bug #42849: innodb crash with varying time_zone on partitioned
 
1634
--echo #             timestamp primary key
 
1635
--echo #
 
1636
 
 
1637
# A correctly partitioned table to test that trying to repartition it using
 
1638
# timezone-dependent expression will throw an error.
 
1639
CREATE TABLE old (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1640
PARTITION BY RANGE (UNIX_TIMESTAMP(a)) (
 
1641
PARTITION p VALUES LESS THAN (1219089600),
 
1642
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1643
 
 
1644
# Check that allowed arithmetic/math functions involving TIMESTAMP values result
 
1645
# in ER_PARTITION_FUNC_NOT_ALLOWED_ERROR when used as a partitioning function
 
1646
 
 
1647
--error ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD
 
1648
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1649
PARTITION BY RANGE (a) (
 
1650
PARTITION p VALUES LESS THAN (20080819),
 
1651
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1652
 
 
1653
--error ER_FIELD_TYPE_NOT_ALLOWED_AS_PARTITION_FIELD
 
1654
ALTER TABLE old
 
1655
PARTITION BY RANGE (a) (
 
1656
PARTITION p VALUES LESS THAN (20080819),
 
1657
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1658
 
 
1659
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1660
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1661
PARTITION BY RANGE (a+0) (
 
1662
PARTITION p VALUES LESS THAN (20080819),
 
1663
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1664
 
 
1665
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1666
ALTER TABLE old
 
1667
PARTITION BY RANGE (a+0) (
 
1668
PARTITION p VALUES LESS THAN (20080819),
 
1669
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1670
 
 
1671
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1672
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1673
PARTITION BY RANGE (a % 2) (
 
1674
PARTITION p VALUES LESS THAN (20080819),
 
1675
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1676
 
 
1677
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1678
ALTER TABLE old
 
1679
PARTITION BY RANGE (a % 2) (
 
1680
PARTITION p VALUES LESS THAN (20080819),
 
1681
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1682
 
 
1683
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1684
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1685
PARTITION BY RANGE (ABS(a)) (
 
1686
PARTITION p VALUES LESS THAN (20080819),
 
1687
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1688
 
 
1689
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1690
ALTER TABLE old
 
1691
PARTITION BY RANGE (ABS(a)) (
 
1692
PARTITION p VALUES LESS THAN (20080819),
 
1693
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1694
 
 
1695
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1696
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1697
PARTITION BY RANGE (CEILING(a)) (
 
1698
PARTITION p VALUES LESS THAN (20080819),
 
1699
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1700
 
 
1701
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1702
ALTER TABLE old
 
1703
PARTITION BY RANGE (CEILING(a)) (
 
1704
PARTITION p VALUES LESS THAN (20080819),
 
1705
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1706
 
 
1707
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1708
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1709
PARTITION BY RANGE (FLOOR(a)) (
 
1710
PARTITION p VALUES LESS THAN (20080819),
 
1711
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1712
 
 
1713
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1714
ALTER TABLE old
 
1715
PARTITION BY RANGE (FLOOR(a)) (
 
1716
PARTITION p VALUES LESS THAN (20080819),
 
1717
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1718
 
 
1719
# Check that allowed date/time functions involving TIMESTAMP values result
 
1720
# in ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR when used as a partitioning function
 
1721
 
 
1722
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1723
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1724
PARTITION BY RANGE (TO_DAYS(a)) (
 
1725
PARTITION p VALUES LESS THAN (733638),
 
1726
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1727
 
 
1728
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1729
ALTER TABLE old
 
1730
PARTITION BY RANGE (TO_DAYS(a)) (
 
1731
PARTITION p VALUES LESS THAN (733638),
 
1732
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1733
 
 
1734
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1735
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1736
PARTITION BY RANGE (DAYOFYEAR(a)) (
 
1737
PARTITION p VALUES LESS THAN (231),
 
1738
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1739
 
 
1740
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1741
ALTER TABLE old
 
1742
PARTITION BY RANGE (DAYOFYEAR(a)) (
 
1743
PARTITION p VALUES LESS THAN (231),
 
1744
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1745
 
 
1746
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1747
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1748
PARTITION BY RANGE (DAYOFMONTH(a)) (
 
1749
PARTITION p VALUES LESS THAN (19),
 
1750
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1751
 
 
1752
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1753
ALTER TABLE old
 
1754
PARTITION BY RANGE (DAYOFMONTH(a)) (
 
1755
PARTITION p VALUES LESS THAN (19),
 
1756
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1757
 
 
1758
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1759
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1760
PARTITION BY RANGE (DAYOFWEEK(a)) (
 
1761
PARTITION p VALUES LESS THAN (3),
 
1762
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1763
 
 
1764
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1765
ALTER TABLE old
 
1766
PARTITION BY RANGE (DAYOFWEEK(a)) (
 
1767
PARTITION p VALUES LESS THAN (3),
 
1768
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1769
 
 
1770
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1771
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1772
PARTITION BY RANGE (MONTH(a)) (
 
1773
PARTITION p VALUES LESS THAN (8),
 
1774
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1775
 
 
1776
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1777
ALTER TABLE old
 
1778
PARTITION BY RANGE (MONTH(a)) (
 
1779
PARTITION p VALUES LESS THAN (8),
 
1780
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1781
 
 
1782
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1783
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1784
PARTITION BY RANGE (HOUR(a)) (
 
1785
PARTITION p VALUES LESS THAN (17),
 
1786
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1787
 
 
1788
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1789
ALTER TABLE old
 
1790
PARTITION BY RANGE (HOUR(a)) (
 
1791
PARTITION p VALUES LESS THAN (17),
 
1792
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1793
 
 
1794
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1795
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1796
PARTITION BY RANGE (MINUTE(a)) (
 
1797
PARTITION p VALUES LESS THAN (55),
 
1798
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1799
 
 
1800
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1801
ALTER TABLE old
 
1802
PARTITION BY RANGE (MINUTE(a)) (
 
1803
PARTITION p VALUES LESS THAN (55),
 
1804
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1805
 
 
1806
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1807
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1808
PARTITION BY RANGE (QUARTER(a)) (
 
1809
PARTITION p VALUES LESS THAN (3),
 
1810
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1811
 
 
1812
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1813
ALTER TABLE old
 
1814
PARTITION BY RANGE (QUARTER(a)) (
 
1815
PARTITION p VALUES LESS THAN (3),
 
1816
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1817
 
 
1818
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1819
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1820
PARTITION BY RANGE (SECOND(a)) (
 
1821
PARTITION p VALUES LESS THAN (7),
 
1822
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1823
 
 
1824
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1825
ALTER TABLE old
 
1826
PARTITION BY RANGE (SECOND(a)) (
 
1827
PARTITION p VALUES LESS THAN (7),
 
1828
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1829
 
 
1830
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1831
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1832
PARTITION BY RANGE (YEARWEEK(a)) (
 
1833
PARTITION p VALUES LESS THAN (200833),
 
1834
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1835
 
 
1836
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1837
ALTER TABLE old
 
1838
PARTITION BY RANGE (YEARWEEK(a)) (
 
1839
PARTITION p VALUES LESS THAN (200833),
 
1840
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1841
 
 
1842
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1843
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1844
PARTITION BY RANGE (YEAR(a)) (
 
1845
PARTITION p VALUES LESS THAN (2008),
 
1846
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1847
 
 
1848
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1849
ALTER TABLE old
 
1850
PARTITION BY RANGE (YEAR(a)) (
 
1851
PARTITION p VALUES LESS THAN (2008),
 
1852
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1853
 
 
1854
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1855
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1856
PARTITION BY RANGE (WEEKDAY(a)) (
 
1857
PARTITION p VALUES LESS THAN (3),
 
1858
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1859
 
 
1860
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1861
ALTER TABLE old
 
1862
PARTITION BY RANGE (WEEKDAY(a)) (
 
1863
PARTITION p VALUES LESS THAN (3),
 
1864
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1865
 
 
1866
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1867
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1868
PARTITION BY RANGE (TIME_TO_SEC(a)) (
 
1869
PARTITION p VALUES LESS THAN (64507),
 
1870
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1871
 
 
1872
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1873
ALTER TABLE old
 
1874
PARTITION BY RANGE (TIME_TO_SEC(a)) (
 
1875
PARTITION p VALUES LESS THAN (64507),
 
1876
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1877
 
 
1878
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1879
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1880
PARTITION BY RANGE (EXTRACT(DAY FROM a)) (
 
1881
PARTITION p VALUES LESS THAN (18),
 
1882
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1883
 
 
1884
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1885
ALTER TABLE old
 
1886
PARTITION BY RANGE (EXTRACT(DAY FROM a)) (
 
1887
PARTITION p VALUES LESS THAN (18),
 
1888
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1889
 
 
1890
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1891
CREATE TABLE new (a TIMESTAMP NOT NULL, b TIMESTAMP NOT NULL, PRIMARY KEY(a,b))
 
1892
PARTITION BY RANGE (DATEDIFF(a, a)) (
 
1893
PARTITION p VALUES LESS THAN (18),
 
1894
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1895
 
 
1896
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1897
ALTER TABLE old
 
1898
PARTITION BY RANGE (DATEDIFF(a, a)) (
 
1899
PARTITION p VALUES LESS THAN (18),
 
1900
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1901
 
 
1902
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1903
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1904
PARTITION BY RANGE (YEAR(a + 0)) (
 
1905
PARTITION p VALUES LESS THAN (2008),
 
1906
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1907
 
 
1908
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1909
ALTER TABLE old
 
1910
PARTITION BY RANGE (YEAR(a + 0)) (
 
1911
PARTITION p VALUES LESS THAN (2008),
 
1912
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1913
 
 
1914
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1915
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1916
PARTITION BY RANGE (TO_DAYS(a + '2008-01-01')) (
 
1917
PARTITION p VALUES LESS THAN (733638),
 
1918
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1919
 
 
1920
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1921
ALTER TABLE old
 
1922
PARTITION BY RANGE (TO_DAYS(a + '2008-01-01')) (
 
1923
PARTITION p VALUES LESS THAN (733638),
 
1924
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1925
 
 
1926
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1927
CREATE TABLE new (a TIMESTAMP NOT NULL PRIMARY KEY)
 
1928
PARTITION BY RANGE (YEAR(a + '2008-01-01')) (
 
1929
PARTITION p VALUES LESS THAN (2008),
 
1930
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1931
 
 
1932
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1933
ALTER TABLE old
 
1934
PARTITION BY RANGE (YEAR(a + '2008-01-01')) (
 
1935
PARTITION p VALUES LESS THAN (2008),
 
1936
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1937
 
 
1938
ALTER TABLE old ADD COLUMN b DATE;
 
1939
 
 
1940
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1941
CREATE TABLE new (a TIMESTAMP, b DATE)
 
1942
PARTITION BY RANGE (YEAR(a + b)) (
 
1943
PARTITION p VALUES LESS THAN (2008),
 
1944
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1945
 
 
1946
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1947
ALTER TABLE old
 
1948
PARTITION BY RANGE (YEAR(a + b)) (
 
1949
PARTITION p VALUES LESS THAN (2008),
 
1950
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1951
 
 
1952
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1953
CREATE TABLE new (a TIMESTAMP, b DATE)
 
1954
PARTITION BY RANGE (TO_DAYS(a + b)) (
 
1955
PARTITION p VALUES LESS THAN (733638),
 
1956
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1957
 
 
1958
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1959
ALTER TABLE old
 
1960
PARTITION BY RANGE (TO_DAYS(a + b)) (
 
1961
PARTITION p VALUES LESS THAN (733638),
 
1962
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1963
 
 
1964
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1965
CREATE TABLE new (a TIMESTAMP, b date)
 
1966
PARTITION BY RANGE (UNIX_TIMESTAMP(a + b)) (
 
1967
PARTITION p VALUES LESS THAN (1219089600),
 
1968
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1969
 
 
1970
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1971
ALTER TABLE old
 
1972
PARTITION BY RANGE (UNIX_TIMESTAMP(a + b)) (
 
1973
PARTITION p VALUES LESS THAN (1219089600),
 
1974
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1975
 
 
1976
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1977
CREATE TABLE new (a TIMESTAMP, b TIMESTAMP)
 
1978
PARTITION BY RANGE (UNIX_TIMESTAMP(a + b)) (
 
1979
PARTITION p VALUES LESS THAN (1219089600),
 
1980
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1981
 
 
1982
ALTER TABLE old MODIFY b TIMESTAMP;
 
1983
 
 
1984
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1985
ALTER TABLE old
 
1986
PARTITION BY RANGE (UNIX_TIMESTAMP(a + b)) (
 
1987
PARTITION p VALUES LESS THAN (1219089600),
 
1988
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
1989
 
 
1990
DROP TABLE old;
 
1991
 
 
1992
--echo #
 
1993
--echo # Bug #56709: Memory leaks at running the 5.1 test suite
 
1994
--echo # 
 
1995
 
 
1996
CREATE TABLE t1 (a TIMESTAMP NOT NULL PRIMARY KEY);
 
1997
 
 
1998
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
 
1999
ALTER TABLE t1
 
2000
PARTITION BY RANGE (EXTRACT(DAY FROM a)) (
 
2001
PARTITION p VALUES LESS THAN (18),
 
2002
PARTITION pmax VALUES LESS THAN MAXVALUE);
 
2003
 
 
2004
DROP TABLE t1;
 
2005
 
 
2006
--echo End of 5.1 tests
 
2007
 
 
2008
CREATE TABLE t1 (a INT)
 
2009
PARTITION BY LIST (a)
 
2010
SUBPARTITION BY HASH (a) SUBPARTITIONS 2
 
2011
(PARTITION p1 VALUES IN (1) COMMENT "Comment in p1"
 
2012
 (SUBPARTITION p1spFirst COMMENT "SubPartition comment in p1spFirst",
 
2013
  SUBPARTITION p1spSecond COMMENT "SubPartition comment in p1spSecond"),
 
2014
 PARTITION p2 VALUES IN (2) COMMENT "Comment in p2"
 
2015
 (SUBPARTITION p2spFirst COMMENT "SubPartition comment in p2spFirst",
 
2016
  SUBPARTITION p2spSecond COMMENT "SubPartition comment in p2spSecond"));
 
2017
SHOW CREATE TABLE t1;
 
2018
SELECT PARTITION_NAME, SUBPARTITION_NAME, PARTITION_COMMENT FROM INFORMATION_SCHEMA.PARTITIONS
 
2019
WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
 
2020
DROP TABLE t1;
 
2021
 
 
2022
CREATE TABLE t1 (a INT)
 
2023
PARTITION BY LIST (a)
 
2024
SUBPARTITION BY HASH (a) SUBPARTITIONS 2
 
2025
(PARTITION p1 VALUES IN (1)
 
2026
 (SUBPARTITION p1spFirst COMMENT "SubPartition comment in p1spFirst",
 
2027
  SUBPARTITION p1spSecond),
 
2028
 PARTITION p2 VALUES IN (2) COMMENT "Comment in p2"
 
2029
 (SUBPARTITION p2spFirst,
 
2030
  SUBPARTITION p2spSecond COMMENT "SubPartition comment in p2spSecond"));
 
2031
SHOW CREATE TABLE t1;
 
2032
SELECT PARTITION_NAME, SUBPARTITION_NAME, PARTITION_COMMENT FROM INFORMATION_SCHEMA.PARTITIONS
 
2033
WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
 
2034
DROP TABLE t1;
 
2035
 
 
2036
CREATE TABLE t1
 
2037
(a INT ,
 
2038
 KEY inx_a (a) )
 
2039
PARTITION BY RANGE (a)
 
2040
SUBPARTITION BY HASH (a) SUBPARTITIONS 2
 
2041
(PARTITION pUpTo10 VALUES LESS THAN (10) COMMENT
 
2042
"This is a long comment (2050 ascii characters)   50 pUpTo10 partition ......80-!.................. 100 ................................................................................................ 200....................................................................................................................................................................................................................................................................................................... 500 ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 1000 ..............1024-|.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 1500 .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. 2000 ......................................2048-|++"
 
2043
 (SUBPARTITION `p-10sp0` ,SUBPARTITION `p-10sp1` ),
 
2044
 PARTITION pMax VALUES LESS THAN MAXVALUE COMMENT
 
2045
"This is a long comment (2050 ascii characters)   50 pMax partition comment .80-!.................. 100 ................................................................................................ 200....................................................................................................................................................................................................................................................................................................... 500 ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 1000 ..............1024-|.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 1500 .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. 2000 ......................................2048-|++"
 
2046
 (SUBPARTITION `pMaxsp0` ,SUBPARTITION `pMaxsp1` ));
 
2047
 
 
2048
SHOW CREATE TABLE t1;
 
2049
SELECT PARTITION_NAME, SUBPARTITION_NAME, PARTITION_COMMENT FROM INFORMATION_SCHEMA.PARTITIONS
 
2050
WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
 
2051
 
 
2052
DROP TABLE t1;