2750 Davi Arnaut 2009-01-22 [merge]
Merge test case of Bug#40264 to mysql-5.1-bugteam
modified:
mysql-test/r/query_cache_notembedded.result
mysql-test/t/query_cache_notembedded.test
sql/sql_cache.cc
2749 Serge Kozlov 2009-01-21
Bug#30128: The reason that sometimes events were executed because without STARTS
clause server fires immediately after creating event and time between create and delete
event sometimes is enough for firing. So adding STARTS clause moves first execution in
future after drop of event
1. Added STARTS clause for CREATE EVENT.
2. Updated result file.
modified:
mysql-test/include/rpl_events.inc
mysql-test/suite/rpl/r/rpl_events.result
mysql-test/suite/rpl/t/rpl_events.test
=== modified file 'mysql-test/r/query_cache_notembedded.result'
--- a/mysql-test/r/query_cache_notembedded.result 2007-10-16 12:42:42 +0000
+++ b/mysql-test/r/query_cache_notembedded.result 2009-01-22 11:22:26 +0000
@@ -346,6 +346,22 @@ id
drop table t1;
drop function f1;
set GLOBAL query_cache_size=0;
+DROP TABLE IF EXISTS t1;
+FLUSH STATUS;
+SET GLOBAL query_cache_size=1048576;
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
+SHOW STATUS LIKE 'Qcache_queries_in_cache';
+Variable_name Value
+Qcache_queries_in_cache 0
+LOCK TABLES t1 WRITE;
+SELECT * FROM t1;
+UNLOCK TABLES;
+SHOW STATUS LIKE 'Qcache_queries_in_cache';
+Variable_name Value
+Qcache_queries_in_cache 0
+DROP TABLE t1;
+SET GLOBAL query_cache_size= default;
SET GLOBAL log_bin_trust_function_creators = 0;
DROP DATABASE IF EXISTS bug30269;
FLUSH STATUS;
=== modified file 'mysql-test/t/query_cache_notembedded.test'
--- a/mysql-test/t/query_cache_notembedded.test 2007-10-16 12:42:42 +0000
+++ b/mysql-test/t/query_cache_notembedded.test 2009-01-22 11:22:26 +0000
@@ -224,6 +224,38 @@ disconnect con2;
connection default;
set GLOBAL query_cache_size=0;
+
+#
+# Bug#40264: Aborted cached query causes query to hang indefinitely on next cache hit
+#
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+FLUSH STATUS;
+SET GLOBAL query_cache_size=1048576;
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
+SHOW STATUS LIKE 'Qcache_queries_in_cache';
+LOCK TABLES t1 WRITE;
+connect(con1,localhost,root,,);
+--send SELECT * FROM t1
+connection default;
+let $show_type= open tables where `table`='t1' and in_use=2;
+let $show_pattern= '%t1%2%';
+--source include/wait_show_pattern.inc
+dirty_close con1;
+UNLOCK TABLES;
+let $show_type= open tables where `table`='t1' and in_use=0;
+let $show_pattern= '%t1%0%';
+--source include/wait_show_pattern.inc
+SHOW STATUS LIKE 'Qcache_queries_in_cache';
+DROP TABLE t1;
+SET GLOBAL query_cache_size= default;
+
+# End of 5.0 tests
+
SET GLOBAL log_bin_trust_function_creators = 0;
#
=== modified file 'sql/sql_cache.cc'
--- a/sql/sql_cache.cc 2009-01-15 10:28:10 +0000
+++ b/sql/sql_cache.cc 2009-01-22 11:22:26 +0000
@@ -781,6 +781,9 @@ void query_cache_end_of_result(THD *thd)
if (thd->net.query_cache_query == 0)
DBUG_VOID_RETURN;
+ /* Ensure that only complete results are cached. */
+ DBUG_ASSERT(thd->main_da.is_eof());
+
if (thd->killed)
{
query_cache_abort(&thd->net);
| Thread |
|---|
| • bzr push into mysql-5.1-bugteam branch (davi:2749 to 2750) Bug#40264 | Davi Arnaut | 22 Jan |