summaryrefslogtreecommitdiff
path: root/sql/sp_rcontext.h
diff options
context:
space:
mode:
authorbell@sanja.is.com.ua <>2005-11-23 00:50:37 +0200
committerbell@sanja.is.com.ua <>2005-11-23 00:50:37 +0200
commit2bcd68973bb3ae278399a69b4642e76368edd31e (patch)
treebc5ba9cedbf44fad4c73c720d01700644e2e032e /sql/sp_rcontext.h
parentdebff3e632f039bf3f0fd9bcd05c02218524a537 (diff)
downloadmariadb-git-2bcd68973bb3ae278399a69b4642e76368edd31e.tar.gz
Fix for BUG#13549 "Server crash with nested stored procedures
if inner routine has more local variables than outer one, and one of its last variables was used as argument to NOT operator". THD::spcont was non-0 when we were parsing stored routine/trigger definition during execution of another stored routine. This confused methods of Item_splocal and forced them use wrong runtime context. Fix ensures that we always have THD::spcont equal to zero during routine/trigger body parsing. This also allows to avoid problems with errors which occur during parsing and SQL exception handlers.
Diffstat (limited to 'sql/sp_rcontext.h')
-rw-r--r--sql/sp_rcontext.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/sql/sp_rcontext.h b/sql/sp_rcontext.h
index 22fa4f6e865..2988793083e 100644
--- a/sql/sp_rcontext.h
+++ b/sql/sp_rcontext.h
@@ -66,6 +66,14 @@ class sp_rcontext : public Sql_alloc
*/
Query_arena *callers_arena;
+#ifndef DBUG_OFF
+ /*
+ Routine to which this Item_splocal belongs. Used for checking if correct
+ runtime context is used for variable handling.
+ */
+ sp_head *owner;
+#endif
+
sp_rcontext(uint fsize, uint hmax, uint cmax);
~sp_rcontext()