Commit 7bb5986d authored by Bernt M. Johnsen's avatar Bernt M. Johnsen

Bug#15866 Prepared for push on 5.1

parents fdf1461a e0a3403b
...@@ -10,24 +10,17 @@ declare c cursor for select f from t3 order by f desc limit 2; ...@@ -10,24 +10,17 @@ declare c cursor for select f from t3 order by f desc limit 2;
open c; open c;
fetch c into y; fetch c into y;
fetch c into x; fetch c into x;
close c;
insert into t3 values (x+y); insert into t3 values (x+y);
call fib(n-1); call fib(n-1);
## Close the cursor AFTER the recursion to ensure that the stack
## frame is somewhat intact.
close c;
end; end;
end if; end if;
end| end|
set @@max_sp_recursion_depth= 20| set @@max_sp_recursion_depth= 20|
insert into t3 values (0), (1)| insert into t3 values (0), (1)|
call fib(3)| call fib(4)|
select * from t3 order by f asc|
f
0
1
1
2
truncate table t3|
insert into t3 values (0), (1)|
call fib(10)|
select * from t3 order by f asc| select * from t3 order by f asc|
f f
0 0
...@@ -35,12 +28,6 @@ f ...@@ -35,12 +28,6 @@ f
1 1
2 2
3 3
5
8
13
21
34
55
drop table t3| drop table t3|
drop procedure fib| drop procedure fib|
set @@max_sp_recursion_depth= 0| set @@max_sp_recursion_depth= 0|
...@@ -22,13 +22,14 @@ begin ...@@ -22,13 +22,14 @@ begin
begin begin
declare x, y bigint unsigned; declare x, y bigint unsigned;
declare c cursor for select f from t3 order by f desc limit 2; declare c cursor for select f from t3 order by f desc limit 2;
open c; open c;
fetch c into y; fetch c into y;
fetch c into x; fetch c into x;
close c;
insert into t3 values (x+y); insert into t3 values (x+y);
call fib(n-1); call fib(n-1);
## Close the cursor AFTER the recursion to ensure that the stack
## frame is somewhat intact.
close c;
end; end;
end if; end if;
end| end|
...@@ -36,24 +37,17 @@ end| ...@@ -36,24 +37,17 @@ end|
# Enable recursion # Enable recursion
set @@max_sp_recursion_depth= 20| set @@max_sp_recursion_depth= 20|
# Minimum test: recursion of 3 levels
insert into t3 values (0), (1)| insert into t3 values (0), (1)|
call fib(3)| # The small number of recursion levels is intentional.
# We need to avoid
# Bug#15866 main.sp fails (thread stack limit
# insufficient for recursive call "fib(20)")
# which affects some platforms.
call fib(4)|
select * from t3 order by f asc| select * from t3 order by f asc|
truncate table t3|
# The original test, 20 levels, ran into memory limits on some machines
# and builds. Try 10 instead...
insert into t3 values (0), (1)|
call fib(10)|
select * from t3 order by f asc|
drop table t3| drop table t3|
drop procedure fib| drop procedure fib|
set @@max_sp_recursion_depth= 0| set @@max_sp_recursion_depth= 0|
......
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