mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 18:41:56 +01:00
Bug#15866 Prepared for push on 5.0
This commit is contained in:
parent
490f443221
commit
8b5986d77f
2 changed files with 13 additions and 32 deletions
|
@ -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
|
|
||||||
delete from 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
|
||||||
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
|
||||||
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|
|
||||||
# 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|
|
||||||
|
|
||||||
delete from 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|
|
||||||
|
|
Loading…
Add table
Reference in a new issue