diff options
author | Davi Arnaut <Davi.Arnaut@Sun.COM> | 2009-02-19 18:09:35 -0300 |
---|---|---|
committer | Davi Arnaut <Davi.Arnaut@Sun.COM> | 2009-02-19 18:09:35 -0300 |
commit | a2e4449bfc8f0e4a1dcde20fb2545a4d41f794d9 (patch) | |
tree | 0efbed29d8a6efd5edc3847ce637c2a2de93289c /sql/sql_cache.cc | |
parent | 123549e7e8e34b60302f5ad69169852e2d81cdd7 (diff) | |
download | mariadb-git-a2e4449bfc8f0e4a1dcde20fb2545a4d41f794d9.tar.gz |
Bug#41098: Query Cache returns wrong result with concurrent insert
The problem is that select queries executed concurrently with
a concurrent insert on a MyISAM table could be cached if the
select started after the query cache invalidation but before
the unlock of tables performed by the concurrent insert. This
race could happen because the concurrent insert was failing
to prevent cache of select queries happening at the same time.
The solution is to add a 'uncacheable' status flag to signal
that a concurrent insert is being performed on the table and
that queries executing at the same time shouldn't cache the
results.
Diffstat (limited to 'sql/sql_cache.cc')
-rw-r--r-- | sql/sql_cache.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index 7c97ee4cf32..4a5b75c4f78 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -1518,6 +1518,9 @@ void Query_cache::invalidate(THD *thd, TABLE_LIST *tables_used, invalidate_table(thd, tables_used); } + DBUG_EXECUTE_IF("wait_after_query_cache_invalidate", + debug_wait_for_kill("wait_after_query_cache_invalidate");); + DBUG_VOID_RETURN; } |