summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorRoy Lyseng <roy.lyseng@sun.com>2010-03-01 17:31:02 +0100
committerRoy Lyseng <roy.lyseng@sun.com>2010-03-01 17:31:02 +0100
commitb71eb4192c961465872f226d71a5569b2334d369 (patch)
treef9f7d9c57f50ce46409ecddbcdab82c14e18f122 /sql
parentde39f438e39214cb43e0bc2a52c2f210c6218bf8 (diff)
downloadmariadb-git-b71eb4192c961465872f226d71a5569b2334d369.tar.gz
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.
Diffstat (limited to 'sql')
-rw-r--r--sql/sys_vars.cc19
1 files changed, 16 insertions, 3 deletions
diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc
index b7aa4007153..3de2fd0a985 100644
--- a/sql/sys_vars.cc
+++ b/sql/sys_vars.cc
@@ -1305,6 +1305,17 @@ static Sys_var_ulong Sys_optimizer_prune_level(
SESSION_VAR(optimizer_prune_level), CMD_LINE(REQUIRED_ARG),
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(
"optimizer_search_depth",
"Maximum depth of search performed by the query optimizer. Values "
@@ -1313,10 +1324,12 @@ static Sys_var_ulong Sys_optimizer_search_depth(
"than the number of tables in a relation result in faster "
"optimization, but may produce very bad query plans. If set to 0, "
"the system will automatically pick a reasonable value; if set to "
- "63, the optimizer will switch to the original find_best search"
- "(used for testing/comparison)",
+ "63, the optimizer will switch to the original find_best search. "
+ "NOTE: The value 63 and its associated behaviour is deprecated",
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[]=
{