Commit 7f9ba01f authored by unknown's avatar unknown

New test cases for BUG#1653 (recalling a procedure after replacing a faulty

table definition crashed), and recursive calls.


mysql-test/r/sp.result:
  New test cases for BUG#1653 and recursive calls.
mysql-test/t/sp.test:
  New test cases for BUG#1653 and recursive calls.
parent b7310403
...@@ -801,6 +801,17 @@ avg 0 4.4 ...@@ -801,6 +801,17 @@ avg 0 4.4
delete from t1; delete from t1;
delete from t2; delete from t2;
drop procedure bug1874; drop procedure bug1874;
drop table if exists table_1;
create table t3 (column_1_0 int);
create procedure bug1653()
update t3 set column_1 = 0;
call bug1653();
ERROR 42S22: Unknown column 'column_1' in 'field list'
drop table t3;
create table t3 (column_1 int);
call bug1653();
drop procedure bug1653;
drop table t3;
drop table if exists fac; drop table if exists fac;
create table fac (n int unsigned not null primary key, f bigint unsigned); create table fac (n int unsigned not null primary key, f bigint unsigned);
create procedure ifac(n int unsigned) create procedure ifac(n int unsigned)
...@@ -948,6 +959,51 @@ drop procedure opp; ...@@ -948,6 +959,51 @@ drop procedure opp;
drop procedure ip; drop procedure ip;
show procedure status like '%p%'; show procedure status like '%p%';
Name Type Creator Modified Created Suid Comment Name Type Creator Modified Created Suid Comment
drop table if exists fib;
create table fib ( f bigint unsigned not null );
insert into fib values (1), (1);
create procedure fib(n int unsigned)
begin
if n > 0 then
begin
declare x, y bigint unsigned;
declare c cursor for select f from fib order by f desc limit 2;
open c;
fetch c into y;
fetch c into x;
close c;
insert into fib values (x+y);
call fib(n-1);
end;
end if;
end;
call fib(20);
select * from fib order by f asc;
f
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
drop table fib;
drop procedure fib;
create procedure bar(x char(16), y int) create procedure bar(x char(16), y int)
comment "111111111111" sql security invoker comment "111111111111" sql security invoker
insert into test.t1 values (x, y); insert into test.t1 values (x, y);
......
...@@ -815,6 +815,11 @@ delete from t2| ...@@ -815,6 +815,11 @@ delete from t2|
drop table t3| drop table t3|
drop procedure cur2| drop procedure cur2|
#
# Test cases for old bugs
#
# #
# BUG#822 # BUG#822
# #
...@@ -898,7 +903,6 @@ select @1, @2| ...@@ -898,7 +903,6 @@ select @1, @2|
drop table t70| drop table t70|
drop procedure bug1656| drop procedure bug1656|
# #
# BUG#1862 # BUG#1862
# #
...@@ -920,7 +924,6 @@ select * from t3| ...@@ -920,7 +924,6 @@ select * from t3|
drop table t3| drop table t3|
drop procedure bug1862| drop procedure bug1862|
# #
# BUG#1874 # BUG#1874
# #
...@@ -945,6 +948,26 @@ delete from t1| ...@@ -945,6 +948,26 @@ delete from t1|
delete from t2| delete from t2|
drop procedure bug1874| drop procedure bug1874|
#
# BUG#1653
#
--disable_warnings
drop table if exists table_1|
--enable_warnings
create table t3 (column_1_0 int)|
create procedure bug1653()
update t3 set column_1 = 0|
--error 1054
call bug1653()|
drop table t3|
create table t3 (column_1 int)|
call bug1653()|
drop procedure bug1653|
drop table t3|
# #
# Some "real" examples # Some "real" examples
...@@ -1071,7 +1094,47 @@ drop procedure ip| ...@@ -1071,7 +1094,47 @@ drop procedure ip|
--replace_column 4 '0000-00-00 00:00:00' 5 '0000-00-00 00:00:00' --replace_column 4 '0000-00-00 00:00:00' 5 '0000-00-00 00:00:00'
show procedure status like '%p%'| show procedure status like '%p%'|
# Fibonacci, for recursion test. (Yet Another Numerical series :)
--disable_warnings
drop table if exists fib|
--enable_warnings
create table fib ( f bigint unsigned not null )|
insert into fib values (1), (1)|
# We deliberately do it the awkward way, fetching the last two
# values from the table, in order to exercise various statements
# and table accesses at each turn.
create procedure fib(n int unsigned)
begin
if n > 0 then
begin
declare x, y bigint unsigned;
declare c cursor for select f from fib order by f desc limit 2;
open c;
fetch c into y;
fetch c into x;
close c;
insert into fib values (x+y);
call fib(n-1);
end;
end if;
end|
call fib(20)|
select * from fib order by f asc|
drop table fib|
drop procedure fib|
#
# Comment & suid # Comment & suid
#
create procedure bar(x char(16), y int) create procedure bar(x char(16), y int)
comment "111111111111" sql security invoker comment "111111111111" sql security invoker
insert into test.t1 values (x, y)| insert into test.t1 values (x, y)|
......
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