From 3005ed88b474b4f0738a88dee729fb868804750c Mon Sep 17 00:00:00 2001
From: unknown <timour@mysql.com>
Date: Thu, 20 May 2004 17:47:43 +0300
Subject: [PATCH] Better names for two system variables: - heuristic =>
 optimizer_prune_level - plan_search_depth => optimizer_search_depth

---
 mysql-test/r/greedy_optimizer.result | 62 ++++++++++++++--------------
 mysql-test/t/greedy_optimizer.test   | 54 ++++++++++++------------
 sql/mysqld.cc                        | 20 ++++-----
 sql/set_var.cc                       | 17 ++++----
 sql/sql_class.h                      |  4 +-
 sql/sql_select.cc                    | 28 ++++++-------
 6 files changed, 94 insertions(+), 91 deletions(-)

diff --git a/mysql-test/r/greedy_optimizer.result b/mysql-test/r/greedy_optimizer.result
index 3adc0a93cec..69d9b9af666 100644
--- a/mysql-test/r/greedy_optimizer.result
+++ b/mysql-test/r/greedy_optimizer.result
@@ -108,15 +108,15 @@ insert into t7 values (18,2,3,4,5,6);
 insert into t7 values (19,2,3,4,5,6);
 insert into t7 values (20,2,3,4,5,6);
 insert into t7 values (21,2,3,4,5,6);
-select @@plan_search_depth;
-@@plan_search_depth
+select @@optimizer_search_depth;
+@@optimizer_search_depth
 62
-select @@heuristic;
-@@heuristic
+select @@optimizer_prune_level;
+@@optimizer_prune_level
 1
-set plan_search_depth=63;
-select @@plan_search_depth;
-@@plan_search_depth
+set optimizer_search_depth=63;
+select @@optimizer_search_depth;
+@@optimizer_search_depth
 63
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -190,13 +190,13 @@ id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 show status like 'Last_query_cost';
 Variable_name	Value
 Last_query_cost	794.838037
-set heuristic=0;
-select @@heuristic;
-@@heuristic
+set optimizer_prune_level=0;
+select @@optimizer_prune_level;
+@@optimizer_prune_level
 0
-set plan_search_depth=0;
-select @@plan_search_depth;
-@@plan_search_depth
+set optimizer_search_depth=0;
+select @@optimizer_search_depth;
+@@optimizer_search_depth
 0
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -270,9 +270,9 @@ id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 show status like 'Last_query_cost';
 Variable_name	Value
 Last_query_cost	274.419727
-set plan_search_depth=1;
-select @@plan_search_depth;
-@@plan_search_depth
+set optimizer_search_depth=1;
+select @@optimizer_search_depth;
+@@optimizer_search_depth
 1
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -346,9 +346,9 @@ id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 show status like 'Last_query_cost';
 Variable_name	Value
 Last_query_cost	794.838037
-set plan_search_depth=62;
-select @@plan_search_depth;
-@@plan_search_depth
+set optimizer_search_depth=62;
+select @@optimizer_search_depth;
+@@optimizer_search_depth
 62
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -422,13 +422,13 @@ id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 show status like 'Last_query_cost';
 Variable_name	Value
 Last_query_cost	274.419727
-set heuristic=1;
-select @@heuristic;
-@@heuristic
+set optimizer_prune_level=1;
+select @@optimizer_prune_level;
+@@optimizer_prune_level
 1
-set plan_search_depth=0;
-select @@plan_search_depth;
-@@plan_search_depth
+set optimizer_search_depth=0;
+select @@optimizer_search_depth;
+@@optimizer_search_depth
 0
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -502,9 +502,9 @@ id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 show status like 'Last_query_cost';
 Variable_name	Value
 Last_query_cost	794.838037
-set plan_search_depth=1;
-select @@plan_search_depth;
-@@plan_search_depth
+set optimizer_search_depth=1;
+select @@optimizer_search_depth;
+@@optimizer_search_depth
 1
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
@@ -578,9 +578,9 @@ id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 show status like 'Last_query_cost';
 Variable_name	Value
 Last_query_cost	794.838037
-set plan_search_depth=62;
-select @@plan_search_depth;
-@@plan_search_depth
+set optimizer_search_depth=62;
+select @@optimizer_search_depth;
+@@optimizer_search_depth
 62
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
diff --git a/mysql-test/t/greedy_optimizer.test b/mysql-test/t/greedy_optimizer.test
index f488286461b..e547d85b7f3 100644
--- a/mysql-test/t/greedy_optimizer.test
+++ b/mysql-test/t/greedy_optimizer.test
@@ -137,21 +137,21 @@ insert into t7 values (21,2,3,4,5,6);
 
 # Check the default values for the optimizer paramters
 
-select @@plan_search_depth;
-select @@heuristic;
+select @@optimizer_search_depth;
+select @@optimizer_prune_level;
 
 -- This value swithes back to the old implementation of 'find_best()'
--- set plan_search_depth=63; - old (independent of the heuristic)
+-- set optimizer_search_depth=63; - old (independent of the optimizer_prune_level)
 --
 -- These are the values for the parameters that control the greedy optimizer
--- (total 6 combinations - 3 for plan_search_depth, 2 for heuristic):
+-- (total 6 combinations - 3 for optimizer_search_depth, 2 for optimizer_prune_level):
 --
--- set plan_search_depth=0;  - automatic
--- set plan_search_depth=1;  - min
--- set plan_search_depth=62; - max (default)
+-- set optimizer_search_depth=0;  - automatic
+-- set optimizer_search_depth=1;  - min
+-- set optimizer_search_depth=62; - max (default)
 --
--- set heuristic=0 - exhaustive;
--- set heuristic=1 - heuristic; -- default
+-- set optimizer_prune_level=0 - exhaustive;
+-- set optimizer_prune_level=1 - heuristic; -- default
 
 
 #
@@ -167,8 +167,8 @@ select @@heuristic;
 # procedure 'find_best'. Notice that 'find_best' does not depend on the
 # choice of heuristic.
 
-set plan_search_depth=63;
-select @@plan_search_depth;
+set optimizer_search_depth=63;
+select @@optimizer_search_depth;
 
 -- 6-table join, chain
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
@@ -189,11 +189,11 @@ show status like 'Last_query_cost';
 
 # Test the new optimization procedures
 
-set heuristic=0;
-select @@heuristic;
+set optimizer_prune_level=0;
+select @@optimizer_prune_level;
 
-set plan_search_depth=0;
-select @@plan_search_depth;
+set optimizer_search_depth=0;
+select @@optimizer_search_depth;
 
 -- 6-table join, chain
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
@@ -211,8 +211,8 @@ show status like 'Last_query_cost';
 explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
 show status like 'Last_query_cost';
 
-set plan_search_depth=1;
-select @@plan_search_depth;
+set optimizer_search_depth=1;
+select @@optimizer_search_depth;
 
 -- 6-table join, chain
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
@@ -230,8 +230,8 @@ show status like 'Last_query_cost';
 explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
 show status like 'Last_query_cost';
 
-set plan_search_depth=62;
-select @@plan_search_depth;
+set optimizer_search_depth=62;
+select @@optimizer_search_depth;
 
 -- 6-table join, chain
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
@@ -250,11 +250,11 @@ explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and
 show status like 'Last_query_cost';
 
 
-set heuristic=1;
-select @@heuristic;
+set optimizer_prune_level=1;
+select @@optimizer_prune_level;
 
-set plan_search_depth=0;
-select @@plan_search_depth;
+set optimizer_search_depth=0;
+select @@optimizer_search_depth;
 
 -- 6-table join, chain
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
@@ -272,8 +272,8 @@ show status like 'Last_query_cost';
 explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
 show status like 'Last_query_cost';
 
-set plan_search_depth=1;
-select @@plan_search_depth;
+set optimizer_search_depth=1;
+select @@optimizer_search_depth;
 
 -- 6-table join, chain
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
@@ -291,8 +291,8 @@ show status like 'Last_query_cost';
 explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
 show status like 'Last_query_cost';
 
-set plan_search_depth=62;
-select @@plan_search_depth;
+set optimizer_search_depth=62;
+select @@optimizer_search_depth;
 
 -- 6-table join, chain
 explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 0f28c6e216a..a6c25f7f1c0 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -3777,8 +3777,8 @@ enum options_mysqld
   OPT_TIME_FORMAT,
   OPT_DATETIME_FORMAT,
   OPT_LOG_QUERIES_NOT_USING_INDEXES,
-  OPT_PLAN_SEARCH_DEPTH,
-  OPT_HEURISTIC
+  OPT_OPTIMIZER_SEARCH_DEPTH,
+  OPT_OPTIMIZER_PRUNE_LEVEL
 };
 
 
@@ -4403,11 +4403,6 @@ log and this option does nothing anymore.",
     "Use stopwords from this file instead of built-in list.",
     (gptr*) &ft_stopword_file, (gptr*) &ft_stopword_file, 0, GET_STR,
     REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
-  {"heuristic", OPT_HEURISTIC,
-   "Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on rows and read time.",
-   (gptr*) &global_system_variables.heuristic,
-   (gptr*) &max_system_variables.heuristic,
-   0, GET_ULONG, OPT_ARG, 1, 0, 1, 0, 1, 0},
 #ifdef HAVE_INNOBASE_DB
   {"innodb_mirrored_log_groups", OPT_INNODB_MIRRORED_LOG_GROUPS,
    "Number of identical copies of log groups we keep for the database. Currently this should be set to 1.",
@@ -4648,10 +4643,15 @@ The minimum value for this variable is 4096.",
    "If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 then mysqld will reserve max_connections*5 or max_connections + table_cache*2 (whichever is larger) number of files.",
    (gptr*) &open_files_limit, (gptr*) &open_files_limit, 0, GET_ULONG,
    REQUIRED_ARG, 0, 0, OS_FILE_LIMIT, 0, 1, 0},
-  {"plan_search_depth", OPT_PLAN_SEARCH_DEPTH,
+  {"optimizer_prune_level", OPT_OPTIMIZER_PRUNE_LEVEL,
+   "Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on number of retrieved rows.",
+   (gptr*) &global_system_variables.optimizer_prune_level,
+   (gptr*) &max_system_variables.optimizer_prune_level,
+   0, GET_ULONG, OPT_ARG, 1, 0, 1, 0, 1, 0},
+  {"optimizer_search_depth", OPT_OPTIMIZER_SEARCH_DEPTH,
    "Maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to compile a query. Smaller values 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 MAX_TABLES+2, the optimizer will switch to the original find_best (used for testing/comparison).",
-   (gptr*) &global_system_variables.plan_search_depth,
-   (gptr*) &max_system_variables.plan_search_depth,
+   (gptr*) &global_system_variables.optimizer_search_depth,
+   (gptr*) &max_system_variables.optimizer_search_depth,
    0, GET_ULONG, OPT_ARG, MAX_TABLES+1, 0, MAX_TABLES+2, 0, 1, 0},
    {"preload_buffer_size", OPT_PRELOAD_BUFFER_SIZE,
     "The size of the buffer that is allocated when preloading indexes",
diff --git a/sql/set_var.cc b/sql/set_var.cc
index cac43836a8f..babf62a1b62 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -160,7 +160,6 @@ sys_var_str             sys_ft_boolean_syntax("ft_boolean_syntax",
                                          sys_update_ftb_syntax,
                                          sys_default_ftb_syntax,
                                          ft_boolean_syntax);
-sys_var_thd_ulong       sys_heuristic("heuristic", &SV::heuristic);
 sys_var_str             sys_init_connect("init_connect", 0,
                                          sys_update_init_connect,
                                          sys_default_init_connect,0);
@@ -263,8 +262,10 @@ sys_var_thd_ulong	sys_net_retry_count("net_retry_count",
 					    0, fix_net_retry_count);
 sys_var_thd_bool	sys_new_mode("new", &SV::new_mode);
 sys_var_thd_bool	sys_old_passwords("old_passwords", &SV::old_passwords);
-sys_var_thd_ulong       sys_plan_search_depth("plan_search_depth",
-                                              &SV::plan_search_depth);
+sys_var_thd_ulong       sys_optimizer_prune_level("optimizer_prune_level",
+                                                  &SV::optimizer_prune_level);
+sys_var_thd_ulong       sys_optimizer_search_depth("optimizer_search_depth",
+                                                   &SV::optimizer_search_depth);
 sys_var_thd_ulong       sys_preload_buff_size("preload_buffer_size",
                                               &SV::preload_buff_size);
 sys_var_thd_ulong	sys_read_buff_size("read_buffer_size",
@@ -491,7 +492,6 @@ sys_var *sys_variables[]=
   &sys_ft_boolean_syntax,
   &sys_foreign_key_checks,
   &sys_group_concat_max_len,
-  &sys_heuristic,
   &sys_identity,
   &sys_init_connect,
   &sys_init_slave,
@@ -540,7 +540,8 @@ sys_var *sys_variables[]=
   &sys_net_write_timeout,
   &sys_new_mode,
   &sys_old_passwords,
-  &sys_plan_search_depth,
+  &sys_optimizer_prune_level,
+  &sys_optimizer_search_depth,
   &sys_preload_buff_size,
   &sys_pseudo_thread_id,
   &sys_query_alloc_block_size,
@@ -750,6 +751,10 @@ struct show_var_st init_vars[]= {
   {sys_new_mode.name,         (char*) &sys_new_mode,                SHOW_SYS},
   {sys_old_passwords.name,    (char*) &sys_old_passwords,           SHOW_SYS},
   {"open_files_limit",	      (char*) &open_files_limit,	    SHOW_LONG},
+  {sys_optimizer_prune_level.name, (char*) &sys_optimizer_prune_level,
+   SHOW_SYS},
+  {sys_optimizer_search_depth.name,(char*) &sys_optimizer_search_depth,
+   SHOW_SYS},
   {"pid_file",                (char*) pidfile_name,                 SHOW_CHAR},
   {"port",                    (char*) &mysqld_port,                  SHOW_INT},
   {sys_preload_buff_size.name, (char*) &sys_preload_buff_size,      SHOW_SYS},
@@ -817,8 +822,6 @@ struct show_var_st init_vars[]= {
   {"version_compile_machine", (char*) MACHINE_TYPE,		    SHOW_CHAR},
   {sys_os.name,		      (char*) &sys_os,			    SHOW_SYS},
   {sys_net_wait_timeout.name, (char*) &sys_net_wait_timeout,	    SHOW_SYS},
-  {sys_heuristic.name,        (char*) &sys_heuristic,               SHOW_SYS},
-  {sys_plan_search_depth.name,(char*) &sys_plan_search_depth,       SHOW_SYS},
   {NullS, NullS, SHOW_LONG}
 };
 
diff --git a/sql/sql_class.h b/sql/sql_class.h
index cb8da885b77..0cca76568b4 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -384,6 +384,8 @@ struct system_variables
   ulong net_retry_count;
   ulong net_wait_timeout;
   ulong net_write_timeout;
+  ulong optimizer_prune_level;
+  ulong optimizer_search_depth;
   ulong preload_buff_size;
   ulong query_cache_type;
   ulong read_buff_size;
@@ -392,8 +394,6 @@ struct system_variables
   ulong table_type;
   ulong tmp_table_size;
   ulong tx_isolation;
-  ulong heuristic;
-  ulong plan_search_depth;
   /* Determines which non-standard SQL behaviour should be enabled */
   ulong sql_mode;
   ulong default_week_format;
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 824edfa93d0..3cbf292cb2f 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -55,12 +55,12 @@ static void best_access_path(JOIN *join, JOIN_TAB *s, THD *thd,
                              double record_count, double read_time);
 static void optimize_straight_join(JOIN *join, table_map join_tables);
 static void greedy_search(JOIN *join, table_map remaining_tables,
-                             uint depth, uint heuristic);
+                             uint depth, uint prune_level);
 static void best_extension_by_limited_search(JOIN *join,
                                              table_map remaining_tables,
                                              uint idx, double record_count,
                                              double read_time, uint depth,
-                                             uint heuristic);
+                                             uint prune_level);
 static uint determine_search_depth(JOIN* join);
 static int join_tab_cmp(const void* ptr1, const void* ptr2);
 /*
@@ -3063,8 +3063,8 @@ best_access_path(JOIN      *join,
 static void
 choose_plan(JOIN *join, table_map join_tables)
 {
-  uint search_depth= join->thd->variables.plan_search_depth;
-  uint heuristic=    join->thd->variables.heuristic;
+  uint search_depth= join->thd->variables.optimizer_search_depth;
+  uint prune_level=  join->thd->variables.optimizer_prune_level;
 
   DBUG_ENTER("choose_plan");
 
@@ -3094,7 +3094,7 @@ choose_plan(JOIN *join, table_map join_tables)
       if (search_depth == 0)
         /* Automatically determine a reasonable value for 'search_depth' */
         search_depth= determine_search_depth(join);
-      greedy_search(join, join_tables, search_depth, heuristic);
+      greedy_search(join, join_tables, search_depth, prune_level);
     }
   }
 
@@ -3245,7 +3245,7 @@ optimize_straight_join(JOIN *join, table_map join_tables)
                      for the query
     remaining_tables set of tables not included into the partial plan yet
     search_depth     controlls the exhaustiveness of the search
-    heuristic        the pruning heuristics that should be applied during
+    prune_level      the pruning heuristics that should be applied during
                      search
 
   DESCRIPTION
@@ -3315,7 +3315,7 @@ static void
 greedy_search(JOIN      *join,
               table_map remaining_tables,
               uint      search_depth,
-              uint      heuristic)
+              uint      prune_level)
 {
   double    record_count= 1.0;
   double    read_time=    0.0;
@@ -3334,7 +3334,7 @@ greedy_search(JOIN      *join,
     /* Find the extension of the current QEP with the lowest cost */
     join->best_read= DBL_MAX;
     best_extension_by_limited_search(join, remaining_tables, idx, record_count,
-                                     read_time, search_depth, heuristic);
+                                     read_time, search_depth, prune_level);
 
     if (rem_size <= search_depth)
     {
@@ -3398,7 +3398,7 @@ greedy_search(JOIN      *join,
     read_time        the cost of the best partial plan
     search_depth     maximum depth of the recursion and thus size of the found
                      optimal plan (0 < search_depth <= join->tables+1).
-    heuristic        pruning heuristics that should be applied during optimization
+    prune_level      pruning heuristics that should be applied during optimization
                      (values: 0 = EXHAUSTIVE, 1 = PRUNE_BY_TIME_OR_ROWS)
 
   DESCRIPTION
@@ -3482,7 +3482,7 @@ greedy_search(JOIN      *join,
     When 'best_extension_by_limited_search' is called for the first time,
     'join->best_read' must be set to the largest possible value (e.g. DBL_MAX).
     The actual implementation provides a way to optionally use pruning
-    heuristics (controlled by the parameter 'heuristic') to reduce the search
+    heuristic (controlled by the parameter 'prune_level') to reduce the search
     space by skipping some partial plans.
     The parameter 'search_depth' provides control over the recursion
     depth, and thus the size of the resulting optimal plan.
@@ -3498,7 +3498,7 @@ best_extension_by_limited_search(JOIN      *join,
                                  double    record_count,
                                  double    read_time,
                                  uint      search_depth,
-                                 uint      heuristic)
+                                 uint      prune_level)
 {
   THD *thd= join->thd;
   if (thd->killed)  // Abort
@@ -3543,7 +3543,7 @@ best_extension_by_limited_search(JOIN      *join,
         Prune some less promising partial plans. This heuristic may miss
         the optimal QEPs, thus it results in a non-exhaustive search.
       */
-      if (heuristic == 1)
+      if (prune_level == 1)
       {
         if (best_record_count > current_record_count ||
             best_read_time > current_read_time ||
@@ -3563,7 +3563,7 @@ best_extension_by_limited_search(JOIN      *join,
         else
         {
           DBUG_EXECUTE("opt", print_plan(join, read_time, record_count, idx,
-                                         "prune_by_heuristic"););
+                                         "pruned_by_heuristic"););
           continue;
         }
       }
@@ -3577,7 +3577,7 @@ best_extension_by_limited_search(JOIN      *join,
                                          current_record_count,
                                          current_read_time,
                                          search_depth - 1,
-                                         heuristic);
+                                         prune_level);
         if (thd->killed)
           DBUG_VOID_RETURN;
         swap(JOIN_TAB*, join->best_ref[idx], *pos);
-- 
2.30.9