diff options
author | Sergei Petrunia <psergey@askmonty.org> | 2016-07-11 22:01:24 +0300 |
---|---|---|
committer | Sergei Petrunia <psergey@askmonty.org> | 2016-07-12 21:49:16 +0300 |
commit | 0bb5d955423c2a7b29eab02e7bf6194ae003ae75 (patch) | |
tree | 13fc7100c9898c9dcfdefb86d3ad73467065bc65 /sql/opt_range_mrr.cc | |
parent | 53e7fcca4191c47ca48c378163bcb93ef6e632a5 (diff) | |
download | mariadb-git-0bb5d955423c2a7b29eab02e7bf6194ae003ae75.tar.gz |
MDEV-10325: Queries examines all rows of a tables when it should not
The problem was introduced by 1859caf60b725f81f2ac6091eb44cb848a4a439a:
MDEV-10175: range optimizer calls records_in_range() for full extended keys
Make the range optimizer not call records_in_range() when it would
not give any benefit.
that patch used an incorrect way to check for full extended key. Now fixing
the check.
Diffstat (limited to 'sql/opt_range_mrr.cc')
-rw-r--r-- | sql/opt_range_mrr.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sql/opt_range_mrr.cc b/sql/opt_range_mrr.cc index 729c491a6f1..fbccb7c4e1d 100644 --- a/sql/opt_range_mrr.cc +++ b/sql/opt_range_mrr.cc @@ -278,14 +278,14 @@ walk_up_n_right: (1) - range analysis is used for estimating condition selectivity (2) - This is a unique key, and we have conditions for all its user-defined key parts. - (3) - The table uses extended keys, and we have conditions for - all key parts. + (3) - The table uses extended keys, this key covers all components, + and we have conditions for all key parts. */ if (!(cur->min_key_flag & ~NULL_RANGE) && !cur->max_key_flag && (!key_info || // (1) ((uint)key_tree->part+1 == key_info->user_defined_key_parts && // (2) key_info->flags & HA_NOSAME) || // (2) - (seq->param->table->s->use_ext_keys && // (3) + ((key_info->flags & HA_EXT_NOSAME) && // (3) (uint)key_tree->part+1 == key_info->ext_key_parts) // (3) ) && range->start_key.length == range->end_key.length && |