Changeset: 888611136d39 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=888611136d39
Added Files:
        sql/test/BugTracker-2013/Tests/nestedcalls.sql
        sql/test/BugTracker-2013/Tests/recursion.sql
Branch: default
Log Message:

New tests for SQL deadlock detection
Recursion and nested calls can cause deadlocks.


diffs (70 lines):

diff --git a/sql/test/BugTracker-2013/Tests/nestedcalls.sql 
b/sql/test/BugTracker-2013/Tests/nestedcalls.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2013/Tests/nestedcalls.sql
@@ -0,0 +1,42 @@
+CREATE FUNCTION bottom()
+RETURNS TABLE (name string)
+BEGIN
+       RETURN select name from tables;
+END;
+
+CREATE FUNCTION leaf1()
+RETURNS TABLE (name string)
+BEGIN
+       RETURN select name from bottom()
+       UNION  select name from bottom()
+       UNION  select name from bottom()
+       UNION  select name from bottom();
+END;
+
+CREATE FUNCTION leaf2()
+RETURNS TABLE (name string)
+BEGIN
+       RETURN select name from leaf1()
+       UNION  select name from leaf1()
+       UNION  select name from leaf1()
+       UNION  select name from leaf1();
+END;
+
+CREATE FUNCTION leaf3()
+RETURNS TABLE (name string)
+BEGIN
+       RETURN select name from leaf2()
+       UNION  select name from leaf2()
+       UNION  select name from leaf2()
+       UNION  select name from leaf2();
+END;
+
+SELECT count(*) FROM bottom();
+SELECT count(*) FROM leaf1();
+SELECT count(*) FROM leaf2();
+SELECT count(*) FROM leaf3();
+
+DROP FUNCTION leaf1;
+DROP FUNCTION leaf2;
+DROP FUNCTION leaf3;
+DROP FUNCTION bottom;
diff --git a/sql/test/BugTracker-2013/Tests/recursion.sql 
b/sql/test/BugTracker-2013/Tests/recursion.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2013/Tests/recursion.sql
@@ -0,0 +1,18 @@
+CREATE FUNCTION fibonacci(i integer)
+RETURNS integer
+BEGIN
+       if ( i = 0) THEN RETURN 0; END IF;
+       if ( i = 1) THEN RETURN 1; END IF;
+       RETURN f(CAST(i-1 AS INTEGER))+f(CAST(i-2 AS INTEGER));
+END;
+
+SELECT fibonacci(0);
+SELECT fibonacci(1);
+SELECT fibonacci(2);
+SELECT fibonacci(3);
+SELECT fibonacci(4);
+SELECT fibonacci(5);
+SELECT fibonacci(6);
+SELECT fibonacci(7);
+SELECT fibonacci(8);
+DROP FUNCTION fibonacci(integer);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to