diff options
author | Oleksandr Byelkin <sanja@mariadb.com> | 2017-02-17 13:37:18 +0100 |
---|---|---|
committer | Oleksandr Byelkin <sanja@mariadb.com> | 2017-02-17 13:37:18 +0100 |
commit | d1a37eab2b353a0475da26fd4157a37e76fa4808 (patch) | |
tree | 999c24fa33f90f50b1ed674e6788ac1ce678d058 /sql/opt_range.cc | |
parent | 29d78dbb44ee9890b6bc28873344f20fc9157928 (diff) | |
download | mariadb-git-bb-5.5-MDEV-9455.tar.gz |
MDEV-9455: [ERROR] mysqld got signal 11bb-5.5-MDEV-9455
Switch MEM_ROOT to non-prune_partitions() during optimizing subselect.
Diffstat (limited to 'sql/opt_range.cc')
-rw-r--r-- | sql/opt_range.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 7f159016ff8..25a9e729a8b 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -7500,8 +7500,15 @@ static SEL_TREE *get_mm_tree(RANGE_OPT_PARAM *param,COND *cond) if (cond_func->functype() == Item_func::BETWEEN || cond_func->functype() == Item_func::IN_FUNC) inv= ((Item_func_opt_neg *) cond_func)->negated; - else if (cond_func->select_optimize() == Item_func::OPTIMIZE_NONE) - DBUG_RETURN(0); + else + { + MEM_ROOT *tmp_root= param->mem_root; + param->thd->mem_root= param->old_root; + Item_func::optimize_type opt_res= cond_func->select_optimize(); + param->thd->mem_root= tmp_root; + if (opt_res == Item_func::OPTIMIZE_NONE) + DBUG_RETURN(0); + } param->cond= cond; |