Commit aa796cab authored by unknown's avatar unknown

Fix for bug#16907 Partitions: crash, SELECT goes into last partition, UNIQUE INDEX

  In presense of subpartitioning use get_part_partition_id() to calculate part_id

parent 76374fe5
...@@ -289,3 +289,14 @@ select * from t1 where f1 = 2; ...@@ -289,3 +289,14 @@ select * from t1 where f1 = 2;
f1 f2 f3 f1 f2 f3
2 2 2 2 2 2
drop table t1; drop table t1;
create table t1 (f1 integer,f2 integer, unique index(f1))
partition by range(f1 div 2)
subpartition by hash(f1) subpartitions 2
(partition partb values less than (2),
partition parte values less than (4),
partition partf values less than (10000));
insert into t1 values(10,1);
select * from t1 where f1 = 10;
f1 f2
10 1
drop table t1;
...@@ -368,3 +368,15 @@ insert into t1 values(2,2,'2'); ...@@ -368,3 +368,15 @@ insert into t1 values(2,2,'2');
select * from t1 where f1 = 2; select * from t1 where f1 = 2;
drop table t1; drop table t1;
#
# Bug #16907 Partitions: crash, SELECT goes into last partition, UNIQUE INDEX
#
create table t1 (f1 integer,f2 integer, unique index(f1))
partition by range(f1 div 2)
subpartition by hash(f1) subpartitions 2
(partition partb values less than (2),
partition parte values less than (4),
partition partf values less than (10000));
insert into t1 values(10,1);
select * from t1 where f1 = 10;
drop table t1;
...@@ -6009,7 +6009,10 @@ static uint32 get_next_partition_via_walking(PARTITION_ITERATOR *part_iter) ...@@ -6009,7 +6009,10 @@ static uint32 get_next_partition_via_walking(PARTITION_ITERATOR *part_iter)
field->store(part_iter->field_vals.start, FALSE); field->store(part_iter->field_vals.start, FALSE);
part_iter->field_vals.start++; part_iter->field_vals.start++;
longlong dummy; longlong dummy;
if (!part_iter->part_info->get_partition_id(part_iter->part_info, if (is_sub_partitioned(part_iter->part_info) &&
!part_iter->part_info->get_part_partition_id(part_iter->part_info,
&part_id, &dummy) ||
!part_iter->part_info->get_partition_id(part_iter->part_info,
&part_id, &dummy)) &part_id, &dummy))
return part_id; return part_id;
} }
......
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