mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
mysqld --collation-server=xxx --character-set-server=yyy
didn't work as expected: collation_server was set not to xxx, but to the default collation of character set "yyy". With different argument order it worked as expected: mysqld --character-set-server=yyy --collation-server=yyy Fix: initializate default_collation_name to 0 when processing --character-set-server only if --collation-server has not been specified in command line. mysql-test/r/ctype_ucs2_def.result: Adding test cast mysql-test/t/ctype_ucs2_def-master.opt: Adding test case mysql-test/t/ctype_ucs2_def.test: Adding test case sql/mysqld.cc: Don't clear default_collation_name when processing --character-set-server if collation has already been specified using --collation-server
This commit is contained in:
@ -1,3 +1,6 @@
|
|||||||
|
show variables like 'collation_server';
|
||||||
|
Variable_name Value
|
||||||
|
collation_server ucs2_unicode_ci
|
||||||
show variables like "%character_set_ser%";
|
show variables like "%character_set_ser%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
character_set_server ucs2
|
character_set_server ucs2
|
||||||
|
@ -1 +1 @@
|
|||||||
--default-character-set=ucs2 --default-collation=ucs2_unicode_ci
|
--default-collation=ucs2_unicode_ci --default-character-set=ucs2
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
#
|
||||||
|
# MySQL Bug#15276: MySQL ignores collation-server
|
||||||
|
#
|
||||||
|
show variables like 'collation_server';
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug#18004 Connecting crashes server when default charset is UCS2
|
# Bug#18004 Connecting crashes server when default charset is UCS2
|
||||||
#
|
#
|
||||||
|
@ -378,6 +378,7 @@ key_map key_map_full(0); // Will be initialized later
|
|||||||
|
|
||||||
const char *opt_date_time_formats[3];
|
const char *opt_date_time_formats[3];
|
||||||
|
|
||||||
|
char compiled_default_collation_name[]= MYSQL_DEFAULT_COLLATION_NAME;
|
||||||
char *language_ptr, *default_collation_name, *default_character_set_name;
|
char *language_ptr, *default_collation_name, *default_character_set_name;
|
||||||
char mysql_data_home_buff[2], *mysql_data_home=mysql_real_data_home;
|
char mysql_data_home_buff[2], *mysql_data_home=mysql_real_data_home;
|
||||||
struct passwd *user_info;
|
struct passwd *user_info;
|
||||||
@ -5936,7 +5937,7 @@ static void mysql_init_variables(void)
|
|||||||
/* Variables in libraries */
|
/* Variables in libraries */
|
||||||
charsets_dir= 0;
|
charsets_dir= 0;
|
||||||
default_character_set_name= (char*) MYSQL_DEFAULT_CHARSET_NAME;
|
default_character_set_name= (char*) MYSQL_DEFAULT_CHARSET_NAME;
|
||||||
default_collation_name= (char*) MYSQL_DEFAULT_COLLATION_NAME;
|
default_collation_name= compiled_default_collation_name;
|
||||||
sys_charset_system.value= (char*) system_charset_info->csname;
|
sys_charset_system.value= (char*) system_charset_info->csname;
|
||||||
|
|
||||||
|
|
||||||
@ -6091,7 +6092,8 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
strmake(mysql_home,argument,sizeof(mysql_home)-1);
|
strmake(mysql_home,argument,sizeof(mysql_home)-1);
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
default_collation_name= 0;
|
if (default_collation_name == compiled_default_collation_name)
|
||||||
|
default_collation_name= 0;
|
||||||
break;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
opt_log=1;
|
opt_log=1;
|
||||||
|
Reference in New Issue
Block a user