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