mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 03:17:20 +02:00
Fix for Bug#12953 "Stored procedures: crash if OPTIMIZE TABLE in function"
OPTIMIZE TABLE statement is forbidden from usage in stored procedures/functions. NOTE: OPTIMIZE TABLE statement can be useful in stored procedures. The idea is that the user/administrator can create a stored procedure for admin tasks (optimizing, backing up, etc). This procedure can be scheduled to run automatically (by mean of internal cron (WL#1034)). So, once we can make this statement work, it is worth doing it. mysql-test/r/sp-error.result: Results for the test case for Bug#12953 added. mysql-test/t/sp-error.test: Test case for Bug#12953 "Stored procedures: crash if OPTIMIZE TABLE in function" added. sql/sql_yacc.yy: Forbid "OPTIMIZE TABLE" statement from use in stored procedures/functions.
This commit is contained in:
parent
9e7a1bb2b0
commit
b89205880f
3 changed files with 27 additions and 2 deletions
|
|
@ -758,3 +758,10 @@ execute stmt;
|
|||
ERROR 42000: FUNCTION test.bug11834_1 does not exist
|
||||
deallocate prepare stmt;
|
||||
drop function bug11834_2;
|
||||
DROP FUNCTION IF EXISTS bug12953|
|
||||
CREATE FUNCTION bug12953() RETURNS INT
|
||||
BEGIN
|
||||
OPTIMIZE TABLE t1;
|
||||
RETURN 1;
|
||||
END|
|
||||
ERROR 0A000: OPTIMIZE TABLE is not allowed in stored procedures
|
||||
|
|
|
|||
|
|
@ -1085,6 +1085,21 @@ drop function bug11834_1;
|
|||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
drop function bug11834_2;
|
||||
|
||||
#
|
||||
# Bug#12953 "Stored procedures: crash if OPTIMIZE TABLE in function"
|
||||
#
|
||||
delimiter |;
|
||||
--disable_warnings
|
||||
DROP FUNCTION IF EXISTS bug12953|
|
||||
--enable_warnings
|
||||
--error ER_SP_BADSTATEMENT
|
||||
CREATE FUNCTION bug12953() RETURNS INT
|
||||
BEGIN
|
||||
OPTIMIZE TABLE t1;
|
||||
RETURN 1;
|
||||
END|
|
||||
|
||||
#
|
||||
# BUG#NNNN: New bug synopsis
|
||||
#
|
||||
|
|
@ -1092,5 +1107,3 @@ drop function bug11834_2;
|
|||
#drop procedure if exists bugNNNN|
|
||||
#--enable_warnings
|
||||
#create procedure bugNNNN...
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3826,6 +3826,11 @@ optimize:
|
|||
OPTIMIZE opt_no_write_to_binlog table_or_tables
|
||||
{
|
||||
LEX *lex=Lex;
|
||||
if (lex->sphead)
|
||||
{
|
||||
my_error(ER_SP_BADSTATEMENT, MYF(0), "OPTIMIZE TABLE");
|
||||
YYABORT;
|
||||
}
|
||||
lex->sql_command = SQLCOM_OPTIMIZE;
|
||||
lex->no_write_to_binlog= $2;
|
||||
lex->check_opt.init();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue