Commit 17a024b0 authored by unknown's avatar unknown

Bug#13012: REPAIR/BACKUP/RESTORE TABLE cause "packet out of order" in SP.

Mark them properly as result-returning statements

parent 8895218e
...@@ -981,6 +981,8 @@ END | ...@@ -981,6 +981,8 @@ END |
drop table t1| drop table t1|
drop function bug_13627_f| drop function bug_13627_f|
drop function if exists bug12329; drop function if exists bug12329;
Warnings:
Note 1305 FUNCTION bug12329 does not exist
create table t1 as select 1 a; create table t1 as select 1 a;
create table t2 as select 1 a; create table t2 as select 1 a;
create function bug12329() returns int return (select a from t1); create function bug12329() returns int return (select a from t1);
...@@ -1055,3 +1057,34 @@ Db Name Type Definer Modified Created Security_type Comment ...@@ -1055,3 +1057,34 @@ Db Name Type Definer Modified Created Security_type Comment
mysqltest2 p1 PROCEDURE root@localhost 0000-00-00 00:00:00 0000-00-00 00:00:00 DEFINER mysqltest2 p1 PROCEDURE root@localhost 0000-00-00 00:00:00 0000-00-00 00:00:00 DEFINER
drop database mysqltest2; drop database mysqltest2;
use test; use test;
DROP FUNCTION IF EXISTS bug13012|
CREATE FUNCTION bug13012() RETURNS INT
BEGIN
REPAIR TABLE t1;
RETURN 1;
END|
ERROR 0A000: Not allowed to return a result set from a function
CREATE FUNCTION bug13012() RETURNS INT
BEGIN
BACKUP TABLE t1 TO '/tmp';
RETURN 1;
END|
ERROR 0A000: Not allowed to return a result set from a function
CREATE FUNCTION bug13012() RETURNS INT
BEGIN
RESTORE TABLE t1 FROM '/tmp';
RETURN 1;
END|
ERROR 0A000: Not allowed to return a result set from a function
create table t1 (a int)|
CREATE PROCEDURE bug13012_1() REPAIR TABLE t1|
CREATE FUNCTION bug13012_2() RETURNS INT
BEGIN
CALL bug13012_1();
RETURN 1;
END|
SELECT bug13012_2()|
ERROR 0A000: Not allowed to return a result set from a function
drop table t1|
drop procedure bug13012_1|
drop function bug13012_2|
...@@ -4100,8 +4100,6 @@ x ...@@ -4100,8 +4100,6 @@ x
4711 4711
drop procedure bug14376| drop procedure bug14376|
drop procedure if exists p1| drop procedure if exists p1|
Warnings:
Note 1305 PROCEDURE p1 does not exist
drop table if exists t1| drop table if exists t1|
create table t1 (a varchar(255))| create table t1 (a varchar(255))|
insert into t1 (a) values ("a - table column")| insert into t1 (a) values ("a - table column")|
...@@ -4153,4 +4151,24 @@ A local variable in a nested compound statement takes precedence over table colu ...@@ -4153,4 +4151,24 @@ A local variable in a nested compound statement takes precedence over table colu
a - local variable in a nested compound statement a - local variable in a nested compound statement
A local variable in a nested compound statement takes precedence over table column in cursors A local variable in a nested compound statement takes precedence over table column in cursors
a - local variable in a nested compound statement a - local variable in a nested compound statement
drop procedure p1|
drop procedure if exists bug13012|
create procedure bug13012()
BEGIN
REPAIR TABLE t1;
BACKUP TABLE t1 to '../tmp';
DROP TABLE t1;
RESTORE TABLE t1 FROM '../tmp';
END|
call bug13012()|
Table Op Msg_type Msg_text
test.t1 repair status OK
Table Op Msg_type Msg_text
test.t1 backup status OK
Table Op Msg_type Msg_text
test.t1 restore status OK
drop procedure bug13012|
select * from t1|
a
a - table column
drop table t1,t2; drop table t1,t2;
...@@ -1410,7 +1410,6 @@ delimiter ;| ...@@ -1410,7 +1410,6 @@ delimiter ;|
# BUG#12329: "Bogus error msg when executing PS with stored procedure after # BUG#12329: "Bogus error msg when executing PS with stored procedure after
# SP was re-created". See also test for related bug#13399 in trigger.test # SP was re-created". See also test for related bug#13399 in trigger.test
--disable_warnings
drop function if exists bug12329; drop function if exists bug12329;
--enable_warnings --enable_warnings
create table t1 as select 1 a; create table t1 as select 1 a;
...@@ -1518,6 +1517,44 @@ show procedure status; ...@@ -1518,6 +1517,44 @@ show procedure status;
drop database mysqltest2; drop database mysqltest2;
use test; use test;
#
# Bug#13012 "SP: REPAIR/BACKUP/RESTORE TABLE crashes the server"
#
delimiter |;
--disable_warnings
DROP FUNCTION IF EXISTS bug13012|
--enable_warnings
--error ER_SP_NO_RETSET
CREATE FUNCTION bug13012() RETURNS INT
BEGIN
REPAIR TABLE t1;
RETURN 1;
END|
--error ER_SP_NO_RETSET
CREATE FUNCTION bug13012() RETURNS INT
BEGIN
BACKUP TABLE t1 TO '/tmp';
RETURN 1;
END|
--error ER_SP_NO_RETSET
CREATE FUNCTION bug13012() RETURNS INT
BEGIN
RESTORE TABLE t1 FROM '/tmp';
RETURN 1;
END|
create table t1 (a int)|
CREATE PROCEDURE bug13012_1() REPAIR TABLE t1|
CREATE FUNCTION bug13012_2() RETURNS INT
BEGIN
CALL bug13012_1();
RETURN 1;
END|
--error ER_SP_NO_RETSET
SELECT bug13012_2()|
drop table t1|
drop procedure bug13012_1|
drop function bug13012_2|
delimiter ;|
# BUG#NNNN: New bug synopsis # BUG#NNNN: New bug synopsis
# #
......
...@@ -4908,8 +4908,10 @@ drop procedure bug14376| ...@@ -4908,8 +4908,10 @@ drop procedure bug14376|
# variable declarations. In MySQL 5.0 it's vice versa. # variable declarations. In MySQL 5.0 it's vice versa.
# #
--disable_warnings
drop procedure if exists p1| drop procedure if exists p1|
drop table if exists t1| drop table if exists t1|
--enable_warnings
create table t1 (a varchar(255))| create table t1 (a varchar(255))|
insert into t1 (a) values ("a - table column")| insert into t1 (a) values ("a - table column")|
create procedure p1(a varchar(255)) create procedure p1(a varchar(255))
...@@ -4944,6 +4946,25 @@ begin ...@@ -4944,6 +4946,25 @@ begin
end; end;
end| end|
call p1("a - stored procedure parameter")| call p1("a - stored procedure parameter")|
drop procedure p1|
#
# Bug#13012 "SP: REPAIR/BACKUP/RESTORE TABLE crashes the server"
#
--disable_warnings
drop procedure if exists bug13012|
--enable_warnings
create procedure bug13012()
BEGIN
REPAIR TABLE t1;
BACKUP TABLE t1 to '../tmp';
DROP TABLE t1;
RESTORE TABLE t1 FROM '../tmp';
END|
--replace_result ": 7" ": X" ": 17" ": X" $MYSQL_TEST_DIR MYSQL_TEST_DIR
call bug13012()|
drop procedure bug13012|
select * from t1|
# #
# BUG#NNNN: New bug synopsis # BUG#NNNN: New bug synopsis
......
...@@ -107,6 +107,9 @@ sp_get_flags_for_command(LEX *lex) ...@@ -107,6 +107,9 @@ sp_get_flags_for_command(LEX *lex)
case SQLCOM_SHOW_WARNS: case SQLCOM_SHOW_WARNS:
case SQLCOM_SHOW_PROC_CODE: case SQLCOM_SHOW_PROC_CODE:
case SQLCOM_SHOW_FUNC_CODE: case SQLCOM_SHOW_FUNC_CODE:
case SQLCOM_REPAIR:
case SQLCOM_BACKUP_TABLE:
case SQLCOM_RESTORE_TABLE:
flags= sp_head::MULTI_RESULTS; flags= sp_head::MULTI_RESULTS;
break; break;
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment