summaryrefslogtreecommitdiff
path: root/sql/sql_partition.cc
diff options
context:
space:
mode:
authorunknown <mikael/pappa@dator5.(none)>2006-08-05 16:12:24 -0400
committerunknown <mikael/pappa@dator5.(none)>2006-08-05 16:12:24 -0400
commitd6c2a6daeca742d1054535bb026c2b14183efb8f (patch)
treea59f5d5184093db3bb05644321a5bdb8a6ea43d1 /sql/sql_partition.cc
parent5e2babfe624b2390c4530282d3abad0e761d89bd (diff)
downloadmariadb-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.cc11
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);