1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

Fixed compile failure when we don't use system zlib

Fixed crash when setting query_cache_type to 0.

client/Makefile.am:
  Added zlib include (needed by checksum.c)
sql/set_var.cc:
  Updated call to disable_query_cache()
sql/sql_cache.cc:
  Don't give warning if we start mysqld with --query_cache_type=0 --query_cache-size=0
  Fixed crash when setting query_cache_type to 0 (we shouldn't call query_cache.disable_query_cache() when there is no current_thd)
sql/sql_cache.h:
  Added THD to disable_query_cache()
This commit is contained in:
Michael Widenius
2011-06-09 13:35:01 +03:00
parent 163d7acc9f
commit 60bd2133d7
4 changed files with 15 additions and 11 deletions

View File

@ -1277,7 +1277,8 @@ ulong Query_cache::resize(ulong query_cache_size_arg)
if (global_system_variables.query_cache_type == 0)
{
my_error(ER_QUERY_CACHE_IS_DISABLED, MYF(0));
if (query_cache_size_arg != 0)
my_error(ER_QUERY_CACHE_IS_DISABLED, MYF(0));
DBUG_RETURN(0);
}
@ -2318,7 +2319,7 @@ void Query_cache::destroy()
}
void Query_cache::disable_query_cache(void)
void Query_cache::disable_query_cache(THD *thd)
{
m_cache_status= DISABLE_REQUEST;
/*
@ -2326,7 +2327,7 @@ void Query_cache::disable_query_cache(void)
try_lock(TRY) will exit immediately if there is lock.
unlock() should free block.
*/
if (m_requests_in_progress == 0 && !try_lock(current_thd, TRY))
if (m_requests_in_progress == 0 && !try_lock(thd, TRY))
unlock();
}
@ -2346,14 +2347,16 @@ void Query_cache::init()
initialized = 1;
query_state_map= default_charset_info->state_map;
/*
If we explicitly turn off query cache from the command line query cache will
be disabled for the reminder of the server life time. This is because we
want to avoid locking the QC specific mutex if query cache isn't going to
be used.
If we explicitly turn off query cache from the command line query
cache will be disabled for the reminder of the server life
time. This is because we want to avoid locking the QC specific
mutex if query cache isn't going to be used.
*/
if (global_system_variables.query_cache_type == 0)
query_cache.disable_query_cache();
{
free_cache();
m_cache_status= DISABLED;
}
DBUG_VOID_RETURN;
}