summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/sp.result56
-rw-r--r--mysql-test/t/sp.test67
2 files changed, 121 insertions, 2 deletions
diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result
index a419f4a0565..b8581674e5a 100644
--- a/mysql-test/r/sp.result
+++ b/mysql-test/r/sp.result
@@ -801,6 +801,17 @@ avg 0 4.4
delete from t1;
delete from t2;
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;
create table fac (n int unsigned not null primary key, f bigint unsigned);
create procedure ifac(n int unsigned)
@@ -948,6 +959,51 @@ drop procedure opp;
drop procedure ip;
show procedure status like '%p%';
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)
comment "111111111111" sql security invoker
insert into test.t1 values (x, y);
diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test
index 25657bd79e2..3c4c850ba79 100644
--- a/mysql-test/t/sp.test
+++ b/mysql-test/t/sp.test
@@ -815,6 +815,11 @@ delete from t2|
drop table t3|
drop procedure cur2|
+
+#
+# Test cases for old bugs
+#
+
#
# BUG#822
#
@@ -898,7 +903,6 @@ select @1, @2|
drop table t70|
drop procedure bug1656|
-
#
# BUG#1862
#
@@ -920,7 +924,6 @@ select * from t3|
drop table t3|
drop procedure bug1862|
-
#
# BUG#1874
#
@@ -945,6 +948,26 @@ delete from t1|
delete from t2|
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
@@ -1071,7 +1094,47 @@ drop procedure ip|
--replace_column 4 '0000-00-00 00:00:00' 5 '0000-00-00 00:00:00'
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
+#
+
create procedure bar(x char(16), y int)
comment "111111111111" sql security invoker
insert into test.t1 values (x, y)|