From 689910ac9c21e7e117a6fd28fb39233edb07fda4 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 26 Mar 2007 19:15:30 +0300 Subject: [PATCH] WL3527: 5.1 renamed "--old-mode" to "--old" to prevent ambiguity. "old" now appears in SHOW VARIABLES as a read-only option. mysql-test/r/group_by.result: WL3527: 5.1 test case mysql-test/t/group_by.test: WL3527: 5.1 test case sql/mysqld.cc: WL3527: 5.1 renamed the "old-mode" to "old" to fit the options naming scheme sql/set_var.cc: WL3527: 5.1 added "-old" as read-only system variable sql/set_var.h: WL3527: 5.1 added class for boolean pointer read-only option to support the "--old" option. sql/sql_base.cc: fixed 5.0->5.1 merge problems. --- mysql-test/r/group_by.result | 5 +++++ mysql-test/t/group_by.test | 7 ++++++- sql/mysqld.cc | 2 +- sql/set_var.cc | 3 +++ sql/set_var.h | 10 ++++++++++ sql/sql_base.cc | 2 -- 6 files changed, 25 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result index 5cff5fec7ed..c7464bb21d2 100644 --- a/mysql-test/r/group_by.result +++ b/mysql-test/r/group_by.result @@ -1141,4 +1141,9 @@ EXPLAIN SELECT 1 FROM t2 WHERE a IN id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t2 index NULL a 5 NULL 4 Using where; Using index 2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 256 Using where +SHOW VARIABLES LIKE 'old'; +Variable_name Value +old OFF +SET @@old = off; +ERROR HY000: Variable 'old' is a read only variable DROP TABLE t1, t2; diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test index a3318745764..fb9c09d4763 100644 --- a/mysql-test/t/group_by.test +++ b/mysql-test/t/group_by.test @@ -755,7 +755,8 @@ SET SQL_MODE = ''; # # Bug #21174: Index degrades sort performance and -# optimizer does not honor IGNORE INDEX +# optimizer does not honor IGNORE INDEX. +# a.k.a WL3527. # CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a), @@ -819,4 +820,8 @@ EXPLAIN SELECT a, SUM(b) FROM t2 IGNORE INDEX (a) GROUP BY a LIMIT 2; EXPLAIN SELECT 1 FROM t2 WHERE a IN (SELECT a FROM t1 USE INDEX (i2) IGNORE INDEX (i2)); +SHOW VARIABLES LIKE 'old'; +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@old = off; + DROP TABLE t1, t2; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index a0687929de5..887d14e7f38 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -6268,7 +6268,7 @@ The minimum value for this variable is 4096.", (gptr*) &global_system_variables.net_write_timeout, (gptr*) &max_system_variables.net_write_timeout, 0, GET_ULONG, REQUIRED_ARG, NET_WRITE_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0}, - { "old_mode", OPT_OLD_MODE, "Use compatible behaviour.", + { "old", OPT_OLD_MODE, "Use compatible behavior.", (gptr*) &global_system_variables.old_mode, (gptr*) &max_system_variables.old_mode, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, diff --git a/sql/set_var.cc b/sql/set_var.cc index fef6fccfd06..7f55556c134 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -356,6 +356,8 @@ sys_var_thd_ulong sys_net_retry_count("net_retry_count", &SV::net_retry_count, 0, fix_net_retry_count); sys_var_thd_bool sys_new_mode("new", &SV::new_mode); +sys_var_bool_ptr_readonly sys_old_mode("old", + &global_system_variables.old_mode); sys_var_thd_bool sys_old_alter_table("old_alter_table", &SV::old_alter_table); sys_var_thd_bool sys_old_passwords("old_passwords", &SV::old_passwords); @@ -942,6 +944,7 @@ SHOW_VAR init_vars[]= { {sys_net_retry_count.name, (char*) &sys_net_retry_count, SHOW_SYS}, {sys_net_write_timeout.name,(char*) &sys_net_write_timeout, SHOW_SYS}, {sys_new_mode.name, (char*) &sys_new_mode, SHOW_SYS}, + {sys_old_mode.name, (char*) &sys_old_mode, SHOW_SYS}, {sys_old_alter_table.name, (char*) &sys_old_alter_table, SHOW_SYS}, {sys_old_passwords.name, (char*) &sys_old_passwords, SHOW_SYS}, {"open_files_limit", (char*) &open_files_limit, SHOW_LONG}, diff --git a/sql/set_var.h b/sql/set_var.h index 8887d91ec69..eac03fce610 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -169,6 +169,16 @@ public: }; +class sys_var_bool_ptr_readonly :public sys_var_bool_ptr +{ +public: + sys_var_bool_ptr_readonly(const char *name_arg, my_bool *value_arg) + :sys_var_bool_ptr(name_arg, value_arg) + {} + bool is_readonly() const { return 1; } +}; + + class sys_var_str :public sys_var { public: diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 4d7c2c485ab..995ed220d10 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -5772,7 +5772,6 @@ bool setup_tables_and_check_access(THD *thd, TABLE_LIST *leaves_tmp= NULL; bool first_table= true; - thd->leaf_count= 0; if (setup_tables(thd, context, from_clause, tables, &leaves_tmp, select_insert)) return TRUE; @@ -5790,7 +5789,6 @@ bool setup_tables_and_check_access(THD *thd, return TRUE; } first_table= 0; - thd->leaf_count++; } return FALSE; }