Revert the fix for bug #47627 as it's causing the regression tests in pb2 to
fail.
This commit is contained in:
parent
88084d6763
commit
d539c1570b
@ -6979,51 +6979,6 @@ CALL p1;
|
|||||||
ERROR 42S22: Unknown column 'A.b' in 'IN/ALL/ANY subquery'
|
ERROR 42S22: Unknown column 'A.b' in 'IN/ALL/ANY subquery'
|
||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
#
|
|
||||||
# Bug47627 SET @@{global.session}.local_variable in stored routine causes crash
|
|
||||||
#
|
|
||||||
DROP PROCEDURE IF EXISTS p1;
|
|
||||||
DROP PROCEDURE IF EXISTS p2;
|
|
||||||
DROP PROCEDURE IF EXISTS p3;
|
|
||||||
CREATE PROCEDURE p1()
|
|
||||||
BEGIN
|
|
||||||
DECLARE v INT DEFAULT 0;
|
|
||||||
SET @@session.v= 10;
|
|
||||||
END//
|
|
||||||
ERROR HY000: Unknown system variable 'v'
|
|
||||||
CREATE PROCEDURE p2()
|
|
||||||
BEGIN
|
|
||||||
DECLARE v INT DEFAULT 0;
|
|
||||||
SET v= 10;
|
|
||||||
END//
|
|
||||||
call p2()//
|
|
||||||
CREATE PROCEDURE p3()
|
|
||||||
BEGIN
|
|
||||||
DECLARE v INT DEFAULT 0;
|
|
||||||
SELECT @@session.v;
|
|
||||||
END//
|
|
||||||
ERROR HY000: Unknown system variable 'v'
|
|
||||||
CREATE PROCEDURE p4()
|
|
||||||
BEGIN
|
|
||||||
DECLARE v INT DEFAULT 0;
|
|
||||||
SET @@global.v= 10;
|
|
||||||
END//
|
|
||||||
ERROR HY000: Unknown system variable 'v'
|
|
||||||
CREATE PROCEDURE p5()
|
|
||||||
BEGIN
|
|
||||||
DECLARE v INT DEFAULT 0;
|
|
||||||
SET @@global.query_cache_size= 0;
|
|
||||||
SET @@session.identity= 1;
|
|
||||||
SELECT @@session.identity;
|
|
||||||
SELECT @@global.query_cache_size;
|
|
||||||
END//
|
|
||||||
CALL p5();
|
|
||||||
@@session.identity
|
|
||||||
1
|
|
||||||
@@global.query_cache_size
|
|
||||||
0
|
|
||||||
DROP PROCEDURE p2;
|
|
||||||
DROP PROCEDURE p5;
|
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
# -- End of 5.1 tests
|
# -- End of 5.1 tests
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
|
@ -8263,51 +8263,7 @@ CALL p1;
|
|||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
--echo #
|
|
||||||
--echo # Bug47627 SET @@{global.session}.local_variable in stored routine causes crash
|
|
||||||
--echo #
|
|
||||||
--disable_warnings
|
|
||||||
DROP PROCEDURE IF EXISTS p1;
|
|
||||||
DROP PROCEDURE IF EXISTS p2;
|
|
||||||
DROP PROCEDURE IF EXISTS p3;
|
|
||||||
--enable_warnings
|
|
||||||
delimiter //;
|
|
||||||
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
|
||||||
CREATE PROCEDURE p1()
|
|
||||||
BEGIN
|
|
||||||
DECLARE v INT DEFAULT 0;
|
|
||||||
SET @@session.v= 10;
|
|
||||||
END//
|
|
||||||
CREATE PROCEDURE p2()
|
|
||||||
BEGIN
|
|
||||||
DECLARE v INT DEFAULT 0;
|
|
||||||
SET v= 10;
|
|
||||||
END//
|
|
||||||
call p2()//
|
|
||||||
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
|
||||||
CREATE PROCEDURE p3()
|
|
||||||
BEGIN
|
|
||||||
DECLARE v INT DEFAULT 0;
|
|
||||||
SELECT @@session.v;
|
|
||||||
END//
|
|
||||||
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
|
||||||
CREATE PROCEDURE p4()
|
|
||||||
BEGIN
|
|
||||||
DECLARE v INT DEFAULT 0;
|
|
||||||
SET @@global.v= 10;
|
|
||||||
END//
|
|
||||||
CREATE PROCEDURE p5()
|
|
||||||
BEGIN
|
|
||||||
DECLARE v INT DEFAULT 0;
|
|
||||||
SET @@global.query_cache_size= 0;
|
|
||||||
SET @@session.identity= 1;
|
|
||||||
SELECT @@session.identity;
|
|
||||||
SELECT @@global.query_cache_size;
|
|
||||||
END//
|
|
||||||
delimiter ;//
|
|
||||||
CALL p5();
|
|
||||||
DROP PROCEDURE p2;
|
|
||||||
DROP PROCEDURE p5;
|
|
||||||
--echo # ------------------------------------------------------------------
|
--echo # ------------------------------------------------------------------
|
||||||
--echo # -- End of 5.1 tests
|
--echo # -- End of 5.1 tests
|
||||||
--echo # ------------------------------------------------------------------
|
--echo # ------------------------------------------------------------------
|
||||||
|
@ -11783,17 +11783,8 @@ option_type:
|
|||||||
;
|
;
|
||||||
|
|
||||||
option_type2:
|
option_type2:
|
||||||
/* empty */
|
/* empty */ { $$= OPT_DEFAULT; }
|
||||||
{
|
| ONE_SHOT_SYM { Lex->one_shot_set= 1; $$= OPT_SESSION; }
|
||||||
$$= OPT_DEFAULT;
|
|
||||||
Lex->option_type= OPT_DEFAULT;
|
|
||||||
}
|
|
||||||
| ONE_SHOT_SYM
|
|
||||||
{
|
|
||||||
Lex->one_shot_set= 1;
|
|
||||||
$$= OPT_SESSION;
|
|
||||||
Lex->option_type= OPT_SESSION;
|
|
||||||
}
|
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_var_type:
|
opt_var_type:
|
||||||
@ -11804,26 +11795,10 @@ opt_var_type:
|
|||||||
;
|
;
|
||||||
|
|
||||||
opt_var_ident_type:
|
opt_var_ident_type:
|
||||||
/* empty */
|
/* empty */ { $$=OPT_DEFAULT; }
|
||||||
{
|
| GLOBAL_SYM '.' { $$=OPT_GLOBAL; }
|
||||||
$$=OPT_DEFAULT;
|
| LOCAL_SYM '.' { $$=OPT_SESSION; }
|
||||||
Lex->option_type= OPT_DEFAULT;
|
| SESSION_SYM '.' { $$=OPT_SESSION; }
|
||||||
}
|
|
||||||
| GLOBAL_SYM '.'
|
|
||||||
{
|
|
||||||
$$=OPT_GLOBAL;
|
|
||||||
Lex->option_type= OPT_GLOBAL;
|
|
||||||
}
|
|
||||||
| LOCAL_SYM '.'
|
|
||||||
{
|
|
||||||
$$=OPT_SESSION;
|
|
||||||
Lex->option_type= OPT_SESSION;
|
|
||||||
}
|
|
||||||
| SESSION_SYM '.'
|
|
||||||
{
|
|
||||||
$$=OPT_SESSION;
|
|
||||||
Lex->option_type= OPT_SESSION;
|
|
||||||
}
|
|
||||||
;
|
;
|
||||||
|
|
||||||
ext_option_value:
|
ext_option_value:
|
||||||
@ -12063,22 +12038,8 @@ internal_variable_name:
|
|||||||
sp_pcontext *spc= lex->spcont;
|
sp_pcontext *spc= lex->spcont;
|
||||||
sp_variable_t *spv;
|
sp_variable_t *spv;
|
||||||
|
|
||||||
/*
|
/* We have to lookup here since local vars can shadow sysvars */
|
||||||
We have to lookup here since local vars can shadow sysvars.
|
if (!spc || !(spv = spc->find_variable(&$1)))
|
||||||
|
|
||||||
We also have to inspect the option_type first since the variable
|
|
||||||
identifier might have been prefixed with @@session or @@global
|
|
||||||
prefixes. Without this check we would wrongly identify them
|
|
||||||
as SP local variables.
|
|
||||||
*/
|
|
||||||
if (lex->option_type == OPT_DEFAULT && spc &&
|
|
||||||
(spv= spc->find_variable(&$1)))
|
|
||||||
{
|
|
||||||
/* An SP local variable */
|
|
||||||
$$.var= NULL;
|
|
||||||
$$.base_name= $1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
/* Not an SP local variable */
|
/* Not an SP local variable */
|
||||||
sys_var *tmp=find_sys_var(thd, $1.str, $1.length);
|
sys_var *tmp=find_sys_var(thd, $1.str, $1.length);
|
||||||
@ -12095,6 +12056,12 @@ internal_variable_name:
|
|||||||
lex->sphead->m_flags|= sp_head::HAS_SET_AUTOCOMMIT_STMT;
|
lex->sphead->m_flags|= sp_head::HAS_SET_AUTOCOMMIT_STMT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* An SP local variable */
|
||||||
|
$$.var= NULL;
|
||||||
|
$$.base_name= $1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
| ident '.' ident
|
| ident '.' ident
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user