Commit edc8900b authored by unknown's avatar unknown
Browse files

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
parent bfdbb780
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
show variables like 'collation_server';
Variable_name	Value
collation_server	ucs2_unicode_ci
show variables like "%character_set_ser%";
Variable_name	Value
character_set_server	ucs2
+1 −1
Original line number Diff line number Diff line
--default-character-set=ucs2 --default-collation=ucs2_unicode_ci
--default-collation=ucs2_unicode_ci --default-character-set=ucs2
+5 −0
Original line number Diff line number Diff line
#
# MySQL Bug#15276: MySQL ignores collation-server
#
show variables like 'collation_server';

#
# Bug#18004 Connecting crashes server when default charset is UCS2
#
+4 −2
Original line number Diff line number Diff line
@@ -378,6 +378,7 @@ key_map key_map_full(0); // Will be initialized later

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 mysql_data_home_buff[2], *mysql_data_home=mysql_real_data_home;
struct passwd *user_info;
@@ -5936,7 +5937,7 @@ static void mysql_init_variables(void)
  /* Variables in libraries */
  charsets_dir= 0;
  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;


@@ -6091,6 +6092,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
    strmake(mysql_home,argument,sizeof(mysql_home)-1);
    break;
  case 'C':
    if (default_collation_name == compiled_default_collation_name)
      default_collation_name= 0;
    break;
  case 'l':