mirror of
https://github.com/MariaDB/server.git
synced 2025-05-01 08:45:04 +03:00
Range scan in descending order for c <= <col> <= c type of ranges was ignoring the DESC flag. However some engines like InnoDB have the primary key parts as a suffix for every secondary key. When such primary key suffix is used for ordering ignoring the DESC is not valid. But we generally would like to do this because it's faster. Fixed by performing only reverse scan if the primary key is used. Removed some dead code in the process. mysql-test/r/innodb_mysql.result: Bug#37830 : test case mysql-test/t/innodb_mysql.test: Bug#37830 : test case sql/opt_range.cc: Bug#37830 : - preserve and use used_key_parts to distinguish when a primary key suffix is used - removed some dead code sql/opt_range.h: Bug#37830 : - preserve used_key_parts - dead code removed sql/sql_select.cc: Bug#37830 : Do only reverse order traversal if the primary key suffix is used.
32 lines
936 B
Plaintext
32 lines
936 B
Plaintext
# t/innodb_mysql.test
|
|
#
|
|
# Last update:
|
|
# 2006-07-26 ML test refactored (MySQL 5.1)
|
|
# main testing code t/innodb_mysql.test -> include/mix1.inc
|
|
#
|
|
|
|
-- source include/have_innodb.inc
|
|
let $engine_type= InnoDB;
|
|
let $other_engine_type= MEMORY;
|
|
# InnoDB does support FOREIGN KEYFOREIGN KEYs
|
|
let $test_foreign_keys= 1;
|
|
set global innodb_support_xa=default;
|
|
set session innodb_support_xa=default;
|
|
--source include/mix1.inc
|
|
|
|
--disable_warnings
|
|
drop table if exists t1, t2, t3;
|
|
--enable_warnings
|
|
#
|
|
# BUG#35850: Performance regression in 5.1.23/5.1.24
|
|
#
|
|
create table t1(a int);
|
|
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
|
create table t2 (a int, b int, pk int, key(a,b), primary key(pk)) engine=innodb;
|
|
insert into t2 select @a:=A.a+10*(B.a + 10*C.a),@a, @a from t1 A, t1 B, t1 C;
|
|
--echo this must use key 'a', not PRIMARY:
|
|
--replace_column 9 #
|
|
explain select a from t2 where a=b;
|
|
drop table t1, t2;
|
|
|