summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2018-07-20 19:32:28 -0700
committerIgor Babaev <igor@askmonty.org>2018-07-20 19:32:28 -0700
commitd0d073b1aaa30997307bc7aa686d3715f8c22da0 (patch)
tree6e199475e0730b741ae79088e26b82fb354882f5
parent9827c5e1031ca5ebe1c6c7d4f5eac3cce5749d8e (diff)
downloadmariadb-git-d0d073b1aaa30997307bc7aa686d3715f8c22da0.tar.gz
Corrected and added back the test case for MDEV-15151.
-rw-r--r--mysql-test/r/cte_recursive_not_embedded.result23
-rw-r--r--mysql-test/t/cte_recursive_not_embedded.test42
2 files changed, 65 insertions, 0 deletions
diff --git a/mysql-test/r/cte_recursive_not_embedded.result b/mysql-test/r/cte_recursive_not_embedded.result
new file mode 100644
index 00000000000..202864be159
--- /dev/null
+++ b/mysql-test/r/cte_recursive_not_embedded.result
@@ -0,0 +1,23 @@
+#
+# MDEV-15151: function with recursive CTE using no base tables
+# (duplicate of MDEV-16661)
+#
+connection default;
+CREATE TABLE t1 (id int KEY);
+INSERT INTO t1 VALUES (0), (1),(2);
+CREATE OR REPLACE FUNCTION func() RETURNS int
+RETURN
+(
+WITH recursive cte AS
+(SELECT 1 a UNION SELECT cte.* FROM cte natural join t1)
+SELECT * FROM cte limit 1
+);
+connect con1,localhost,root,,test;
+SELECT func();
+connect con2,localhost,root,,test;
+disconnect con2;
+connection con1;
+disconnect con1;
+connection default;
+DROP FUNCTION func;
+DROP TABLE t1;
diff --git a/mysql-test/t/cte_recursive_not_embedded.test b/mysql-test/t/cte_recursive_not_embedded.test
new file mode 100644
index 00000000000..4dadf400681
--- /dev/null
+++ b/mysql-test/t/cte_recursive_not_embedded.test
@@ -0,0 +1,42 @@
+--source include/not_embedded.inc
+
+--echo #
+--echo # MDEV-15151: function with recursive CTE using no base tables
+--echo # (duplicate of MDEV-16661)
+--echo #
+
+--connection default
+
+CREATE TABLE t1 (id int KEY);
+INSERT INTO t1 VALUES (0), (1),(2);
+
+CREATE OR REPLACE FUNCTION func() RETURNS int
+RETURN
+(
+ WITH recursive cte AS
+ (SELECT 1 a UNION SELECT cte.* FROM cte natural join t1)
+ SELECT * FROM cte limit 1
+);
+
+--connect (con1,localhost,root,,test)
+
+--let $conid= `SELECT CONNECTION_ID()`
+--send SELECT func()
+
+--connect (con2,localhost,root,,test)
+--disable_query_log
+--eval KILL QUERY $conid
+--enable_query_log
+--disconnect con2
+
+--disable_result_log
+--connection con1
+--error 0,ER_QUERY_INTERRUPTED
+--reap
+--disconnect con1
+--enable_result_log
+
+--connection default
+
+DROP FUNCTION func;
+DROP TABLE t1;