summaryrefslogtreecommitdiff
path: root/sql/ha_partition.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2012-08-09 17:22:00 +0200
committerSergei Golubchik <sergii@pisem.net>2012-08-09 17:22:00 +0200
commitd11829654c4ef5c3d0f997ca61a50d4bd196db8a (patch)
treee48a5775e961b17600bf9c1c189243deb5515ba7 /sql/ha_partition.cc
parente022b6ef07529d83e8c1cbd5e3d374fc5cc75721 (diff)
parent704898bf3200af4da42c1bf9251a7da5533db73f (diff)
downloadmariadb-git-d11829654c4ef5c3d0f997ca61a50d4bd196db8a.tar.gz
merge with MySQL 5.5.27
manually checked every change, reverted incorrect or stupid changes.
Diffstat (limited to 'sql/ha_partition.cc')
-rw-r--r--sql/ha_partition.cc12
1 files changed, 11 insertions, 1 deletions
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
index 78adbeff623..0d2b4387327 100644
--- a/sql/ha_partition.cc
+++ b/sql/ha_partition.cc
@@ -6490,7 +6490,17 @@ ha_rows ha_partition::min_rows_for_estimate()
DBUG_ENTER("ha_partition::min_rows_for_estimate");
tot_used_partitions= bitmap_bits_set(&m_part_info->used_partitions);
- DBUG_ASSERT(tot_used_partitions);
+
+ /*
+ All partitions might have been left as unused during partition pruning
+ due to, for example, an impossible WHERE condition. Nonetheless, the
+ optimizer might still attempt to perform (e.g. range) analysis where an
+ estimate of the the number of rows is calculated using records_in_range.
+ Hence, to handle this and other possible cases, use zero as the minimum
+ number of rows to base the estimate on if no partition is being used.
+ */
+ if (!tot_used_partitions)
+ DBUG_RETURN(0);
/*
Allow O(log2(tot_partitions)) increase in number of used partitions.