1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-15899 Server crashes in st_join_table::is_inner_table_of_outer_join

The crash happened because JOIN::check_for_splittable_materialized()
called by mistake the function JOIN_TAB::is_inner_table_of_outer_join()
instead of the function TABLE_LIST::is_inner_table_of_outer_join().
The former cannot be called before the call of make_outerjoin_info().
This commit is contained in:
Igor Babaev
2018-04-17 23:39:40 -07:00
parent bb5f4967f5
commit cff60be7fe
3 changed files with 68 additions and 2 deletions

View File

@ -352,8 +352,9 @@ bool JOIN::check_for_splittable_materialized()
Field *ord_field= ((Item_field *) (ord_item->real_item()))->field;
JOIN_TAB *tab= ord_field->table->reginfo.join_tab;
if (tab->is_inner_table_of_outer_join())
/* Ignore fields from of inner tables of outer joins */
TABLE_LIST *tbl= ord_field->table->pos_in_table_list;
if (tbl->is_inner_table_of_outer_join())
continue;
List_iterator<Item> li(fields_list);