Description:
Records go into the wrong partition when using range partitions. This was partially fixed in a recent patch, but there are still problems with it. I'm including two test cases to show the slightly different behaviour between the two. This is NOT the same bug as bug #16684 or bug #15393. Those bugs are already fixed in this version of mysql.
How to repeat:
Test 1 :
CREATE TABLE partition_test2 (
a int default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
PARTITION BY RANGE(a)
(
PARTITION p1 VALUES LESS THAN (2),
PARTITION p2 VALUES LESS THAN (3),
PARTITION p3 VALUES LESS THAN (4),
PARTITION p4 VALUES LESS THAN (5),
PARTITION p5 VALUES LESS THAN (6),
PARTITION p6 VALUES LESS THAN (7),
PARTITION p7 VALUES LESS THAN (8),
PARTITION p8 VALUES LESS THAN (9),
PARTITION p9 VALUES LESS THAN (10),
PARTITION p10 VALUES LESS THAN (11),
PARTITION p11 VALUES LESS THAN (12),
PARTITION p12 VALUES LESS THAN (13),
PARTITION p13 VALUES LESS THAN (14),
PARTITION p14 VALUES LESS THAN MAXVALUE
);
INSERT INTO partition_test2 VALUES (5);
The record will go into partition 7 instead. This happens every 4th number.
5 into p7
9 into p14
13 into p14
the rest are fine
Second test (just more partitions, but slightly different behaviour)
CREATE TABLE partition_test3 (
a int default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
PARTITION BY RANGE(a)
(
PARTITION p1 VALUES LESS THAN (2),
PARTITION p2 VALUES LESS THAN (3),
PARTITION p3 VALUES LESS THAN (4),
PARTITION p4 VALUES LESS THAN (5),
PARTITION p5 VALUES LESS THAN (6),
PARTITION p6 VALUES LESS THAN (7),
PARTITION p7 VALUES LESS THAN (8),
PARTITION p8 VALUES LESS THAN (9),
PARTITION p9 VALUES LESS THAN (10),
PARTITION p10 VALUES LESS THAN (11),
PARTITION p11 VALUES LESS THAN (12),
PARTITION p12 VALUES LESS THAN (13),
PARTITION p13 VALUES LESS THAN (14),
PARTITION p14 VALUES LESS THAN (15),
PARTITION p15 VALUES LESS THAN (16),
PARTITION p16 VALUES LESS THAN (17),
PARTITION p17 VALUES LESS THAN (18),
PARTITION p18 VALUES LESS THAN (19),
PARTITION p19 VALUES LESS THAN (20),
PARTITION p20 VALUES LESS THAN (21),
PARTITION p21 VALUES LESS THAN (22),
PARTITION p22 VALUES LESS THAN (23),
PARTITION p23 VALUES LESS THAN (24),
PARTITION p24 VALUES LESS THAN (25),
PARTITION p25 VALUES LESS THAN (26),
PARTITION p26 VALUES LESS THAN (27),
PARTITION p27 VALUES LESS THAN (28),
PARTITION p28 VALUES LESS THAN (29),
PARTITION p29 VALUES LESS THAN (30),
PARTITION p30 VALUES LESS THAN (31),
PARTITION p31 VALUES LESS THAN (32),
PARTITION p32 VALUES LESS THAN (33),
PARTITION p33 VALUES LESS THAN (34),
PARTITION p34 VALUES LESS THAN (35),
PARTITION p35 VALUES LESS THAN (36),
PARTITION p36 VALUES LESS THAN (37),
PARTITION p37 VALUES LESS THAN (38),
PARTITION p38 VALUES LESS THAN (39),
PARTITION p39 VALUES LESS THAN MAXVALUE
);
INSERT INTO test_partition3 VALUES (6);
Will go into p9 instead of p6.
In this case the interval is 5 instead of 4
6->p9
11->p19
16->p19
21->p39
26->p29
31->p29
36->p39
Suggested fix:
Records should be going into the proper partition.