diff --git a/mysql-test/r/query_cache.result b/mysql-test/r/query_cache.result
index f813d2cc7e070462b525c0468c68dbcd024d14df..1a728354c7b0f49b17fb89e00620c334bf6679a3 100644
--- a/mysql-test/r/query_cache.result
+++ b/mysql-test/r/query_cache.result
@@ -1669,28 +1669,4 @@ SELECT 1 FROM t1 GROUP BY
 1
 1
 DROP TABLE t1;
-flush status;
-set query_cache_type=DEMAND;
-set global query_cache_size= 1024*1024*512;
-drop table if exists t1;
-create table t1 (a varchar(100));
-insert into t1 values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),('bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
-Activate debug hook and attempt to retrieve the statement from the cache.
-set session debug='+d,wait_in_query_cache_insert';
-select SQL_CACHE * from t1;;
-On a second connection; clear the query cache.
-show status like 'Qcache_queries_in_cache';
-Variable_name	Value
-Qcache_queries_in_cache	1
-set global query_cache_size= 0;;
-Signal the debug hook to release the lock.
-select id from information_schema.processlist where state='wait_in_query_cache_insert' into @thread_id;
-kill query @thread_id;
-Show query cache status.
-show status like 'Qcache_queries_in_cache';
-Variable_name	Value
-Qcache_queries_in_cache	1
-set global query_cache_size= 0;
-use test;
-drop table t1;
 End of 5.1 tests
diff --git a/mysql-test/r/query_cache_debug.result b/mysql-test/r/query_cache_debug.result
new file mode 100644
index 0000000000000000000000000000000000000000..4a4948c9845193a2d2d80e8dce583f9fcba3d797
--- /dev/null
+++ b/mysql-test/r/query_cache_debug.result
@@ -0,0 +1,24 @@
+flush status;
+set query_cache_type=DEMAND;
+set global query_cache_size= 1024*1024*512;
+drop table if exists t1;
+create table t1 (a varchar(100));
+insert into t1 values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),('bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
+Activate debug hook and attempt to retrieve the statement from the cache.
+set session debug='+d,wait_in_query_cache_insert';
+select SQL_CACHE * from t1;;
+On a second connection; clear the query cache.
+show status like 'Qcache_queries_in_cache';
+Variable_name	Value
+Qcache_queries_in_cache	1
+set global query_cache_size= 0;;
+Signal the debug hook to release the lock.
+select id from information_schema.processlist where state='wait_in_query_cache_insert' into @thread_id;
+kill query @thread_id;
+Show query cache status.
+show status like 'Qcache_queries_in_cache';
+Variable_name	Value
+Qcache_queries_in_cache	1
+set global query_cache_size= 0;
+use test;
+drop table t1;
diff --git a/mysql-test/t/query_cache.test b/mysql-test/t/query_cache.test
index 14cd9385ca63a0934d0a1a1d235c40983955f7e3..771a32e8cd7f0b9e651a2b922209049c6ad80828 100644
--- a/mysql-test/t/query_cache.test
+++ b/mysql-test/t/query_cache.test
@@ -1316,47 +1316,5 @@ SELECT 1 FROM t1 GROUP BY
   (SELECT LAST_INSERT_ID() FROM t1 ORDER BY MIN(a) ASC LIMIT 1);
 DROP TABLE t1;
 
-#
-# Bug #30887 Server crashes on SET GLOBAL query_cache_size=0
-#
-flush status;
-set query_cache_type=DEMAND;
-set global query_cache_size= 1024*1024*512;
---disable_warnings
-drop table if exists t1;
---enable_warnings
-create table t1 (a varchar(100));
-insert into t1 values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),('bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
-connect (bug30887con1, localhost, root, ,test);
-connect (bug30887con2, localhost, root, ,test);
-
-connection bug30887con1;
---echo Activate debug hook and attempt to retrieve the statement from the cache.
-set session debug='+d,wait_in_query_cache_insert';
---send select SQL_CACHE * from t1;
-
-connection default;
-let $wait_condition= select count(*)= 1 from information_schema.processlist where state= 'wait_in_query_cache_insert';
---source include/wait_condition.inc
-
-connection bug30887con2;
---echo On a second connection; clear the query cache.
-show status like 'Qcache_queries_in_cache';
---send set global query_cache_size= 0;
-
-connection default;
---echo Signal the debug hook to release the lock.
-select id from information_schema.processlist where state='wait_in_query_cache_insert' into @thread_id;
-kill query @thread_id;
-
---echo Show query cache status.
-show status like 'Qcache_queries_in_cache';
-
-disconnect bug30887con1;
-disconnect bug30887con2;
-set global query_cache_size= 0;
-use test;
-drop table t1;
-
 --echo End of 5.1 tests
 
diff --git a/mysql-test/t/query_cache_debug.test b/mysql-test/t/query_cache_debug.test
new file mode 100644
index 0000000000000000000000000000000000000000..57a5e615c1d975c8abffa0673af0afe8877344fc
--- /dev/null
+++ b/mysql-test/t/query_cache_debug.test
@@ -0,0 +1,45 @@
+--source include/have_query_cache.inc
+--source include/have_debug.inc
+
+#
+# Bug #30887 Server crashes on SET GLOBAL query_cache_size=0
+#
+flush status;
+set query_cache_type=DEMAND;
+set global query_cache_size= 1024*1024*512;
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+create table t1 (a varchar(100));
+insert into t1 values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),('bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
+connect (bug30887con1, localhost, root, ,test);
+connect (bug30887con2, localhost, root, ,test);
+
+connection bug30887con1;
+--echo Activate debug hook and attempt to retrieve the statement from the cache.
+set session debug='+d,wait_in_query_cache_insert';
+--send select SQL_CACHE * from t1;
+
+connection default;
+let $wait_condition= select count(*)= 1 from information_schema.processlist where state= 'wait_in_query_cache_insert';
+--source include/wait_condition.inc
+
+connection bug30887con2;
+--echo On a second connection; clear the query cache.
+show status like 'Qcache_queries_in_cache';
+--send set global query_cache_size= 0;
+
+connection default;
+--echo Signal the debug hook to release the lock.
+select id from information_schema.processlist where state='wait_in_query_cache_insert' into @thread_id;
+kill query @thread_id;
+
+--echo Show query cache status.
+show status like 'Qcache_queries_in_cache';
+
+disconnect bug30887con1;
+disconnect bug30887con2;
+set global query_cache_size= 0;
+use test;
+drop table t1;
+