From c7d8977f43752afcab306f04c3de27eede259ab4 Mon Sep 17 00:00:00 2001 From: "kostja@oak.local" <> Date: Thu, 16 Oct 2003 17:00:09 +0400 Subject: [PATCH] fix for one of the bugs spotted by #1274 --- sql/sql_select.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 353a4623962..f1ab998c0fa 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -968,10 +968,20 @@ mysql_select(THD *thd,TABLE_LIST *tables,List &fields,COND *conds, } } } + /* + Here we sort rows for ORDER BY/GROUP BY clause, if the optimiser + chose FILESORT to be faster than INDEX SCAN or there is no + suitable index present. + Note, that create_sort_index calls test_if_skip_sort_order and may + finally replace sorting with index scan if there is a LIMIT clause in + the query. XXX: it's never shown in EXPLAIN! + OPTION_FOUND_ROWS supersedes LIMIT and is taken into account. + */ if (create_sort_index(&join.join_tab[join.const_tables], group ? group : order, select_limit, - thd->select_limit)) + join.select_options & OPTION_FOUND_ROWS ? + HA_POS_ERROR : thd->select_limit)) goto err; } join.having=having; // Actually a parameter