Adding some things according to Monty's correct observations
This commit is contained in:
parent
2f290adba7
commit
d61b4b6dfd
@ -33,7 +33,7 @@ int mysql_union(THD *thd, LEX *lex,select_result *result)
|
|||||||
TABLE *table;
|
TABLE *table;
|
||||||
int describe=(lex->select_lex.options & SELECT_DESCRIBE) ? 1 : 0;
|
int describe=(lex->select_lex.options & SELECT_DESCRIBE) ? 1 : 0;
|
||||||
int res;
|
int res;
|
||||||
bool fr=false;
|
bool found_rows_for_union=false;
|
||||||
TABLE_LIST result_table_list;
|
TABLE_LIST result_table_list;
|
||||||
TABLE_LIST *first_table=(TABLE_LIST *)lex->select_lex.table_list.first;
|
TABLE_LIST *first_table=(TABLE_LIST *)lex->select_lex.table_list.first;
|
||||||
TMP_TABLE_PARAM tmp_table_param;
|
TMP_TABLE_PARAM tmp_table_param;
|
||||||
@ -61,7 +61,10 @@ int mysql_union(THD *thd, LEX *lex,select_result *result)
|
|||||||
*/
|
*/
|
||||||
lex_sl= sl;
|
lex_sl= sl;
|
||||||
order= (ORDER *) lex_sl->order_list.first;
|
order= (ORDER *) lex_sl->order_list.first;
|
||||||
fr = lex->select_lex.options & OPTION_FOUND_ROWS && !describe && sl->select_limit && sl->select_limit != HA_POS_ERROR;
|
found_rows_for_union = lex->select_lex.options & OPTION_FOUND_ROWS && !describe && sl->select_limit;
|
||||||
|
if (found_rows_for_union)
|
||||||
|
lex->select_lex.options ^= OPTION_FOUND_ROWS;
|
||||||
|
// This is done to eliminate unnecessary slowing down of the first query
|
||||||
if (!order || !describe)
|
if (!order || !describe)
|
||||||
last_sl->next=0; // Remove this extra element
|
last_sl->next=0; // Remove this extra element
|
||||||
}
|
}
|
||||||
@ -200,7 +203,7 @@ int mysql_union(THD *thd, LEX *lex,select_result *result)
|
|||||||
item_list, NULL, (describe) ? 0 : order,
|
item_list, NULL, (describe) ? 0 : order,
|
||||||
(ORDER*) NULL, NULL, (ORDER*) NULL,
|
(ORDER*) NULL, NULL, (ORDER*) NULL,
|
||||||
thd->options, result);
|
thd->options, result);
|
||||||
if (fr && !res)
|
if (found_rows_for_union && !res)
|
||||||
thd->limit_found_rows = (ulonglong)table->file->records;
|
thd->limit_found_rows = (ulonglong)table->file->records;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user