mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
auto merge
This commit is contained in:
@ -10,5 +10,4 @@
|
||||
#
|
||||
##############################################################################
|
||||
kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild.
|
||||
query_cache_28249 : Bug#41098 Query Cache returns wrong result with concurrent insert
|
||||
innodb_bug39438 : BUG#42383 2009-01-28 lsoares "This fails in embedded and on windows. Note that this test is not run on windows and on embedded in PB for main trees currently"
|
||||
|
@ -44,3 +44,71 @@ set global query_cache_size= 0;
|
||||
use test;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#41098: Query Cache returns wrong result with concurrent insert
|
||||
#
|
||||
|
||||
SET @old_concurrent_insert= @@GLOBAL.concurrent_insert;
|
||||
SET @old_query_cache_size= @@GLOBAL.query_cache_size;
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
--enable_warnings
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE TABLE t2 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
|
||||
SET GLOBAL concurrent_insert= 1;
|
||||
SET GLOBAL query_cache_size= 1024*512;
|
||||
SET GLOBAL query_cache_type= ON;
|
||||
|
||||
connect(con1,localhost,root,,test,,);
|
||||
connect(con2,localhost,root,,test,,);
|
||||
|
||||
connection con1;
|
||||
--echo # Switch to connection con1
|
||||
SET SESSION debug='+d,wait_after_query_cache_invalidate';
|
||||
--echo # Send concurrent insert, will wait in the query cache table invalidate
|
||||
--send INSERT INTO t1 VALUES (4)
|
||||
|
||||
connection default;
|
||||
--echo # Switch to connection default
|
||||
--echo # Wait for concurrent insert to reach the debug point
|
||||
let $wait_condition=
|
||||
SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE STATE = "wait_after_query_cache_invalidate" AND
|
||||
INFO = "INSERT INTO t1 VALUES (4)";
|
||||
--source include/wait_condition.inc
|
||||
|
||||
connection con2;
|
||||
--echo # Switch to connection con2
|
||||
--echo # Send SELECT that shouldn't be cached
|
||||
SELECT * FROM t1;
|
||||
|
||||
connection default;
|
||||
--echo # Switch to connection default
|
||||
--echo # Notify the concurrent insert to proceed
|
||||
SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE STATE = 'wait_after_query_cache_invalidate' INTO @thread_id;
|
||||
KILL QUERY @thread_id;
|
||||
|
||||
connection con1;
|
||||
--echo # Switch to connection con1
|
||||
--echo # Gather insert result
|
||||
--reap
|
||||
SHOW STATUS LIKE "Qcache_queries_in_cache";
|
||||
--echo # Test that it's cacheable
|
||||
SELECT * FROM t1;
|
||||
SHOW STATUS LIKE "Qcache_queries_in_cache";
|
||||
|
||||
--echo # Disconnect
|
||||
disconnect con1;
|
||||
disconnect con2;
|
||||
|
||||
connection default;
|
||||
--echo # Restore defaults
|
||||
RESET QUERY CACHE;
|
||||
DROP TABLE t1,t2;
|
||||
SET GLOBAL concurrent_insert= DEFAULT;
|
||||
SET GLOBAL query_cache_size= DEFAULT;
|
||||
SET GLOBAL query_cache_type= DEFAULT;
|
||||
|
Reference in New Issue
Block a user