1
0
mirror of https://github.com/MariaDB/server.git synced 2026-01-06 05:22:24 +03:00

MDEV-10325: Queries examines all rows of a tables when it should not

The problem was introduced by 1859caf60b:
  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.
This commit is contained in:
Sergei Petrunia
2016-07-11 22:01:24 +03:00
parent 53e7fcca41
commit 0bb5d95542
3 changed files with 55 additions and 3 deletions

View File

@@ -693,5 +693,33 @@ drop table t1, t2;
set optimizer_switch=@save_optimizer_switch;
--echo #
--echo # MDEV-10325: Queries examines all rows of a tables when it should not
--echo #
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (
pk int not null,
col1 varchar(32),
filler varchar(100),
key idx1(col1(10)),
primary key (pk)
)engine=innodb;
insert into t1
select
A.a + 10*B.a + 100*C.a,
concat('1234567890-', 1000+ A.a + 10*B.a + 100*C.a),
repeat('filler-data-', 4)
from
t0 A, t0 B, t0 C;
--echo # The following must use type=ALL (and NOT type=ref, rows=1)
--replace_column 9 #
explain select * from t1 where col1='1234567890-a';
drop table t0,t1;
set optimizer_switch=@save_ext_key_optimizer_switch;
SET SESSION STORAGE_ENGINE=DEFAULT;