mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge the fix for bug lp:802979
This commit is contained in:
@ -7292,7 +7292,7 @@ static SEL_TREE *get_mm_tree(RANGE_OPT_PARAM *param,COND *cond)
|
||||
case Item_func::MULT_EQUAL_FUNC:
|
||||
{
|
||||
Item_equal *item_equal= (Item_equal *) cond;
|
||||
if (!(value= item_equal->get_const()))
|
||||
if (!(value= item_equal->get_const()) || value->is_expensive())
|
||||
DBUG_RETURN(0);
|
||||
Item_equal_fields_iterator it(*item_equal);
|
||||
ref_tables= value->used_tables();
|
||||
@ -7325,6 +7325,9 @@ static SEL_TREE *get_mm_tree(RANGE_OPT_PARAM *param,COND *cond)
|
||||
}
|
||||
else
|
||||
DBUG_RETURN(0);
|
||||
if (value && value->is_expensive())
|
||||
DBUG_RETURN(0);
|
||||
|
||||
ftree= get_full_func_mm_tree(param, cond_func, field_item, value, inv);
|
||||
}
|
||||
|
||||
|
@ -9689,8 +9689,7 @@ void JOIN::join_free()
|
||||
Optimization: if not EXPLAIN and we are done with the JOIN,
|
||||
free all tables.
|
||||
*/
|
||||
bool full= (!(select_lex->uncacheable) &&
|
||||
!thd->lex->describe);
|
||||
bool full= !(select_lex->uncacheable);
|
||||
bool can_unlock= full;
|
||||
DBUG_ENTER("JOIN::join_free");
|
||||
|
||||
@ -11541,8 +11540,8 @@ propagate_cond_constants(THD *thd, I_List<COND_CMP> *save_list,
|
||||
{
|
||||
Item_func_eq *func=(Item_func_eq*) cond;
|
||||
Item **args= func->arguments();
|
||||
bool left_const= args[0]->const_item();
|
||||
bool right_const= args[1]->const_item();
|
||||
bool left_const= args[0]->const_item() && !args[0]->is_expensive();
|
||||
bool right_const= args[1]->const_item() && !args[1]->is_expensive();
|
||||
if (!(left_const && right_const) &&
|
||||
args[0]->result_type() == args[1]->result_type())
|
||||
{
|
||||
|
Reference in New Issue
Block a user