Commit f1437d6a authored by Mikael Ronstrom's avatar Mikael Ronstrom

BUG#47754, used number of parts instead of number of list values as end part...

BUG#47754, used number of parts instead of number of list values as end part for list partitioning in column list partitioning
parent d0627362
......@@ -20,6 +20,15 @@ select * from t1 where a = 2;
a b
2 NULL
2 2
select * from t1 where a > 8;
a b
select * from t1 where a not between 8 and 8;
a b
2 NULL
2 2
3 NULL
1 NULL
1 1
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
......
......@@ -14,6 +14,9 @@ partition by list column_list(a,b)
column_list(NULL, NULL)),
partition p1 values in (column_list(1,1), column_list(2,2)),
partition p2 values in (column_list(3, NULL), column_list(NULL, 1)));
#
# BUG#47754 Crash when selecting using NOT BETWEEN for column list partitioning
#
insert into t1 values (3, NULL);
insert into t1 values (NULL, 1);
insert into t1 values (NULL, NULL);
......@@ -23,6 +26,8 @@ insert into t1 values (1,1);
insert into t1 values (2,2);
select * from t1 where a = 1;
select * from t1 where a = 2;
select * from t1 where a > 8;
select * from t1 where a not between 8 and 8;
show create table t1;
drop table t1;
......
......@@ -6962,7 +6962,15 @@ int get_part_iter_for_interval_cols_via_map(partition_info *part_info,
nparts);
}
if (flags & NO_MAX_RANGE)
part_iter->part_nums.end= part_info->num_parts;
{
if (part_info->part_type == RANGE_PARTITION)
part_iter->part_nums.end= part_info->num_parts;
else /* LIST_PARTITION */
{
DBUG_ASSERT(part_info->part_type == LIST_PARTITION);
part_iter->part_nums.end= part_info->num_list_values;
}
}
else
{
// Copy from max_value to record
......
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