Commit 8817c527 authored by Roy Lyseng's avatar Roy Lyseng

WL#5252: Deprecate --optimizer_search_depth=63

      
Add deprecation warning when variable optimizer_search_depth is given
the value 63.
      
  mysql-test/r/greedy_optimizer.result
    Updated with warning text.
  mysql-test/r/mysqld--help-notwin.result
    Updated with warning from mysqld --help --verbose.
  mysql-test/r/mysqld--help-win.result
    Updated with warning from mysqld --help --verbose.
  sql/sys_vars.cc
    Added an update check function to the constructor invocation for
    the optimizer_search_depth variable. The function emits a
    warning message for the value 63.
parent 82f63dfe
...@@ -115,6 +115,8 @@ select @@optimizer_prune_level; ...@@ -115,6 +115,8 @@ select @@optimizer_prune_level;
@@optimizer_prune_level @@optimizer_prune_level
1 1
set optimizer_search_depth=63; set optimizer_search_depth=63;
Warnings:
Warning 1287 'optimizer-search-depth=63' is deprecated and will be removed in a future release. Please use a search depth less than 63 instead
select @@optimizer_search_depth; select @@optimizer_search_depth;
@@optimizer_search_depth @@optimizer_search_depth
63 63
......
...@@ -396,8 +396,9 @@ The following options may be given as the first argument: ...@@ -396,8 +396,9 @@ The following options may be given as the first argument:
relation result in faster optimization, but may produce relation result in faster optimization, but may produce
very bad query plans. If set to 0, the system will very bad query plans. If set to 0, the system will
automatically pick a reasonable value; if set to 63, the automatically pick a reasonable value; if set to 63, the
optimizer will switch to the original find_best optimizer will switch to the original find_best search.
search(used for testing/comparison) NOTE: The value 63 and its associated behaviour is
deprecated
--optimizer-switch=name --optimizer-switch=name
optimizer_switch=option=val[,option=val...], where option optimizer_switch=option=val[,option=val...], where option
is one of {index_merge, index_merge_union, is one of {index_merge, index_merge_union,
......
...@@ -396,8 +396,9 @@ The following options may be given as the first argument: ...@@ -396,8 +396,9 @@ The following options may be given as the first argument:
relation result in faster optimization, but may produce relation result in faster optimization, but may produce
very bad query plans. If set to 0, the system will very bad query plans. If set to 0, the system will
automatically pick a reasonable value; if set to 63, the automatically pick a reasonable value; if set to 63, the
optimizer will switch to the original find_best optimizer will switch to the original find_best search.
search(used for testing/comparison) NOTE: The value 63 and its associated behaviour is
deprecated
--optimizer-switch=name --optimizer-switch=name
optimizer_switch=option=val[,option=val...], where option optimizer_switch=option=val[,option=val...], where option
is one of {index_merge, index_merge_union, is one of {index_merge, index_merge_union,
......
...@@ -1305,6 +1305,17 @@ static Sys_var_ulong Sys_optimizer_prune_level( ...@@ -1305,6 +1305,17 @@ static Sys_var_ulong Sys_optimizer_prune_level(
SESSION_VAR(optimizer_prune_level), CMD_LINE(REQUIRED_ARG), SESSION_VAR(optimizer_prune_level), CMD_LINE(REQUIRED_ARG),
VALID_RANGE(0, 1), DEFAULT(1), BLOCK_SIZE(1)); VALID_RANGE(0, 1), DEFAULT(1), BLOCK_SIZE(1));
/** Warns about deprecated value 63 */
static bool fix_optimizer_search_depth(sys_var *self, THD *thd,
enum_var_type type)
{
SV *sv= type == OPT_GLOBAL ? &global_system_variables : &thd->variables;
if (sv->optimizer_search_depth == MAX_TABLES+2)
WARN_DEPRECATED(thd, 6, 0, "optimizer-search-depth=63",
"a search depth less than 63");
return false;
}
static Sys_var_ulong Sys_optimizer_search_depth( static Sys_var_ulong Sys_optimizer_search_depth(
"optimizer_search_depth", "optimizer_search_depth",
"Maximum depth of search performed by the query optimizer. Values " "Maximum depth of search performed by the query optimizer. Values "
...@@ -1313,10 +1324,12 @@ static Sys_var_ulong Sys_optimizer_search_depth( ...@@ -1313,10 +1324,12 @@ static Sys_var_ulong Sys_optimizer_search_depth(
"than the number of tables in a relation result in faster " "than the number of tables in a relation result in faster "
"optimization, but may produce very bad query plans. If set to 0, " "optimization, but may produce very bad query plans. If set to 0, "
"the system will automatically pick a reasonable value; if set to " "the system will automatically pick a reasonable value; if set to "
"63, the optimizer will switch to the original find_best search" "63, the optimizer will switch to the original find_best search. "
"(used for testing/comparison)", "NOTE: The value 63 and its associated behaviour is deprecated",
SESSION_VAR(optimizer_search_depth), CMD_LINE(REQUIRED_ARG), SESSION_VAR(optimizer_search_depth), CMD_LINE(REQUIRED_ARG),
VALID_RANGE(0, MAX_TABLES+2), DEFAULT(MAX_TABLES+1), BLOCK_SIZE(1)); VALID_RANGE(0, MAX_TABLES+2), DEFAULT(MAX_TABLES+1), BLOCK_SIZE(1),
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
ON_UPDATE(fix_optimizer_search_depth));
static const char *optimizer_switch_names[]= static const char *optimizer_switch_names[]=
{ {
......
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