summaryrefslogtreecommitdiff
path: root/mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions.test
blob: 9291f38e8dba9e2fb4dfa5ee385ffa5109cd51c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
#######################################
# Author: JBM                         #
# Date: 2006-03-09                    #
# Purpose: To test the replication of #
# Cluster Disk Data using partitions  #
#######################################

--source include/have_ndb.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc

--echo --- Doing pre test cleanup --- 

connection master;
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_query_log


# Start by creating a logfile group
##################################

CREATE LOGFILE GROUP lg1
ADD UNDOFILE 'undofile.dat'
INITIAL_SIZE 16M
UNDO_BUFFER_SIZE = 1M
ENGINE=NDB;

ALTER LOGFILE GROUP lg1
ADD UNDOFILE 'undofile02.dat'
INITIAL_SIZE = 4M
ENGINE=NDB;

###################################################
# Create a tablespace connected to the logfile group
###################################################

CREATE TABLESPACE ts1
ADD DATAFILE 'datafile.dat'
USE LOGFILE GROUP lg1
INITIAL_SIZE 12M
ENGINE NDB;

ALTER TABLESPACE ts1
ADD DATAFILE 'datafile02.dat'
INITIAL_SIZE = 4M
ENGINE=NDB;

#################################################################

--echo --- Start test 2 partition RANGE testing --
--echo --- Do setup --


#################################################
# Requirment: Create table that is partitioned  #
# by range on year i.e. year(t) and replicate   #
# basice operations such at insert, update      #
# delete between 2 different storage engines    #
# Alter table and ensure table is handled       #
# Correctly on the slave                        #
#################################################

CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63), 
                 bc CHAR(63), d DECIMAL(10,4) DEFAULT 0, 
                 f FLOAT DEFAULT 0, total BIGINT UNSIGNED, 
                 y YEAR, t DATE)
                 TABLESPACE ts1 STORAGE DISK
                 ENGINE=NDB
                 PARTITION BY RANGE (YEAR(t)) 
                (PARTITION p0 VALUES LESS THAN (1901), 
                 PARTITION p1 VALUES LESS THAN (1946),  
                 PARTITION p2 VALUES LESS THAN (1966), 
                 PARTITION p3 VALUES LESS THAN (1986), 
                 PARTITION p4 VALUES LESS THAN (2005), 
                 PARTITION p5 VALUES LESS THAN MAXVALUE);

--echo --- Show table on master ---

SHOW CREATE TABLE t1;

--echo --- Show table on slave --

sync_slave_with_master;
SHOW CREATE TABLE t1;

--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---

--source include/rpl_multi_engine3.inc

--echo --- Check that simple Alter statements are replicated correctly ---

ALTER TABLE t1 MODIFY vc VARCHAR(255);

--echo --- Show the new improved table on the master ---

SHOW CREATE TABLE t1;

--echo --- Make sure that our tables on slave are still same engine ---
--echo --- and that the alter statements replicated correctly ---

sync_slave_with_master;
SHOW CREATE TABLE t1;

--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---
--enable_query_log

--source include/rpl_multi_engine3.inc

--echo --- End test 2 partition RANGE testing ---
--echo --- Do Cleanup ---

DROP TABLE IF EXISTS t1;

########################################################

--echo --- Start test 3 partition LIST testing ---
--echo --- Do setup ---
#################################################


CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63), 
                 bc CHAR(63), d DECIMAL(10,4) DEFAULT 0, 
                 f FLOAT DEFAULT 0, total BIGINT UNSIGNED, 
                 y YEAR, t DATE)
                 TABLESPACE ts1 STORAGE DISK
                 ENGINE=NDB
                 PARTITION BY LIST(id) 
                (PARTITION p0 VALUES IN (2, 4), 
                 PARTITION p1 VALUES IN (42, 142));

--echo --- Test 3 Alter to add partition ---

ALTER TABLE t1 ADD PARTITION (PARTITION p2 VALUES IN (412));

--echo --- Show table on master ---

SHOW CREATE TABLE t1;

--echo --- Show table on slave ---

sync_slave_with_master;
SHOW CREATE TABLE t1;

--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---

--source include/rpl_multi_engine3.inc

--echo --- Check that simple Alter statements are replicated correctly ---

ALTER TABLE t1 MODIFY vc VARCHAR(255);

--echo --- Show the new improved table on the master ---

SHOW CREATE TABLE t1;

--echo --- Make sure that our tables on slave are still same engine ---
--echo --- and that the alter statements replicated correctly ---

sync_slave_with_master;
SHOW CREATE TABLE t1;

--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---

--source include/rpl_multi_engine3.inc

--echo --- End test 3 partition LIST testing ---
--echo --- Do Cleanup --

DROP TABLE IF EXISTS t1;

########################################################

--echo --- Start test 4 partition HASH testing ---
--echo --- Do setup ---
#################################################


CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63), 
                 bc CHAR(63), d DECIMAL(10,4) DEFAULT 0, 
                 f FLOAT DEFAULT 0, total BIGINT UNSIGNED, 
                 y YEAR, t DATE)
                 TABLESPACE ts1 STORAGE DISK
                 ENGINE=NDB
                 PARTITION BY HASH( YEAR(t) ) 
                 PARTITIONS 4; 

--echo --- show that tables have been created correctly ---

SHOW CREATE TABLE t1;
sync_slave_with_master;
SHOW CREATE TABLE t1;

--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---

--source include/rpl_multi_engine3.inc

--echo --- Check that simple Alter statements are replicated correctly ---

ALTER TABLE t1 MODIFY vc VARCHAR(255);

--echo --- Show the new improved table on the master ---

SHOW CREATE TABLE t1;

--echo --- Make sure that our tables on slave are still same engine ---
--echo --- and that the alter statements replicated correctly ---

sync_slave_with_master;
SHOW CREATE TABLE t1;

--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---

--source include/rpl_multi_engine3.inc

--echo --- End test 4 partition HASH testing ---
--echo --- Do Cleanup --

DROP TABLE IF EXISTS t1;

########################################################

--echo --- Start test 5 partition by key testing ---
--echo --- Create Table Section ---

#################################################

CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(63), 
                 bc CHAR(63), d DECIMAL(10,4) DEFAULT 0, 
                 f FLOAT DEFAULT 0, total BIGINT UNSIGNED, 
                 y YEAR, t DATE,PRIMARY KEY(id))
                 TABLESPACE ts1 STORAGE DISK
                 ENGINE=NDB
                 PARTITION BY KEY() 
                 PARTITIONS 4;

--echo --- Show that tables on master are ndbcluster tables ---

SHOW CREATE TABLE t1;

--echo --- Show that tables on slave ---

sync_slave_with_master;
SHOW CREATE TABLE t1;

--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---

--source include/rpl_multi_engine3.inc

# Okay lets see how it holds up to table changes
--echo --- Check that simple Alter statements are replicated correctly ---

ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(id, total);

--echo --- Show the new improved table on the master ---

SHOW CREATE TABLE t1;

--echo --- Make sure that our tables on slave are still right type ---
--echo --- and that the alter statements replicated correctly ---

sync_slave_with_master;
SHOW CREATE TABLE t1;

--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---

--source include/rpl_multi_engine3.inc

--echo --- Check that simple Alter statements are replicated correctly ---

ALTER TABLE t1 MODIFY vc VARCHAR(255);

--echo --- Show the new improved table on the master ---

SHOW CREATE TABLE t1;

--echo --- Make sure that our tables on slave are still same engine ---
--echo --- and that the alter statements replicated correctly ---

sync_slave_with_master;
SHOW CREATE TABLE t1;

--echo --- Perform basic operation on master ---
--echo --- and ensure replicated correctly ---

--source include/rpl_multi_engine3.inc

--echo --- End test 5 key partition testing ---
--echo --- Do Cleanup ---

DROP TABLE IF EXISTS t1;
alter tablespace ts1
drop datafile 'datafile.dat'
engine=ndb;
alter tablespace ts1
drop datafile 'datafile02.dat'
engine=ndb;
DROP TABLESPACE ts1 ENGINE=NDB;
DROP LOGFILE GROUP lg1 ENGINE=NDB;
--sync_slave_with_master

# End of 5.1 test case