Commit 385de874 authored by unknown's avatar unknown

If a range tree has a branch that is an expensive constant,

currently get_mm_tree skipped the evaluation of this constant
and icorrectly proceeded. The correct behavior is to return a
NULL subtree, according to the IF branch being fixed - when it
evaluates the constant it returns a value, and doesn't continue
further.
parent 69559b92
...@@ -7244,8 +7244,10 @@ static SEL_TREE *get_mm_tree(RANGE_OPT_PARAM *param,COND *cond) ...@@ -7244,8 +7244,10 @@ static SEL_TREE *get_mm_tree(RANGE_OPT_PARAM *param,COND *cond)
DBUG_RETURN(tree); DBUG_RETURN(tree);
} }
/* Here when simple cond */ /* Here when simple cond */
if (cond->const_item() && !cond->is_expensive()) if (cond->const_item())
{ {
if (cond->is_expensive())
DBUG_RETURN(0);
/* /*
During the cond->val_int() evaluation we can come across a subselect During the cond->val_int() evaluation we can come across a subselect
item which may allocate memory on the thd->mem_root and assumes item which may allocate memory on the thd->mem_root and assumes
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment