1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

BUG#6635 - test_if_skip_sort_order() thought it can skip filesort

for fulltext searches too
This commit is contained in:
unknown
2005-03-08 19:45:55 +01:00
parent 2934567449
commit f70688e2aa
3 changed files with 17 additions and 1 deletions

View File

@ -62,6 +62,14 @@ a rel
6 0 6 0
4 1 4 1
7 1 7 1
alter table t1 add key m (message);
explain SELECT message FROM t1 WHERE MATCH (message) AGAINST ('steve') ORDER BY message;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 fulltext message message 0 1 Using where; Using filesort
SELECT message FROM t1 WHERE MATCH (message) AGAINST ('steve') ORDER BY message desc;
message
steve is cool
steve
drop table t1; drop table t1;
CREATE TABLE t1 ( CREATE TABLE t1 (
a INT AUTO_INCREMENT PRIMARY KEY, a INT AUTO_INCREMENT PRIMARY KEY,

View File

@ -31,6 +31,14 @@ SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) FROM t1 WHERE a=7 an
SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) as rel FROM t1 ORDER BY rel; SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) as rel FROM t1 ORDER BY rel;
SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) as rel FROM t1 ORDER BY rel; SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) as rel FROM t1 ORDER BY rel;
#
# BUG#6635 - test_if_skip_sort_order() thought it can skip filesort
# for fulltext searches too
#
alter table t1 add key m (message);
explain SELECT message FROM t1 WHERE MATCH (message) AGAINST ('steve') ORDER BY message;
SELECT message FROM t1 WHERE MATCH (message) AGAINST ('steve') ORDER BY message desc;
drop table t1; drop table t1;
# #

View File

@ -7142,7 +7142,7 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
{ {
ref_key= tab->ref.key; ref_key= tab->ref.key;
ref_key_parts= tab->ref.key_parts; ref_key_parts= tab->ref.key_parts;
if (tab->type == JT_REF_OR_NULL) if (tab->type == JT_REF_OR_NULL || tab->type == JT_FT)
DBUG_RETURN(0); DBUG_RETURN(0);
} }
else if (select && select->quick) // Range found by opt_range else if (select && select->quick) // Range found by opt_range