diff --git a/mysql-test/r/sp-fib.result b/mysql-test/r/sp-fib.result index c51aa7d7ad1682b93346397a86c5ad3ce6399577..a26e104c1e8319bcea3be852dba38f6428b1069c 100644 --- a/mysql-test/r/sp-fib.result +++ b/mysql-test/r/sp-fib.result @@ -10,24 +10,17 @@ declare c cursor for select f from t3 order by f desc limit 2; open c; fetch c into y; fetch c into x; -close c; insert into t3 values (x+y); call fib(n-1); +## Close the cursor AFTER the recursion to ensure that the stack +## frame is somewhat intact. +close c; end; end if; end| set @@max_sp_recursion_depth= 20| insert into t3 values (0), (1)| -call fib(3)| -select * from t3 order by f asc| -f -0 -1 -1 -2 -delete from t3| -insert into t3 values (0), (1)| -call fib(10)| +call fib(4)| select * from t3 order by f asc| f 0 @@ -35,12 +28,6 @@ f 1 2 3 -5 -8 -13 -21 -34 -55 drop table t3| drop procedure fib| set @@max_sp_recursion_depth= 0| diff --git a/mysql-test/t/sp-fib.test b/mysql-test/t/sp-fib.test index e6682395a2cf9df5f8677af0d0bbc81e36c50408..24a51b99c2d5d0c12ffaf53fecf3d0c1735b62d7 100644 --- a/mysql-test/t/sp-fib.test +++ b/mysql-test/t/sp-fib.test @@ -22,13 +22,14 @@ begin begin declare x, y bigint unsigned; declare c cursor for select f from t3 order by f desc limit 2; - open c; fetch c into y; fetch c into x; - close c; insert into t3 values (x+y); call fib(n-1); + ## Close the cursor AFTER the recursion to ensure that the stack + ## frame is somewhat intact. + close c; end; end if; end| @@ -36,24 +37,17 @@ end| # Enable recursion set @@max_sp_recursion_depth= 20| -# Minimum test: recursion of 3 levels - 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| -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 procedure fib| set @@max_sp_recursion_depth= 0|