1
################################################################################
2
# inc/partition_engine.inc #
5
# Tests around Create/Alter partitioned tables and storage engine settings #
6
# at different places within the statement. #
7
# This routine is only useful for the partition_<feature>_<engine> tests. #
9
# Note: There were some problems in history. #
10
# It looks like a table holds informations about the storage engine #
12
# "the whole table" -> in statement after column list before partitioning #
13
# a partition -> in statement after definition of partition #
14
# a subpartition -> in statement after definition of subpartition #
15
# If there is a CREATE TABLE statement where not at all of these place #
16
# a storage engine is assigned, the server must decide by itself whic #
17
# storage engine to use. #
19
#------------------------------------------------------------------------------#
20
# Original Author: mleich #
21
# Original Date: 2006-03-05 #
25
################################################################################
28
--echo #========================================================================
29
--echo # Checks where the engine is assigned on all supported (CREATE TABLE
30
--echo # statement) positions + basic operations on the tables
31
--echo # Storage engine mixups are currently (2005-12-23) not supported
32
--echo #========================================================================
34
DROP TABLE IF EXISTS t1;
38
--echo #------------------------------------------------------------------------
39
--echo # 1 Assignment of storage engine just after column list only
40
--echo #------------------------------------------------------------------------
41
eval CREATE TABLE t1 (
44
PARTITION BY HASH(f_int1) PARTITIONS 2;
45
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
46
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
47
--source suite/parts/inc/partition_check.inc
50
--echo #------------------------------------------------------------------------
51
--echo # 2 Assignment of storage engine just after partition or subpartition
53
--echo #------------------------------------------------------------------------
54
eval CREATE TABLE t1 (
57
PARTITION BY HASH(f_int1)
58
( PARTITION part1 STORAGE ENGINE = $engine,
59
PARTITION part2 STORAGE ENGINE = $engine
61
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
62
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
63
--source suite/parts/inc/partition_check.inc
65
eval CREATE TABLE t1 (
68
PARTITION BY RANGE(f_int1)
69
SUBPARTITION BY HASH(f_int1)
70
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
71
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
72
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
73
PARTITION part2 VALUES LESS THAN $MAX_VALUE
74
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
75
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
77
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
78
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
79
--source suite/parts/inc/partition_check.inc
82
--echo #------------------------------------------------------------------------
83
--echo # 3 Some but not all named partitions or subpartitions get a storage
84
--echo # engine assigned
85
--echo #------------------------------------------------------------------------
86
--error ER_MIX_HANDLER_ERROR
87
eval CREATE TABLE t1 (
90
PARTITION BY HASH(f_int1)
91
( PARTITION part1 STORAGE ENGINE = $engine,
94
--error ER_MIX_HANDLER_ERROR
95
eval CREATE TABLE t1 (
98
PARTITION BY HASH(f_int1)
100
PARTITION part2 STORAGE ENGINE = $engine
102
--error ER_MIX_HANDLER_ERROR
103
eval CREATE TABLE t1 (
106
PARTITION BY RANGE(f_int1)
107
SUBPARTITION BY HASH(f_int1)
108
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
109
(SUBPARTITION subpart11,
110
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
111
PARTITION part2 VALUES LESS THAN $MAX_VALUE
112
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
113
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
115
--error ER_MIX_HANDLER_ERROR
116
eval CREATE TABLE t1 (
119
PARTITION BY RANGE(f_int1)
120
SUBPARTITION BY HASH(f_int1)
121
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
122
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
123
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
124
PARTITION part2 VALUES LESS THAN $MAX_VALUE
125
(SUBPARTITION subpart21,
126
SUBPARTITION subpart22 )
128
eval CREATE TABLE t1 (
132
PARTITION BY RANGE(f_int1)
133
SUBPARTITION BY HASH(f_int1)
134
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
135
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
136
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
137
PARTITION part2 VALUES LESS THAN $MAX_VALUE
138
(SUBPARTITION subpart21,
139
SUBPARTITION subpart22 )
141
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
142
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
143
--source suite/parts/inc/partition_check.inc
146
--echo #------------------------------------------------------------------------
147
--echo # 4 Storage engine assignment after partition name + after name of
148
--echo # subpartitions belonging to another partition
149
--echo #------------------------------------------------------------------------
150
--error ER_MIX_HANDLER_ERROR
151
eval CREATE TABLE t1 (
154
PARTITION BY RANGE(f_int1)
155
SUBPARTITION BY HASH(f_int1)
156
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
157
(SUBPARTITION subpart11,
158
SUBPARTITION subpart12),
159
PARTITION part2 VALUES LESS THAN $MAX_VALUE
160
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
161
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
163
eval CREATE TABLE t1 (
167
PARTITION BY RANGE(f_int1)
168
SUBPARTITION BY HASH(f_int1)
169
( PARTITION part1 VALUES LESS THAN ($max_row_div2) ENGINE = $engine
170
(SUBPARTITION subpart11,
171
SUBPARTITION subpart12),
172
PARTITION part2 VALUES LESS THAN $MAX_VALUE
173
(SUBPARTITION subpart21,
174
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
177
eval CREATE TABLE t1 (
180
PARTITION BY RANGE(f_int1)
181
SUBPARTITION BY HASH(f_int1)
182
( PARTITION part1 VALUES LESS THAN ($max_row_div2) ENGINE = $engine
183
(SUBPARTITION subpart11,
184
SUBPARTITION subpart12),
185
PARTITION part2 VALUES LESS THAN $MAX_VALUE
186
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
187
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
189
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
190
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
191
--source suite/parts/inc/partition_check.inc
193
eval CREATE TABLE t1 (
196
PARTITION BY RANGE(f_int1)
197
SUBPARTITION BY HASH(f_int1)
198
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
199
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
200
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
201
PARTITION part2 VALUES LESS THAN $MAX_VALUE ENGINE = $engine
202
(SUBPARTITION subpart21 ENGINE = $engine,
203
SUBPARTITION subpart22)
205
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
206
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
207
--source suite/parts/inc/partition_check.inc
210
--echo #------------------------------------------------------------------------
211
--echo # 5 Precedence of storage engine assignments (if there is any)
212
--echo #------------------------------------------------------------------------
213
--echo # 5.1 Storage engine assignment after column list + after partition
214
--echo # or subpartition name
215
eval CREATE TABLE t1 (
218
PARTITION BY HASH(f_int1)
219
( PARTITION part1 STORAGE ENGINE = $engine,
220
PARTITION part2 STORAGE ENGINE = $engine
222
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
223
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
224
--source suite/parts/inc/partition_check.inc
226
eval CREATE TABLE t1 (
229
PARTITION BY RANGE(f_int1)
230
SUBPARTITION BY HASH(f_int1)
231
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
232
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
233
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
234
PARTITION part2 VALUES LESS THAN $MAX_VALUE
235
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
236
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
238
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
239
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
240
--source suite/parts/inc/partition_check.inc
242
--echo # 6.2 Storage engine assignment after partition name + after
243
--echo # subpartition name
244
--echo # in partition part + in sub partition part
245
eval CREATE TABLE t1 (
248
PARTITION BY RANGE(f_int1)
249
SUBPARTITION BY HASH(f_int1)
250
( PARTITION part1 VALUES LESS THAN ($max_row_div2) STORAGE ENGINE = $engine
251
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
252
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
253
PARTITION part2 VALUES LESS THAN $MAX_VALUE
254
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
255
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
257
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
258
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
259
--source suite/parts/inc/partition_check.inc
262
--echo #------------------------------------------------------------------------
263
--echo # 6 Session default engine differs from engine used within create table
264
--echo #------------------------------------------------------------------------
265
eval SET SESSION storage_engine=$engine_other;
266
# Bug#16775 Partitions: strange effects on subpartitioned tables, mixed storage engines
267
# Bug#15966 Partitions: crash if session default engine <> engine used in create table
268
eval CREATE TABLE t1 (
271
PARTITION BY HASH(f_int1) ( PARTITION part1 ENGINE = $engine);
272
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
273
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
274
--source suite/parts/inc/partition_check.inc
276
# Bug#15966 Partitions: crash if session default engine <> engine used in create table
277
eval CREATE TABLE t1 (
280
PARTITION BY RANGE(f_int1)
281
SUBPARTITION BY HASH(f_int1)
282
( PARTITION part1 VALUES LESS THAN (1000)
283
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
284
SUBPARTITION subpart12 STORAGE ENGINE = $engine));
285
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
286
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
287
--source suite/parts/inc/partition_check.inc
289
eval SET SESSION storage_engine=$engine;