mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-27047: Replication fails to remove affected queries from query cache
Rows_log_event::do_apply_event(): Correct the mistake that was made in
the merge 5f8561a6bc
.
In Galera, the query cache will be invalidated near the end
of the function.
This commit is contained in:
29
mysql-test/suite/rpl/r/rpl_query_cache.result
Normal file
29
mysql-test/suite/rpl/r/rpl_query_cache.result
Normal file
@@ -0,0 +1,29 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
connection slave;
|
||||
SET @qtype= @@global.query_cache_type;
|
||||
SET GLOBAL query_cache_type= ON;
|
||||
SET query_cache_type= ON;
|
||||
connection master;
|
||||
create table t1 (i int) engine=innodb;
|
||||
insert into t1 set i=1;
|
||||
connection slave;
|
||||
select * from t1;
|
||||
i
|
||||
1
|
||||
connection master;
|
||||
insert into t1 set i=2;
|
||||
connection slave;
|
||||
select * from t1;
|
||||
i
|
||||
1
|
||||
2
|
||||
select sql_no_cache * from t1;
|
||||
i
|
||||
1
|
||||
2
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
connection slave;
|
||||
SET GLOBAL query_cache_type= @qtype;
|
||||
include/rpl_end.inc
|
27
mysql-test/suite/rpl/t/rpl_query_cache.test
Normal file
27
mysql-test/suite/rpl/t/rpl_query_cache.test
Normal file
@@ -0,0 +1,27 @@
|
||||
-- source include/have_binlog_format_row.inc
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/master-slave.inc
|
||||
|
||||
--connection slave
|
||||
SET @qtype= @@global.query_cache_type;
|
||||
SET GLOBAL query_cache_type= ON;
|
||||
SET query_cache_type= ON;
|
||||
|
||||
--connection master
|
||||
create table t1 (i int) engine=innodb;
|
||||
insert into t1 set i=1;
|
||||
|
||||
--sync_slave_with_master
|
||||
select * from t1;
|
||||
--connection master
|
||||
insert into t1 set i=2;
|
||||
|
||||
--sync_slave_with_master
|
||||
select * from t1;
|
||||
select sql_no_cache * from t1;
|
||||
|
||||
--connection master
|
||||
DROP TABLE t1;
|
||||
--sync_slave_with_master
|
||||
SET GLOBAL query_cache_type= @qtype;
|
||||
--source include/rpl_end.inc
|
@@ -5573,14 +5573,16 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(WITH_WSREP) && defined(HAVE_QUERY_CACHE)
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
/*
|
||||
Moved invalidation right before the call to rows_event_stmt_cleanup(),
|
||||
to avoid query cache being polluted with stale entries,
|
||||
*/
|
||||
if (WSREP(thd) && wsrep_thd_is_applying(thd))
|
||||
# ifdef WITH_WSREP
|
||||
if (!WSREP(thd) && !wsrep_thd_is_applying(thd))
|
||||
# endif /* WITH_WSREP */
|
||||
query_cache.invalidate_locked_for_write(thd, rgi->tables_to_lock);
|
||||
#endif /* WITH_WSREP && HAVE_QUERY_CACHE */
|
||||
#endif /* HAVE_QUERY_CACHE */
|
||||
}
|
||||
|
||||
table= m_table= rgi->m_table_map.get_table(m_table_id);
|
||||
|
Reference in New Issue
Block a user