1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Bug#30087 Set query_cache_size, if the value is too small, get a unclear warning

This bugs clarifies a warning message issued when the query cache data
size becomes smaller than the minium allowed size.



mysql-test/r/query_cache.result:
  New warning message when a too small value has been set for query cache
  size.
sql/set_var.cc:
  To avoid poluting the QC API the warning messages are moved into the 
  QC module.
sql/share/errmsg.txt:
  Changed error message so that minimal cache size always is hinted.
sql/sql_cache.cc:
  Modified the warning message so that the minimal cache size always is
  hinted.
      
  Added interface method Query_cache::get_minimal_size_limit().
sql/sql_cache.h:
  Modified the warning message so that the minimal cache size always is
  hinted.
      
  Added interface method Query_cache::get_minimal_size_limit().
This commit is contained in:
Kristofer Pettersson
2008-06-19 02:40:35 +02:00
parent 07350a6c93
commit 681236e100
5 changed files with 43 additions and 17 deletions

View File

@ -816,6 +816,16 @@ ulong Query_cache::resize(ulong query_cache_size_arg)
free_cache();
query_cache_size= query_cache_size_arg;
::query_cache_size= init_cache();
if (::query_cache_size != query_cache_size_arg)
{
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_QC_RESIZE, ER(ER_WARN_QC_RESIZE),
query_cache_size_arg,
get_minimal_size_limit(),
::query_cache_size);
}
STRUCT_UNLOCK(&structure_guard_mutex);
DBUG_RETURN(::query_cache_size);
}
@ -1614,6 +1624,25 @@ void Query_cache::init()
}
/**
Return the lowest possible query cache size.
*/
ulong Query_cache::get_minimal_size_limit()
{
ulong approx_additional_data_size= (sizeof(Query_cache) +
sizeof(gptr)*(def_query_hash_size+
def_table_hash_size));
ulong data_size= (min_allocation_unit << QUERY_CACHE_MEM_BIN_STEP_PWR2 <<
QUERY_CACHE_MEM_BIN_FIRST_STEP_PWR2) +
ALIGN_SIZE(1) - 1 +
(1 << QUERY_CACHE_MEM_BIN_STEP_PWR2) - 1 +
(1 << QUERY_CACHE_MEM_BIN_FIRST_STEP_PWR2) - 1;
return(data_size + approx_additional_data_size);
}
ulong Query_cache::init_cache()
{
uint mem_bin_count, num, step;