mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user