summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/main/create_replace_tmp.result4
-rw-r--r--mysql-test/main/create_replace_tmp.test4
-rw-r--r--mysql-test/main/cte_recursive_not_embedded.result23
-rw-r--r--mysql-test/main/cte_recursive_not_embedded.test42
-rw-r--r--mysql-test/suite/rpl/r/rpl_15867.result9
-rw-r--r--mysql-test/suite/rpl/t/rpl_15867.test11
6 files changed, 93 insertions, 0 deletions
diff --git a/mysql-test/main/create_replace_tmp.result b/mysql-test/main/create_replace_tmp.result
new file mode 100644
index 00000000000..0239f4d4817
--- /dev/null
+++ b/mysql-test/main/create_replace_tmp.result
@@ -0,0 +1,4 @@
+CREATE TEMPORARY TABLE t (i INT);
+CREATE or replace TABLE t AS SELECT * FROM t;
+DROP TEMPORARY TABLE t;
+DROP TABLE t;
diff --git a/mysql-test/main/create_replace_tmp.test b/mysql-test/main/create_replace_tmp.test
new file mode 100644
index 00000000000..0239f4d4817
--- /dev/null
+++ b/mysql-test/main/create_replace_tmp.test
@@ -0,0 +1,4 @@
+CREATE TEMPORARY TABLE t (i INT);
+CREATE or replace TABLE t AS SELECT * FROM t;
+DROP TEMPORARY TABLE t;
+DROP TABLE t;
diff --git a/mysql-test/main/cte_recursive_not_embedded.result b/mysql-test/main/cte_recursive_not_embedded.result
new file mode 100644
index 00000000000..202864be159
--- /dev/null
+++ b/mysql-test/main/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/main/cte_recursive_not_embedded.test b/mysql-test/main/cte_recursive_not_embedded.test
new file mode 100644
index 00000000000..4dadf400681
--- /dev/null
+++ b/mysql-test/main/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;
diff --git a/mysql-test/suite/rpl/r/rpl_15867.result b/mysql-test/suite/rpl/r/rpl_15867.result
new file mode 100644
index 00000000000..9cb63266a29
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_15867.result
@@ -0,0 +1,9 @@
+include/master-slave.inc
+[connection master]
+CREATE TEMPORARY TABLE t (i INT);
+CREATE TABLE t AS SELECT * FROM t;
+connection slave;
+connection master;
+DROP TEMPORARY TABLE t;
+DROP TABLE t;
+include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/t/rpl_15867.test b/mysql-test/suite/rpl/t/rpl_15867.test
new file mode 100644
index 00000000000..6de39041bb1
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_15867.test
@@ -0,0 +1,11 @@
+--source include/master-slave.inc
+CREATE TEMPORARY TABLE t (i INT);
+CREATE TABLE t AS SELECT * FROM t;
+
+--sync_slave_with_master
+
+# Cleanup
+--connection master
+DROP TEMPORARY TABLE t;
+DROP TABLE t;
+--source include/rpl_end.inc