Commit 166accff authored by unknown's avatar unknown
Browse files

Fixed BUG#8409: Stored procedure crash if function contains FLUSH

  by simply disabling FLUSH for stored functions. (I can't really work.)


mysql-test/r/sp-error.result:
  New test case for BUG#8409.
mysql-test/t/sp-error.test:
  New test case for BUG#8409.
sql/sql_yacc.yy:
  Disable FLUSH for stored functions.
parent d5f4c14b
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -646,4 +646,12 @@ drop procedure if exists bug10537|
create procedure bug10537()
load data local infile '/tmp/somefile' into table t1|
ERROR 0A000: LOAD DATA is not allowed in stored procedures
drop function if exists bug8409|
create function bug8409()
returns int
begin
flush tables;
return 5;
end|
ERROR 0A000: FLUSH is not allowed in stored procedures
drop table t1|
+15 −0
Original line number Diff line number Diff line
@@ -905,6 +905,21 @@ create procedure bug10537()
  load data local infile '/tmp/somefile' into table t1|


#
# BUG#8409: Stored procedure crash if function contains FLUSH
#
--disable_warnings
drop function if exists bug8409|
--enable_warnings
--error ER_SP_BADSTATEMENT
create function bug8409()
  returns int
begin
  flush tables;
  return 5;
end|


#
# BUG#NNNN: New bug synopsis
#
+5 −0
Original line number Diff line number Diff line
@@ -6511,6 +6511,11 @@ flush:
	FLUSH_SYM opt_no_write_to_binlog
	{
	  LEX *lex=Lex;
	  if (lex->sphead && lex->sphead->m_type == TYPE_ENUM_FUNCTION)
	  {
	    my_error(ER_SP_BADSTATEMENT, MYF(0), "FLUSH");
	    YYABORT;
	  }
	  lex->sql_command= SQLCOM_FLUSH; lex->type=0;
          lex->no_write_to_binlog= $2;
	}