mirror of
https://github.com/MariaDB/server.git
synced 2025-11-21 06:21:35 +03:00
Reseting the query cache by issuing a SET GLOBAL query_cache_size=0 caused the server to crash if a the server concurrently was saving a new result set to the query cache. The reason for this was that the invalidation wasn't waiting on the result writers to release the block level locks on the query cache. mysql-test/r/query_cache.result: Added test for verifying that 'SET query_cache_size= 0' while inserting new statements into the query cache won't cause the server to crash. mysql-test/t/query_cache.test: Added test for verifying that 'SET query_cache_size= 0' while inserting new statements into the query cache won't cause the server to crash. sql/sql_cache.cc: - Applying a block level lock iteration of all query-type blocks prevents writers and readers from crashing when the query cache is removed.
39 lines
820 B
Plaintext
39 lines
820 B
Plaintext
-- source include/not_embedded.inc
|
|
-- source include/have_bdb.inc
|
|
|
|
#
|
|
# Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode
|
|
#
|
|
set autocommit=1;
|
|
|
|
let $VERSION=`select version()`;
|
|
|
|
reset master;
|
|
create table bug16206 (a int);
|
|
insert into bug16206 values(1);
|
|
start transaction;
|
|
insert into bug16206 values(2);
|
|
commit;
|
|
--replace_result $VERSION VERSION
|
|
--replace_column 1 f 2 n 5 n
|
|
show binlog events;
|
|
drop table bug16206;
|
|
|
|
reset master;
|
|
create table bug16206 (a int) engine= bdb;
|
|
insert into bug16206 values(0);
|
|
insert into bug16206 values(1);
|
|
start transaction;
|
|
insert into bug16206 values(2);
|
|
commit;
|
|
insert into bug16206 values(3);
|
|
--replace_result $VERSION VERSION
|
|
--replace_column 1 f 2 n 5 n
|
|
show binlog events;
|
|
drop table bug16206;
|
|
|
|
set autocommit=0;
|
|
|
|
|
|
--echo End of 5.0 tests
|