Commit e2b48a22 authored by Sinisa@sinisa.nasamreza.org's avatar Sinisa@sinisa.nasamreza.org

Merge sinisa@bk-internal.mysql.com:/home/bk/mysql-4.0

into sinisa.nasamreza.org:/mnt/work/mysql-4.0
parents 9ed179ee 09d26f0f
...@@ -546,3 +546,11 @@ CREATE TABLE t1 (a INT, b INT); ...@@ -546,3 +546,11 @@ CREATE TABLE t1 (a INT, b INT);
SET @id=0; SET @id=0;
UPDATE t1 SET a=0 ORDER BY (a=@id), b; UPDATE t1 SET a=0 ORDER BY (a=@id), b;
DROP TABLE t1; DROP TABLE t1;
create table t1(id int not null auto_increment primary key, t char(12));
explain select id,t from t1 order by id;
table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 1000 Using filesort
explain select id,t from t1 force index (primary) order by id;
table type possible_keys key key_len ref rows Extra
t1 index NULL PRIMARY 4 NULL 1000
drop table t1;
...@@ -352,4 +352,15 @@ CREATE TABLE t1 (a INT, b INT); ...@@ -352,4 +352,15 @@ CREATE TABLE t1 (a INT, b INT);
SET @id=0; SET @id=0;
UPDATE t1 SET a=0 ORDER BY (a=@id), b; UPDATE t1 SET a=0 ORDER BY (a=@id), b;
DROP TABLE t1; DROP TABLE t1;
create table t1(id int not null auto_increment primary key, t char(12));
disable_query_log;
let $1 = 1000;
while ($1)
{
eval insert into t1(t) values ('$1');
dec $1;
}
enable_query_log;
explain select id,t from t1 order by id;
explain select id,t from t1 force index (primary) order by id;
drop table t1;
\ No newline at end of file
...@@ -6021,7 +6021,7 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit, ...@@ -6021,7 +6021,7 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
/* check if we can use a key to resolve the group */ /* check if we can use a key to resolve the group */
/* Tables using JT_NEXT are handled here */ /* Tables using JT_NEXT are handled here */
uint nr; uint nr;
key_map keys=usable_keys; key_map keys_to_use=~0,keys=usable_keys;
/* /*
If not used with LIMIT, only use keys if the whole query can be If not used with LIMIT, only use keys if the whole query can be
...@@ -6029,7 +6029,17 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit, ...@@ -6029,7 +6029,17 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
retrieving all rows through an index. retrieving all rows through an index.
*/ */
if (select_limit >= table->file->records) if (select_limit >= table->file->records)
keys&= (table->used_keys | table->file->keys_to_use_for_scanning()); keys_to_use= (table->used_keys |table->file->keys_to_use_for_scanning());
/*
We are adding here also the index speified in FORCE INDEX clause,
if any.
This is to allow users to use index in ORDER BY.
*/
if (table->force_index)
keys_to_use|= table->keys_in_use_for_query;
keys&= keys_to_use;
for (nr=0; keys ; keys>>=1, nr++) for (nr=0; keys ; keys>>=1, nr++)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment