mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 20:11:42 +01:00
Merge chilla.local:/home/mydev/mysql-5.0-bug12240
into chilla.local:/home/mydev/mysql-5.1-bug12240 sql/sql_select.cc: Auto merged
This commit is contained in:
commit
ee5f5aa3ed
1 changed files with 18 additions and 6 deletions
|
@ -1378,12 +1378,13 @@ JOIN::exec()
|
||||||
thd->examined_row_count= 0;
|
thd->examined_row_count= 0;
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
don't reset the found rows count if there're no tables
|
Don't reset the found rows count if there're no tables as
|
||||||
as FOUND_ROWS() may be called.
|
FOUND_ROWS() may be called. Never reset the examined row count here.
|
||||||
*/
|
It must be accumulated from all join iterations of all join parts.
|
||||||
|
*/
|
||||||
if (tables)
|
if (tables)
|
||||||
thd->limit_found_rows= thd->examined_row_count= 0;
|
thd->limit_found_rows= 0;
|
||||||
|
|
||||||
if (zero_result_cause)
|
if (zero_result_cause)
|
||||||
{
|
{
|
||||||
|
@ -1431,6 +1432,12 @@ JOIN::exec()
|
||||||
List<Item> *curr_all_fields= &all_fields;
|
List<Item> *curr_all_fields= &all_fields;
|
||||||
List<Item> *curr_fields_list= &fields_list;
|
List<Item> *curr_fields_list= &fields_list;
|
||||||
TABLE *curr_tmp_table= 0;
|
TABLE *curr_tmp_table= 0;
|
||||||
|
/*
|
||||||
|
Initialize examined rows here because the values from all join parts
|
||||||
|
must be accumulated in examined_row_count. Hence every join
|
||||||
|
iteration must count from zero.
|
||||||
|
*/
|
||||||
|
curr_join->examined_rows= 0;
|
||||||
|
|
||||||
if ((curr_join->select_lex->options & OPTION_SCHEMA_TABLE) &&
|
if ((curr_join->select_lex->options & OPTION_SCHEMA_TABLE) &&
|
||||||
get_schema_tables_result(curr_join))
|
get_schema_tables_result(curr_join))
|
||||||
|
@ -1853,9 +1860,12 @@ JOIN::exec()
|
||||||
Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF);
|
Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF);
|
||||||
error= do_select(curr_join, curr_fields_list, NULL, procedure);
|
error= do_select(curr_join, curr_fields_list, NULL, procedure);
|
||||||
thd->limit_found_rows= curr_join->send_records;
|
thd->limit_found_rows= curr_join->send_records;
|
||||||
thd->examined_row_count= curr_join->examined_rows;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Accumulate the counts from all join iterations of all join parts. */
|
||||||
|
thd->examined_row_count+= curr_join->examined_rows;
|
||||||
|
DBUG_PRINT("counts", ("thd->examined_row_count: %lu",
|
||||||
|
(ulong) thd->examined_row_count));
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10352,6 +10362,8 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab,
|
||||||
*/
|
*/
|
||||||
join->examined_rows++;
|
join->examined_rows++;
|
||||||
join->thd->row_count++;
|
join->thd->row_count++;
|
||||||
|
DBUG_PRINT("counts", ("join->examined_rows++: %lu",
|
||||||
|
(ulong) join->examined_rows));
|
||||||
|
|
||||||
if (found)
|
if (found)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue