summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <sanja@askmonty.org>2013-10-21 13:45:49 +0300
committerunknown <sanja@askmonty.org>2013-10-21 13:45:49 +0300
commit94ad392fd86b53f798c7de9489afe901e1f3a9b6 (patch)
tree6fc990446283234f7582a777ab556a7657cbc8a6 /sql
parent046fe91161ebe40c9af4e1354587783d64f73ddd (diff)
downloadmariadb-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.cc3
-rw-r--r--sql/sql_prepare.cc8
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();