mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
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
This commit is contained in:
@@ -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);
|
|||||||
|
|
||||||
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,
|
|||||||
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
|
||||||
|
Reference in New Issue
Block a user