Loading mysql-test/r/variables.result +31 −0 Original line number Diff line number Diff line Loading @@ -637,6 +637,37 @@ set lc_time_names=0; select @@lc_time_names; @@lc_time_names en_US select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names en_US en_US set @@global.lc_time_names=fr_FR; select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names fr_FR en_US New connection select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names fr_FR fr_FR set @@lc_time_names=ru_RU; select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names fr_FR ru_RU Returnung to default connection select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names fr_FR en_US set lc_time_names=default; select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names fr_FR fr_FR set @@global.lc_time_names=default; select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names en_US fr_FR set @@lc_time_names=default; select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names en_US en_US set @test = @@query_prealloc_size; set @@query_prealloc_size = @test; select @@query_prealloc_size = @test; Loading mysql-test/t/variables.test +24 −0 Original line number Diff line number Diff line Loading @@ -504,6 +504,30 @@ select @@lc_time_names; set lc_time_names=0; select @@lc_time_names; # # Bug #22648 LC_TIME_NAMES: Setting GLOBAL has no effect # select @@global.lc_time_names, @@lc_time_names; set @@global.lc_time_names=fr_FR; select @@global.lc_time_names, @@lc_time_names; --echo New connection connect (con1,localhost,root,,); connection con1; select @@global.lc_time_names, @@lc_time_names; set @@lc_time_names=ru_RU; select @@global.lc_time_names, @@lc_time_names; disconnect con1; connection default; --echo Returnung to default connection select @@global.lc_time_names, @@lc_time_names; set lc_time_names=default; select @@global.lc_time_names, @@lc_time_names; set @@global.lc_time_names=default; select @@global.lc_time_names, @@lc_time_names; set @@lc_time_names=default; select @@global.lc_time_names, @@lc_time_names; # # Bug #13334: query_prealloc_size default less than minimum # Loading sql/mysql_priv.h +1 −0 Original line number Diff line number Diff line Loading @@ -149,6 +149,7 @@ typedef struct my_locale_st extern MY_LOCALE my_locale_en_US; extern MY_LOCALE *my_locales[]; extern MY_LOCALE *my_default_lc_time_names; MY_LOCALE *my_locale_by_name(const char *name); MY_LOCALE *my_locale_by_number(uint number); Loading sql/mysqld.cc +18 −1 Original line number Diff line number Diff line Loading @@ -315,6 +315,7 @@ static char *mysqld_user, *mysqld_chroot, *log_error_file_ptr; static char *opt_init_slave, *language_ptr, *opt_init_connect; static char *default_character_set_name; static char *character_set_filesystem_name; static char *lc_time_names_name; static char *my_bind_addr_str; static char *default_collation_name; static char compiled_default_collation_name[]= MYSQL_DEFAULT_COLLATION_NAME; Loading Loading @@ -495,6 +496,8 @@ CHARSET_INFO *system_charset_info, *files_charset_info ; CHARSET_INFO *national_charset_info, *table_alias_charset; CHARSET_INFO *character_set_filesystem; MY_LOCALE *my_default_lc_time_names; SHOW_COMP_OPTION have_isam; SHOW_COMP_OPTION have_raid, have_ssl, have_symlink, have_query_cache; SHOW_COMP_OPTION have_geometry, have_rtree_keys, have_dlopen; Loading Loading @@ -2826,6 +2829,14 @@ static int init_common_variables(const char *conf_file_name, int argc, return 1; global_system_variables.character_set_filesystem= character_set_filesystem; if (!(my_default_lc_time_names= my_locale_by_name(lc_time_names_name))) { sql_print_error("Unknown locale: '%s'", MYF(0), lc_time_names_name); return 1; } global_system_variables.lc_time_names= my_default_lc_time_names; sys_init_connect.value_length= 0; if ((sys_init_connect.value= opt_init_connect)) sys_init_connect.value_length= strlen(opt_init_connect); Loading Loading @@ -4749,6 +4760,7 @@ enum options_mysqld OPT_DEFAULT_COLLATION, OPT_CHARACTER_SET_CLIENT_HANDSHAKE, OPT_CHARACTER_SET_FILESYSTEM, OPT_LC_TIME_NAMES, OPT_INIT_CONNECT, OPT_INIT_SLAVE, OPT_SECURE_AUTH, Loading Loading @@ -5078,6 +5090,11 @@ Disable with --skip-innodb-doublewrite.", (gptr*) &innobase_use_doublewrite, "Client error messages in given language. May be given as a full path.", (gptr*) &language_ptr, (gptr*) &language_ptr, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"lc-time-names", OPT_LC_TIME_NAMES, "Set the language used for the month names and the days of the week.", (gptr*) &lc_time_names_name, (gptr*) &lc_time_names_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, {"local-infile", OPT_LOCAL_INFILE, "Enable/disable LOAD DATA LOCAL INFILE (takes values 1|0).", (gptr*) &opt_local_infile, Loading Loading @@ -6552,7 +6569,7 @@ static void mysql_init_variables(void) default_collation_name= compiled_default_collation_name; sys_charset_system.value= (char*) system_charset_info->csname; character_set_filesystem_name= (char*) "binary"; lc_time_names_name= (char*) "en_US"; /* Set default values for some option variables */ global_system_variables.table_type= DB_TYPE_MYISAM; Loading sql/set_var.cc +11 −3 Original line number Diff line number Diff line Loading @@ -2825,6 +2825,9 @@ bool sys_var_thd_lc_time_names::check(THD *thd, set_var *var) bool sys_var_thd_lc_time_names::update(THD *thd, set_var *var) { if (var->type == OPT_GLOBAL) global_system_variables.lc_time_names= var->save_result.locale_value; else thd->variables.lc_time_names= var->save_result.locale_value; return 0; } Loading @@ -2833,13 +2836,18 @@ bool sys_var_thd_lc_time_names::update(THD *thd, set_var *var) byte *sys_var_thd_lc_time_names::value_ptr(THD *thd, enum_var_type type, LEX_STRING *base) { return (byte *)(thd->variables.lc_time_names->name); return type == OPT_GLOBAL ? (byte *) global_system_variables.lc_time_names->name : (byte *) thd->variables.lc_time_names->name; } void sys_var_thd_lc_time_names::set_default(THD *thd, enum_var_type type) { thd->variables.lc_time_names = &my_locale_en_US; if (type == OPT_GLOBAL) global_system_variables.lc_time_names= my_default_lc_time_names; else thd->variables.lc_time_names= global_system_variables.lc_time_names; } /* Loading Loading
mysql-test/r/variables.result +31 −0 Original line number Diff line number Diff line Loading @@ -637,6 +637,37 @@ set lc_time_names=0; select @@lc_time_names; @@lc_time_names en_US select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names en_US en_US set @@global.lc_time_names=fr_FR; select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names fr_FR en_US New connection select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names fr_FR fr_FR set @@lc_time_names=ru_RU; select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names fr_FR ru_RU Returnung to default connection select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names fr_FR en_US set lc_time_names=default; select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names fr_FR fr_FR set @@global.lc_time_names=default; select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names en_US fr_FR set @@lc_time_names=default; select @@global.lc_time_names, @@lc_time_names; @@global.lc_time_names @@lc_time_names en_US en_US set @test = @@query_prealloc_size; set @@query_prealloc_size = @test; select @@query_prealloc_size = @test; Loading
mysql-test/t/variables.test +24 −0 Original line number Diff line number Diff line Loading @@ -504,6 +504,30 @@ select @@lc_time_names; set lc_time_names=0; select @@lc_time_names; # # Bug #22648 LC_TIME_NAMES: Setting GLOBAL has no effect # select @@global.lc_time_names, @@lc_time_names; set @@global.lc_time_names=fr_FR; select @@global.lc_time_names, @@lc_time_names; --echo New connection connect (con1,localhost,root,,); connection con1; select @@global.lc_time_names, @@lc_time_names; set @@lc_time_names=ru_RU; select @@global.lc_time_names, @@lc_time_names; disconnect con1; connection default; --echo Returnung to default connection select @@global.lc_time_names, @@lc_time_names; set lc_time_names=default; select @@global.lc_time_names, @@lc_time_names; set @@global.lc_time_names=default; select @@global.lc_time_names, @@lc_time_names; set @@lc_time_names=default; select @@global.lc_time_names, @@lc_time_names; # # Bug #13334: query_prealloc_size default less than minimum # Loading
sql/mysql_priv.h +1 −0 Original line number Diff line number Diff line Loading @@ -149,6 +149,7 @@ typedef struct my_locale_st extern MY_LOCALE my_locale_en_US; extern MY_LOCALE *my_locales[]; extern MY_LOCALE *my_default_lc_time_names; MY_LOCALE *my_locale_by_name(const char *name); MY_LOCALE *my_locale_by_number(uint number); Loading
sql/mysqld.cc +18 −1 Original line number Diff line number Diff line Loading @@ -315,6 +315,7 @@ static char *mysqld_user, *mysqld_chroot, *log_error_file_ptr; static char *opt_init_slave, *language_ptr, *opt_init_connect; static char *default_character_set_name; static char *character_set_filesystem_name; static char *lc_time_names_name; static char *my_bind_addr_str; static char *default_collation_name; static char compiled_default_collation_name[]= MYSQL_DEFAULT_COLLATION_NAME; Loading Loading @@ -495,6 +496,8 @@ CHARSET_INFO *system_charset_info, *files_charset_info ; CHARSET_INFO *national_charset_info, *table_alias_charset; CHARSET_INFO *character_set_filesystem; MY_LOCALE *my_default_lc_time_names; SHOW_COMP_OPTION have_isam; SHOW_COMP_OPTION have_raid, have_ssl, have_symlink, have_query_cache; SHOW_COMP_OPTION have_geometry, have_rtree_keys, have_dlopen; Loading Loading @@ -2826,6 +2829,14 @@ static int init_common_variables(const char *conf_file_name, int argc, return 1; global_system_variables.character_set_filesystem= character_set_filesystem; if (!(my_default_lc_time_names= my_locale_by_name(lc_time_names_name))) { sql_print_error("Unknown locale: '%s'", MYF(0), lc_time_names_name); return 1; } global_system_variables.lc_time_names= my_default_lc_time_names; sys_init_connect.value_length= 0; if ((sys_init_connect.value= opt_init_connect)) sys_init_connect.value_length= strlen(opt_init_connect); Loading Loading @@ -4749,6 +4760,7 @@ enum options_mysqld OPT_DEFAULT_COLLATION, OPT_CHARACTER_SET_CLIENT_HANDSHAKE, OPT_CHARACTER_SET_FILESYSTEM, OPT_LC_TIME_NAMES, OPT_INIT_CONNECT, OPT_INIT_SLAVE, OPT_SECURE_AUTH, Loading Loading @@ -5078,6 +5090,11 @@ Disable with --skip-innodb-doublewrite.", (gptr*) &innobase_use_doublewrite, "Client error messages in given language. May be given as a full path.", (gptr*) &language_ptr, (gptr*) &language_ptr, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"lc-time-names", OPT_LC_TIME_NAMES, "Set the language used for the month names and the days of the week.", (gptr*) &lc_time_names_name, (gptr*) &lc_time_names_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, {"local-infile", OPT_LOCAL_INFILE, "Enable/disable LOAD DATA LOCAL INFILE (takes values 1|0).", (gptr*) &opt_local_infile, Loading Loading @@ -6552,7 +6569,7 @@ static void mysql_init_variables(void) default_collation_name= compiled_default_collation_name; sys_charset_system.value= (char*) system_charset_info->csname; character_set_filesystem_name= (char*) "binary"; lc_time_names_name= (char*) "en_US"; /* Set default values for some option variables */ global_system_variables.table_type= DB_TYPE_MYISAM; Loading
sql/set_var.cc +11 −3 Original line number Diff line number Diff line Loading @@ -2825,6 +2825,9 @@ bool sys_var_thd_lc_time_names::check(THD *thd, set_var *var) bool sys_var_thd_lc_time_names::update(THD *thd, set_var *var) { if (var->type == OPT_GLOBAL) global_system_variables.lc_time_names= var->save_result.locale_value; else thd->variables.lc_time_names= var->save_result.locale_value; return 0; } Loading @@ -2833,13 +2836,18 @@ bool sys_var_thd_lc_time_names::update(THD *thd, set_var *var) byte *sys_var_thd_lc_time_names::value_ptr(THD *thd, enum_var_type type, LEX_STRING *base) { return (byte *)(thd->variables.lc_time_names->name); return type == OPT_GLOBAL ? (byte *) global_system_variables.lc_time_names->name : (byte *) thd->variables.lc_time_names->name; } void sys_var_thd_lc_time_names::set_default(THD *thd, enum_var_type type) { thd->variables.lc_time_names = &my_locale_en_US; if (type == OPT_GLOBAL) global_system_variables.lc_time_names= my_default_lc_time_names; else thd->variables.lc_time_names= global_system_variables.lc_time_names; } /* Loading