mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Fixed MDEV-5424: SELECT using ORDER BY DESC and LIMIT produces unexpected results (InnoDB/XtraDB)
This only happend when using an ORDER BY on a primary key part, where all other key parts where constant. Remove of duplicated expressions in ORDER BY (as the old code did this in some strange cases) mysql-test/r/group_by.result: Fixed results to take into account that duplicate order by parts are now deleted mysql-test/r/group_by_innodb.result: Ensure extended keys are on mysql-test/r/innodb_ext_key.result: More tests mysql-test/r/order_by.result: More tests mysql-test/t/group_by.test: Fixed results to take into account that duplicate order by parts are now deleted mysql-test/t/group_by_innodb.test: Ensure extended keys are on mysql-test/t/innodb_ext_key.test: More tests mysql-test/t/order_by.test: More tests sql/sql_select.cc: Fixed bug where we looked at extended key parts when we shouldn't Remove of duplicated expressions in ORDER BY sql/table.cc: Indentation fixes
This commit is contained in:
@@ -662,6 +662,34 @@ ORDER BY rev_timestamp ASC LIMIT 10;
|
||||
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-5424 SELECT using ORDER BY DESC and LIMIT produces unexpected
|
||||
--echo # results (InnoDB/XtraDB)
|
||||
--echo #
|
||||
|
||||
create table t1 (a bigint not null unique auto_increment, b varchar(10), primary key (a), key (b(2))) engine = myisam default character set utf8;
|
||||
create table t2 (a bigint not null unique auto_increment, b varchar(10), primary key (a), key (b(2))) engine = innodb default character set utf8;
|
||||
|
||||
insert into t1 (b) values (null), (null), (null);
|
||||
insert into t2 (b) values (null), (null), (null);
|
||||
|
||||
set optimizer_switch='extended_keys=on';
|
||||
explain select a from t1 where b is null order by a desc limit 2;
|
||||
select a from t1 where b is null order by a desc limit 2;
|
||||
explain select a from t2 where b is null order by a desc limit 2;
|
||||
select a from t2 where b is null order by a desc limit 2;
|
||||
set optimizer_switch='extended_keys=off';
|
||||
explain select a from t2 where b is null order by a desc limit 2;
|
||||
select a from t2 where b is null order by a desc limit 2;
|
||||
|
||||
explain select a from t2 where b is null order by a desc;
|
||||
select a from t2 where b is null order by a desc;
|
||||
|
||||
explain select a from t2 where b is null order by a desc,a,a;
|
||||
select a from t2 where b is null order by a desc,a,a;
|
||||
|
||||
drop table t1, t2;
|
||||
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
set optimizer_switch=@save_ext_key_optimizer_switch;
|
||||
|
||||
Reference in New Issue
Block a user