From 2c4c542ba2a82d42d3109f5257d0323e99bb321d Mon Sep 17 00:00:00 2001
From: unknown <pem@mysql.com>
Date: Tue, 1 Nov 2005 14:58:52 +0100
Subject: Fixed BUG#14376: MySQL crash on scoped variable (re)initialization  
 Added finer scope control for default clauses of local variable  
 declarations.

mysql-test/r/sp.result:
  New test case for BUG#14376.
mysql-test/t/sp.test:
  New test case for BUG#14376.
sql/sp_pcontext.cc:
  Added boundary variable for local parameters/variables,
  for better scope control of default values.
sql/sp_pcontext.h:
  Added boundary variable for local parameters/variables,
  for better scope control of default values.
sql/sql_yacc.yy:
  Make the variables of the current DECLARE "invisible" to its DEFAULT clause.
---
 sql/sql_yacc.yy | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

(limited to 'sql/sql_yacc.yy')

diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 109dcd7e86a..c3c53b2f611 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -1660,7 +1660,12 @@ sp_decls:
 
 sp_decl:
           DECLARE_SYM sp_decl_idents type 
-          { Lex->sphead->reset_lex(YYTHD); }
+          {
+	    LEX *lex= Lex;
+
+	    lex->sphead->reset_lex(YYTHD);
+	    lex->spcont->declare_var_boundary($2);
+	  }
           sp_opt_default
           {
             LEX *lex= Lex;
@@ -1690,6 +1695,7 @@ sp_decl:
               lex->sphead->add_instr(in);
               ctx->set_default(i, it);
             }
+	    ctx->declare_var_boundary(0);
             lex->sphead->restore_lex(YYTHD);
             $$.vars= $2;
             $$.conds= $$.hndlrs= $$.curs= 0;
-- 
cgit v1.2.1