2
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
5
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
8
CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
9
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
10
fkid MEDIUMINT, filler VARCHAR(255),
11
PRIMARY KEY(id)) ENGINE='innodb';
12
CREATE TABLE test.bykey_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
13
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
14
fkid MEDIUMINT, filler VARCHAR(255),
15
PRIMARY KEY(id)) ENGINE='innodb'
16
PARTITION BY KEY(id) partitions 5;
17
CREATE TABLE test.byrange_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
18
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
19
fkid MEDIUMINT, filler VARCHAR(255),
20
PRIMARY KEY(id)) ENGINE='innodb'
21
PARTITION BY RANGE(id)
22
SUBPARTITION BY hash(id) subpartitions 2
23
(PARTITION pa1 values less than (10),
24
PARTITION pa2 values less than (20),
25
PARTITION pa3 values less than (30),
26
PARTITION pa4 values less than (40),
27
PARTITION pa5 values less than (50),
28
PARTITION pa6 values less than (60),
29
PARTITION pa7 values less than (70),
30
PARTITION pa8 values less than (80),
31
PARTITION pa9 values less than (90),
32
PARTITION pa10 values less than (100),
33
PARTITION pa11 values less than MAXVALUE);
34
CREATE PROCEDURE test.proc_norm()
36
DECLARE ins_count INT DEFAULT 1000;
37
DECLARE del_count INT;
38
DECLARE cur_user VARCHAR(255);
39
DECLARE local_uuid VARCHAR(255);
40
DECLARE local_time TIMESTAMP;
41
SET local_time= NOW();
42
SET cur_user= CURRENT_USER();
43
SET local_uuid= UUID();
44
WHILE ins_count > 0 DO
45
INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(),
46
ins_count,'Going to test MBR for MySQL');
47
SET ins_count = ins_count - 1;
49
SELECT MAX(id) FROM test.regular_tbl INTO del_count;
50
WHILE del_count > 0 DO
51
DELETE FROM test.regular_tbl WHERE id = del_count;
52
SET del_count = del_count - 2;
55
CREATE PROCEDURE test.proc_bykey()
57
DECLARE ins_count INT DEFAULT 1000;
58
DECLARE del_count INT;
59
DECLARE cur_user VARCHAR(255);
60
DECLARE local_uuid VARCHAR(255);
61
DECLARE local_time TIMESTAMP;
62
SET local_time= NOW();
63
SET cur_user= CURRENT_USER();
64
SET local_uuid= UUID();
65
WHILE ins_count > 0 DO
66
INSERT INTO test.bykey_tbl VALUES (NULL, NOW(), USER() , UUID(),
67
ins_count,'Going to test MBR for MySQL');
68
SET ins_count = ins_count - 1;
70
SELECT MAX(id) FROM test.bykey_tbl INTO del_count;
71
WHILE del_count > 0 DO
72
DELETE FROM test.bykey_tbl WHERE id = del_count;
73
SET del_count = del_count - 2;
76
CREATE PROCEDURE test.proc_byrange()
78
DECLARE ins_count INT DEFAULT 1000;
79
DECLARE del_count INT;
80
DECLARE cur_user VARCHAR(255);
81
DECLARE local_uuid VARCHAR(255);
82
DECLARE local_time TIMESTAMP;
83
SET local_time= NOW();
84
SET cur_user = CURRENT_USER();
85
SET local_uuid=UUID();
86
WHILE ins_count > 0 DO
87
INSERT INTO test.byrange_tbl VALUES (NULL, NOW(), USER(), UUID(),
88
ins_count,'Going to test MBR for MySQL');
89
SET ins_count = ins_count - 1;
91
SELECT MAX(id) FROM test.byrange_tbl INTO del_count;
92
WHILE del_count > 0 DO
93
DELETE FROM test.byrange_tbl WHERE id = del_count;
94
SET del_count = del_count - 2;
97
CALL test.proc_norm();
98
SELECT count(*) as "Master regular" FROM test.regular_tbl;
100
CALL test.proc_bykey();
101
SELECT count(*) as "Master bykey" FROM test.bykey_tbl;
103
CALL test.proc_byrange();
104
SELECT count(*) as "Master byrange" FROM test.byrange_tbl;
106
show create table test.byrange_tbl;
108
Create Table CREATE TABLE `byrange_tbl` (
109
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
110
`dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
111
`user` char(255) DEFAULT NULL,
113
`fkid` mediumint(9) DEFAULT NULL,
114
`filler` varchar(255) DEFAULT NULL,
116
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=latin1
117
/*!50100 PARTITION BY RANGE (id)
118
SUBPARTITION BY HASH (id)
120
(PARTITION pa1 VALUES LESS THAN (10) ENGINE = InnoDB,
121
PARTITION pa2 VALUES LESS THAN (20) ENGINE = InnoDB,
122
PARTITION pa3 VALUES LESS THAN (30) ENGINE = InnoDB,
123
PARTITION pa4 VALUES LESS THAN (40) ENGINE = InnoDB,
124
PARTITION pa5 VALUES LESS THAN (50) ENGINE = InnoDB,
125
PARTITION pa6 VALUES LESS THAN (60) ENGINE = InnoDB,
126
PARTITION pa7 VALUES LESS THAN (70) ENGINE = InnoDB,
127
PARTITION pa8 VALUES LESS THAN (80) ENGINE = InnoDB,
128
PARTITION pa9 VALUES LESS THAN (90) ENGINE = InnoDB,
129
PARTITION pa10 VALUES LESS THAN (100) ENGINE = InnoDB,
130
PARTITION pa11 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
131
SELECT count(*) "Slave norm" FROM test.regular_tbl;
133
SELECT count(*) "Slave bykey" FROM test.bykey_tbl;
135
SELECT count(*) "Slave byrange" FROM test.byrange_tbl;
137
DROP PROCEDURE test.proc_norm;
138
DROP PROCEDURE test.proc_bykey;
139
DROP PROCEDURE test.proc_byrange;
140
DROP TABLE test.regular_tbl;
141
DROP TABLE test.bykey_tbl;
142
DROP TABLE test.byrange_tbl;