List:Commits« Previous MessageNext Message »
From:Andrei Elkin Date:March 18 2008 3:49pm
Subject:Re: bk commit into 5.0 tree (thek:1.2594) BUG#30087
View as plain text  
Kristofer, hello.

The patch is approved here.

Couple of suggestions were discussed on #rep.

Thanks for making it!

regards,

Andrei


> Below is the list of changes that have just been committed into a local
> 5.0 repository of thek.  When thek does a push these changes
> will be propagated to the main repository and, within 24 hours after the
> push, to the public repository.
> For information on how to access the public repository
> see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
>
> ChangeSet@stripped, 2008-03-17 15:32:18+01:00, thek@adventure.(none) +5 -0
>   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@stripped, 2008-03-17 15:32:17+01:00,
> thek@adventure.(none) +4 -4
>     New warning message when a too small value has been set for query cache
>     size.
>
>   sql/set_var.cc@stripped, 2008-03-17 15:32:17+01:00, thek@adventure.(none) +1 -6
>     To avoid poluting the QC API the warning messages are moved into the 
>     QC module.
>
>   sql/share/errmsg.txt@stripped, 2008-03-17 15:32:17+01:00, thek@adventure.(none) +11 -7
>     Changed error message so that minimal cache size always is hinted.
>
>   sql/sql_cache.cc@stripped, 2008-03-17 15:32:17+01:00, thek@adventure.(none) +29 -0
>     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@stripped, 2008-03-17 15:32:17+01:00, thek@adventure.(none) +2 -0
>     Modified the warning message so that the minimal cache size always is
>     hinted.
>     
>     Added interface method Query_cache::get_minimal_size_limit().
>
> diff -Nrup a/mysql-test/r/query_cache.result b/mysql-test/r/query_cache.result
> --- a/mysql-test/r/query_cache.result	2007-08-21 17:47:03 +02:00
> +++ b/mysql-test/r/query_cache.result	2008-03-17 15:32:17 +01:00
> @@ -564,7 +564,7 @@ select * from t1;
>  a
>  set GLOBAL query_cache_size=1024;
>  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";
>  Variable_name	Value
>  query_cache_size	0
> @@ -572,7 +572,7 @@ select * from t1;
>  a
>  set GLOBAL query_cache_size=10240;
>  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";
>  Variable_name	Value
>  query_cache_size	0
> @@ -580,7 +580,7 @@ select * from t1;
>  a
>  set GLOBAL query_cache_size=20480;
>  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";
>  Variable_name	Value
>  query_cache_size	0
> @@ -588,7 +588,7 @@ select * from t1;
>  a
>  set GLOBAL query_cache_size=40960;
>  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";
>  Variable_name	Value
>  query_cache_size	0
> diff -Nrup a/sql/set_var.cc b/sql/set_var.cc
> --- a/sql/set_var.cc	2008-01-10 12:01:24 +01:00
> +++ b/sql/set_var.cc	2008-03-17 15:32:17 +01:00
> @@ -1343,12 +1343,7 @@ static void fix_net_retry_count(THD *thd
>  static void fix_query_cache_size(THD *thd, enum_var_type type)
>  {
>  #ifdef HAVE_QUERY_CACHE
> -  ulong requested= query_cache_size;
> -  query_cache.resize(query_cache_size);
> -  if (requested != query_cache_size)
> -    push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
> -			ER_WARN_QC_RESIZE, ER(ER_WARN_QC_RESIZE),
> -			requested, query_cache_size);
> +  query_cache_size= query_cache.resize(query_cache_size);
>  #endif
>  }
>  
> diff -Nrup a/sql/share/errmsg.txt b/sql/share/errmsg.txt
> --- a/sql/share/errmsg.txt	2007-10-23 13:15:27 +02:00
> +++ b/sql/share/errmsg.txt	2008-03-17 15:32:17 +01:00
> @@ -4992,13 +4992,13 @@ ER_WRONG_NAME_FOR_CATALOG 42000 
>  	spa "Nombre de catalog incorrecto '%-.100s'"
>  	swe "Felaktigt katalog namn '%-.100s'"
>  ER_WARN_QC_RESIZE  
> -	eng "Query cache failed to set size %lu; new query cache size is %lu"
> -	ger "дnderung der Query-Cache-GrЖъe auf %lu fehlgeschlagen; neue
> Query-Cache-GrЖъe ist %lu"
> -	por "Falha em Query cache para configurar tamanho %lu, novo tamanho de query cache
> И %lu"
> -	rus "Кеш запросов не может установить размер %lu,
> новый размер кеша зпросов - %lu"
> -	spa "Query cache fallada para configurar tamaЯo %lu, nuevo tamaЯo de query cache
> es %lu"
> -	swe "Storleken av "Query cache" kunde inte sДttas till %lu, ny storlek Дr %lu"
> -	ukr "Кеш запит╕в неспроможен встановити
> розм╕р %lu, новий розм╕р кеша запит╕в - %lu"
> +	eng "Query cache failed to set size %lu (minimal value: %lu); new query cache size
> is %lu"
> +	ger "дnderung der Query-Cache-GrЖъe auf %lu (Minimale Zahl: %lu) fehlgeschlagen;
> neue Query-Cache-GrЖъe ist %lu"
> +	por "Falha em Query cache para configurar tamanho %lu (NЗmero mМnimo: %lu), novo
> tamanho de query cache И %lu"
> +	rus "Кеш запросов не может установить размер %lu
> (minimal value: %lu), новый размер кеша зпросов - %lu"
> +	spa "Query cache fallada para configurar tamaЯo %lu (NЗmero mМnimo: %lu), nuevo
> tamaЯo de query cache es %lu"
> +	swe "Storleken av "Query cache" kunde inte sДttas till %lu (minsta vДrde: %lu);
> ny storlek Дr %lu"
> +	ukr "Кеш запит╕в неспроможен встановити
> розм╕р %lu (minimal value: %lu), новий розм╕р кеша запит╕в
> - %lu"
>  ER_BAD_FT_COLUMN  
>  	eng "Column '%-.64s' cannot be part of FULLTEXT index"
>  	ger "Feld '%-.64s' kann nicht Teil eines FULLTEXT-Index sein"
> @@ -5641,3 +5641,7 @@ ER_NAME_BECOMES_EMPTY
>          eng "Name '%-.64s' has become ''"
>  ER_AMBIGUOUS_FIELD_TERM
>  	eng "First character of the FIELDS TERMINATED string is ambiguous; please use
> non-optional and non-empty FIELDS ENCLOSED BY"
> +ER_WARN_QC_RESIZE2
> +	eng "Cache size %lu is too small to be efficient; minimal value is %lu. New size is
> %lu"
> +	swe "Cache-storleken %lu Дr fЖr liten fЖr att vara effektiv; minsta vДrdet Дr
> %lu. Ny storlek Дr %lu"
> +
> diff -Nrup a/sql/sql_cache.cc b/sql/sql_cache.cc
> --- a/sql/sql_cache.cc	2007-10-01 12:44:28 +02:00
> +++ b/sql/sql_cache.cc	2008-03-17 15:32:17 +01:00
> @@ -816,6 +816,16 @@ ulong Query_cache::resize(ulong query_ca
>    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);
>  }
> @@ -1613,6 +1623,25 @@ void Query_cache::init()
>    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(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()
>  {
> diff -Nrup a/sql/sql_cache.h b/sql/sql_cache.h
> --- a/sql/sql_cache.h	2007-08-17 16:55:19 +02:00
> +++ b/sql/sql_cache.h	2008-03-17 15:32:17 +01:00
> @@ -245,6 +245,8 @@ private:
>  
>    void free_query_internal(Query_cache_block *point);
>  
> +  ulong get_minimal_size_limit();
> +
>  protected:
>    /*
>      The following mutex is locked when searching or changing global
>
Thread
bk commit into 5.0 tree (thek:1.2594) BUG#30087kpettersson17 Mar
  • Re: bk commit into 5.0 tree (thek:1.2594) BUG#30087Andrei Elkin18 Mar