From 581996393a99177cfd4f47806dc0c90be6f4e1ee Mon Sep 17 00:00:00 2001 From: "serg@serg.mylan" <> Date: Sat, 20 Mar 2004 14:36:00 +0100 Subject: [PATCH] select @@smth=@@sys_str_var crash fixed --- mysql-test/r/variables.result | 2 ++ mysql-test/t/ctype_utf8.test | 4 ++-- mysql-test/t/variables.test | 3 +++ sql/mysqld.cc | 4 ++++ sql/set_var.cc | 16 +++++++++------- sql/set_var.h | 5 +++-- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result index 0e1babf258b..39d83f8b815 100644 --- a/mysql-test/r/variables.result +++ b/mysql-test/r/variables.result @@ -382,6 +382,8 @@ select 1; 1 select @@session.key_buffer_size; ERROR HY000: Variable 'key_buffer_size' is a GLOBAL variable +set ft_boolean_syntax = @@init_connect; +ERROR HY000: Variable 'ft_boolean_syntax' is a GLOBAL variable and should be set with SET GLOBAL select @@global.max_user_connections,@@local.max_join_size; @@global.max_user_connections @@session.max_join_size 100 200 diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test index 08a84df3ff7..964ac84fbbe 100644 --- a/mysql-test/t/ctype_utf8.test +++ b/mysql-test/t/ctype_utf8.test @@ -54,7 +54,7 @@ select * from t1; drop table t1; # -# Bug #2366 Wrong utf8 behaviour when data is trancated +# Bug #2366 Wrong utf8 behaviour when data is truncated # set names koi8r; create table t1 (s1 char(1) character set utf8); @@ -101,7 +101,7 @@ drop table t1; # # Bug 2699 -# UTF8 breaks primary keys for cols > 85 characters +# UTF8 breaks primary keys for cols > 333 characters # --error 1071 create table t1 (a text character set utf8, primary key(a(360))); diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test index 1ad171f94f6..c3f7c613005 100644 --- a/mysql-test/t/variables.test +++ b/mysql-test/t/variables.test @@ -270,6 +270,9 @@ select 1; --error 1238 select @@session.key_buffer_size; +--error 1229 +set ft_boolean_syntax = @@init_connect; + # # swap # diff --git a/sql/mysqld.cc b/sql/mysqld.cc index fc50b8c5c6e..525f3db3aff 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2189,10 +2189,14 @@ static int init_common_variables(const char *conf_file_name, int argc, sys_init_connect.value_length= 0; if ((sys_init_connect.value= opt_init_connect)) sys_init_connect.value_length= strlen(opt_init_connect); + else + sys_init_connect.value=my_strdup("",MYF(0)); sys_init_slave.value_length= 0; if ((sys_init_slave.value= opt_init_slave)) sys_init_slave.value_length= strlen(opt_init_slave); + else + sys_init_slave.value=my_strdup("",MYF(0)); if (use_temp_pool && bitmap_init(&temp_pool,0,1024,1)) return 1; diff --git a/sql/set_var.cc b/sql/set_var.cc index 576e33002da..9ce00f78465 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -121,7 +121,8 @@ sys_var_character_set_server sys_character_set_server("character_set_server"); sys_var_str sys_charset_system("character_set_system", sys_check_charset, sys_update_charset, - sys_set_default_charset); + sys_set_default_charset, + (char *)my_charset_utf8_general_ci.name); sys_var_character_set_database sys_character_set_database("character_set_database"); sys_var_character_set_client sys_character_set_client("character_set_client"); sys_var_character_set_connection sys_character_set_connection("character_set_connection"); @@ -150,13 +151,14 @@ sys_var_long_ptr sys_flush_time("flush_time", &flush_time); sys_var_str sys_ft_boolean_syntax("ft_boolean_syntax", sys_check_ftb_syntax, sys_update_ftb_syntax, - sys_default_ftb_syntax); + sys_default_ftb_syntax, + ft_boolean_syntax); sys_var_str sys_init_connect("init_connect", 0, sys_update_init_connect, - sys_default_init_connect); + sys_default_init_connect,0); sys_var_str sys_init_slave("init_slave", 0, sys_update_init_slave, - sys_default_init_slave); + sys_default_init_slave,0); sys_var_thd_ulong sys_interactive_timeout("interactive_timeout", &SV::net_interactive_timeout); sys_var_thd_ulong sys_join_buffer_size("join_buffer_size", @@ -667,11 +669,11 @@ struct show_var_st init_vars[]= { {sys_join_buffer_size.name, (char*) &sys_join_buffer_size, SHOW_SYS}, {sys_key_buffer_size.name, (char*) &sys_key_buffer_size, SHOW_SYS}, {sys_key_cache_age_threshold.name, (char*) &sys_key_cache_age_threshold, - SHOW_SYS}, + SHOW_SYS}, {sys_key_cache_block_size.name, (char*) &sys_key_cache_block_size, - SHOW_SYS}, + SHOW_SYS}, {sys_key_cache_division_limit.name, (char*) &sys_key_cache_division_limit, - SHOW_SYS}, + SHOW_SYS}, {"language", language, SHOW_CHAR}, {"large_files_support", (char*) &opt_large_files, SHOW_BOOL}, {sys_license.name, (char*) &sys_license, SHOW_SYS}, diff --git a/sql/set_var.h b/sql/set_var.h index ac20742da8c..8f21c5a729f 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -139,8 +139,9 @@ public: sys_var_str(const char *name_arg, sys_check_func check_func_arg, sys_update_func update_func_arg, - sys_set_default_func set_default_func_arg) - :sys_var(name_arg), check_func(check_func_arg), + sys_set_default_func set_default_func_arg, + char *value_arg) + :sys_var(name_arg), check_func(check_func_arg), value(value_arg), update_func(update_func_arg),set_default_func(set_default_func_arg) {} bool check(THD *thd, set_var *var);