Fix for bug#16901 Partitions: crash, SELECT, column of part. function=first column of primary key

  use part_info->no_subparts to calculate partition range in case of subpartitions
parent e7c73bb7
...@@ -278,3 +278,14 @@ partition p1 values in (14) ...@@ -278,3 +278,14 @@ partition p1 values in (14)
insert into t1 values (10,1); insert into t1 values (10,1);
ERROR HY000: Table has no partition for value 11 ERROR HY000: Table has no partition for value 11
drop table t1; drop table t1;
create table t1 (f1 integer,f2 integer, f3 varchar(10), primary key(f1,f2))
partition by range(f1) subpartition by hash(f2) subpartitions 2
(partition p1 values less than (0),
partition p2 values less than (2),
partition p3 values less than (2147483647));
insert into t1 values(10,10,'10');
insert into t1 values(2,2,'2');
select * from t1 where f1 = 2;
f1 f2 f3
2 2 2
drop table t1;
...@@ -353,3 +353,18 @@ insert into t1 values (10,1); ...@@ -353,3 +353,18 @@ insert into t1 values (10,1);
drop table t1; drop table t1;
#
# Bug#16901 Partitions: crash, SELECT, column of part.
# function=first column of primary key
#
create table t1 (f1 integer,f2 integer, f3 varchar(10), primary key(f1,f2))
partition by range(f1) subpartition by hash(f2) subpartitions 2
(partition p1 values less than (0),
partition p2 values less than (2),
partition p3 values less than (2147483647));
insert into t1 values(10,10,'10');
insert into t1 values(2,2,'2');
select * from t1 where f1 = 2;
drop table t1;
...@@ -3754,7 +3754,7 @@ void get_partition_set(const TABLE *table, byte *buf, const uint index, ...@@ -3754,7 +3754,7 @@ void get_partition_set(const TABLE *table, byte *buf, const uint index,
subpartitions. This is a range without holes. subpartitions. This is a range without holes.
*/ */
DBUG_ASSERT(sub_part == no_parts); DBUG_ASSERT(sub_part == no_parts);
part_spec->start_part= part_part * part_info->no_parts; part_spec->start_part= part_part * part_info->no_subparts;
part_spec->end_part= part_spec->start_part+part_info->no_subparts - 1; part_spec->end_part= part_spec->start_part+part_info->no_subparts - 1;
} }
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment