Commit 51ef885c authored by Kristofer Pettersson's avatar Kristofer Pettersson

merge

parents d56f9ab7 f81c2f07
...@@ -566,7 +566,7 @@ select * from t1; ...@@ -566,7 +566,7 @@ select * from t1;
a a
set GLOBAL query_cache_size=1024; set GLOBAL query_cache_size=1024;
Warnings: Warnings:
Warning 1282 Query cache failed to set size 1024; new query cache size is 0 Warning 1282 Query cache failed to set size 1024 (minimal value: 41297); new query cache size is 0
show global variables like "query_cache_size"; show global variables like "query_cache_size";
Variable_name Value Variable_name Value
query_cache_size 0 query_cache_size 0
...@@ -574,7 +574,7 @@ select * from t1; ...@@ -574,7 +574,7 @@ select * from t1;
a a
set GLOBAL query_cache_size=10240; set GLOBAL query_cache_size=10240;
Warnings: Warnings:
Warning 1282 Query cache failed to set size 10240; new query cache size is 0 Warning 1282 Query cache failed to set size 10240 (minimal value: 41297); new query cache size is 0
show global variables like "query_cache_size"; show global variables like "query_cache_size";
Variable_name Value Variable_name Value
query_cache_size 0 query_cache_size 0
...@@ -582,7 +582,7 @@ select * from t1; ...@@ -582,7 +582,7 @@ select * from t1;
a a
set GLOBAL query_cache_size=20480; set GLOBAL query_cache_size=20480;
Warnings: Warnings:
Warning 1282 Query cache failed to set size 20480; new query cache size is 0 Warning 1282 Query cache failed to set size 20480 (minimal value: 41297); new query cache size is 0
show global variables like "query_cache_size"; show global variables like "query_cache_size";
Variable_name Value Variable_name Value
query_cache_size 0 query_cache_size 0
...@@ -590,7 +590,7 @@ select * from t1; ...@@ -590,7 +590,7 @@ select * from t1;
a a
set GLOBAL query_cache_size=40960; set GLOBAL query_cache_size=40960;
Warnings: Warnings:
Warning 1282 Query cache failed to set size 40960; new query cache size is 0 Warning 1282 Query cache failed to set size 40960 (minimal value: 41297); new query cache size is 0
show global variables like "query_cache_size"; show global variables like "query_cache_size";
Variable_name Value Variable_name Value
query_cache_size 0 query_cache_size 0
......
...@@ -1046,19 +1046,7 @@ static void fix_net_retry_count(THD *thd __attribute__((unused)), ...@@ -1046,19 +1046,7 @@ static void fix_net_retry_count(THD *thd __attribute__((unused)),
static void fix_query_cache_size(THD *thd, enum_var_type type) static void fix_query_cache_size(THD *thd, enum_var_type type)
{ {
#ifdef HAVE_QUERY_CACHE #ifdef HAVE_QUERY_CACHE
ulong new_cache_size= query_cache.resize(query_cache_size); query_cache_size= query_cache.resize(query_cache_size);
/*
Note: query_cache_size is a global variable reflecting the
requested cache size. See also query_cache_size_arg
*/
if (query_cache_size != new_cache_size)
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_QC_RESIZE, ER(ER_WARN_QC_RESIZE),
query_cache_size, new_cache_size);
query_cache_size= new_cache_size;
#endif #endif
} }
......
...@@ -4995,13 +4995,13 @@ ER_WRONG_NAME_FOR_CATALOG 42000 ...@@ -4995,13 +4995,13 @@ ER_WRONG_NAME_FOR_CATALOG 42000
spa "Nombre de catalog incorrecto '%-.100s'" spa "Nombre de catalog incorrecto '%-.100s'"
swe "Felaktigt katalog namn '%-.100s'" swe "Felaktigt katalog namn '%-.100s'"
ER_WARN_QC_RESIZE ER_WARN_QC_RESIZE
eng "Query cache failed to set size %lu; new query cache size is %lu" eng "Query cache failed to set size %lu (minimal value: %lu); new query cache size is %lu"
ger "nderung der Query-Cache-Gre auf %lu fehlgeschlagen; neue Query-Cache-Gre ist %lu" ger "nderung der Query-Cache-Gre auf %lu (Minimale Zahl: %lu) fehlgeschlagen; neue Query-Cache-Gre ist %lu"
por "Falha em Query cache para configurar tamanho %lu, novo tamanho de query cache %lu" por "Falha em Query cache para configurar tamanho %lu (Nmero mnimo: %lu), novo tamanho de query cache %lu"
rus " %lu, - %lu" rus " %lu (minimal value: %lu), - %lu"
spa "Query cache fallada para configurar tamao %lu, nuevo tamao de query cache es %lu" spa "Query cache fallada para configurar tamao %lu (Nmero mnimo: %lu), nuevo tamao de query cache es %lu"
swe "Storleken av "Query cache" kunde inte sttas till %lu, ny storlek r %lu" swe "Storleken av "Query cache" kunde inte sttas till %lu (minsta vrde: %lu); ny storlek r %lu"
ukr " Ԧ ͦ %lu, ͦ Ԧ - %lu" ukr " Ԧ ͦ %lu (minimal value: %lu), ͦ Ԧ - %lu"
ER_BAD_FT_COLUMN ER_BAD_FT_COLUMN
eng "Column '%-.192s' cannot be part of FULLTEXT index" eng "Column '%-.192s' cannot be part of FULLTEXT index"
ger "Feld '%-.192s' kann nicht Teil eines FULLTEXT-Index sein" ger "Feld '%-.192s' kann nicht Teil eines FULLTEXT-Index sein"
......
...@@ -942,18 +942,25 @@ ulong Query_cache::resize(ulong query_cache_size_arg) ...@@ -942,18 +942,25 @@ ulong Query_cache::resize(ulong query_cache_size_arg)
} while (block != queries_blocks); } while (block != queries_blocks);
} }
free_cache(); free_cache();
query_cache_size= query_cache_size_arg; query_cache_size= query_cache_size_arg;
new_query_cache_size= init_cache(); ::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_LOCK(&structure_guard_mutex); STRUCT_LOCK(&structure_guard_mutex);
m_cache_status= Query_cache::NO_FLUSH_IN_PROGRESS; m_cache_status= Query_cache::NO_FLUSH_IN_PROGRESS;
pthread_cond_signal(&COND_cache_status_changed); pthread_cond_signal(&COND_cache_status_changed);
if (new_query_cache_size)
DBUG_EXECUTE("check_querycache",check_integrity(1););
STRUCT_UNLOCK(&structure_guard_mutex); STRUCT_UNLOCK(&structure_guard_mutex);
DBUG_RETURN(new_query_cache_size); DBUG_RETURN(::query_cache_size);
} }
...@@ -1816,6 +1823,24 @@ void Query_cache::init() ...@@ -1816,6 +1823,24 @@ void Query_cache::init()
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
/**
Return the lowest possible query cache size.
*/
ulong Query_cache::get_minimal_size_limit()
{
ulong approx_additional_data_size= (sizeof(Query_cache) +
sizeof(void*)*(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() ulong Query_cache::init_cache()
{ {
......
...@@ -282,6 +282,8 @@ class Query_cache ...@@ -282,6 +282,8 @@ class Query_cache
void free_query_internal(Query_cache_block *point); void free_query_internal(Query_cache_block *point);
void invalidate_table_internal(THD *thd, uchar *key, uint32 key_length); void invalidate_table_internal(THD *thd, uchar *key, uint32 key_length);
ulong get_minimal_size_limit();
protected: protected:
/* /*
The following mutex is locked when searching or changing global The following mutex is locked when searching or changing global
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment