diff options
author | unknown <mikael/pappa@dator5.(none)> | 2006-08-05 16:12:24 -0400 |
---|---|---|
committer | unknown <mikael/pappa@dator5.(none)> | 2006-08-05 16:12:24 -0400 |
commit | d6c2a6daeca742d1054535bb026c2b14183efb8f (patch) | |
tree | a59f5d5184093db3bb05644321a5bdb8a6ea43d1 /sql/sql_partition.cc | |
parent | 5e2babfe624b2390c4530282d3abad0e761d89bd (diff) | |
download | mariadb-git-d6c2a6daeca742d1054535bb026c2b14183efb8f.tar.gz |
BUG#21339: Crash at EXPLAIN PARTITIONS
Caused by missing check for end of partitions in prune range check
mysql-test/r/partition.result:
Added test case for duplicate bug#21388
mysql-test/r/partition_range.result:
Added new test case for bug#21339
mysql-test/t/partition.test:
Added test case for duplicate bug#21388
mysql-test/t/partition_range.test:
Added new test case for bug#21339
sql/sql_partition.cc:
Check so that we don't set outer range to be larger than max_partition
Diffstat (limited to 'sql/sql_partition.cc')
-rw-r--r-- | sql/sql_partition.cc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 73091c0994e..e214b41400a 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -2573,10 +2573,13 @@ uint32 get_partition_id_range_for_endpoint(partition_info *part_info, } else { - if (part_func_value == range_array[loc_part_id]) - loc_part_id += test(include_endpoint); - else if (part_func_value > range_array[loc_part_id]) - loc_part_id++; + if (loc_part_id < max_partition) + { + if (part_func_value == range_array[loc_part_id]) + loc_part_id += test(include_endpoint); + else if (part_func_value > range_array[loc_part_id]) + loc_part_id++; + } loc_part_id++; } DBUG_RETURN(loc_part_id); |