diff options
author | unknown <sanja@askmonty.org> | 2013-10-21 13:45:49 +0300 |
---|---|---|
committer | unknown <sanja@askmonty.org> | 2013-10-21 13:45:49 +0300 |
commit | 94ad392fd86b53f798c7de9489afe901e1f3a9b6 (patch) | |
tree | 6fc990446283234f7582a777ab556a7657cbc8a6 /sql | |
parent | 046fe91161ebe40c9af4e1354587783d64f73ddd (diff) | |
download | mariadb-git-94ad392fd86b53f798c7de9489afe901e1f3a9b6.tar.gz |
MDEV-5143: update of a joined table with a nested subquery with a syntax error crashes mysqld with signal 11
Added check of SELECT_LEX::handle_derived() result.
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql_derived.cc | 3 | ||||
-rw-r--r-- | sql/sql_prepare.cc | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc index db6ab1fb269..9d04beaf73e 100644 --- a/sql/sql_derived.cc +++ b/sql/sql_derived.cc @@ -619,7 +619,8 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived) { sl->context.outer_context= 0; // Prepare underlying views/DT first. - sl->handle_derived(lex, DT_PREPARE); + if ((res= sl->handle_derived(lex, DT_PREPARE))) + goto exit; if (derived->outer_join) { diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 552b2145540..b4160991493 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -2485,7 +2485,13 @@ void reinit_stmt_before_use(THD *thd, LEX *lex) /* Fix ORDER list */ for (order= sl->order_list.first; order; order= order->next) order->item= &order->item_ptr; - sl->handle_derived(lex, DT_REINIT); + { +#ifndef DBUG_OFF + bool res= +#endif + sl->handle_derived(lex, DT_REINIT); + DBUG_ASSERT(res == 0); + } } { SELECT_LEX_UNIT *unit= sl->master_unit(); |