List:Commits« Previous MessageNext Message »
From:Horst Hunger Date:April 29 2009 2:38pm
Subject:bzr commit into mysql-6.0-bugteam branch (horst:3237)
View as plain text  
#At file:///work/bzr/mysql-6.0-serverqa/ based on revid:holyfoot@stripped

 3237 Horst Hunger	2009-04-29
      test of the 1349 and 4902 in serverqa-6.0 (2nd).

    added:
      mysql-test/r/mysql_auto_charset.result
      mysql-test/r/mysql_auto_charset_win.result
      mysql-test/r/mysql_clients_locale.result
      mysql-test/r/mysql_clients_locale_win.result
      mysql-test/std_data/t1.txt
      mysql-test/t/mysql_auto_charset.test
      mysql-test/t/mysql_auto_charset_win.test
      mysql-test/t/mysql_clients_locale.test
      mysql-test/t/mysql_clients_locale_win.test
    modified:
      client/mysql.cc
      client/mysqladmin.cc
      client/mysqlcheck.c
      client/mysqlimport.c
      client/mysqlshow.c
      configure.in
      include/mysql_com.h
      mysql-test/include/default_my.cnf
      sql-common/client.c
=== modified file 'client/mysql.cc'
--- a/client/mysql.cc	2009-04-14 14:23:07 +0000
+++ b/client/mysql.cc	2009-04-29 14:38:38 +0000
@@ -155,7 +155,7 @@ static char * opt_mysql_unix_port=0;
 static int connect_flag=CLIENT_INTERACTIVE;
 static char *current_host,*current_db,*current_user=0,*opt_password=0,
             *current_prompt=0, *delimiter_str= 0,
-            *default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME;
+            *default_charset= (char*) MYSQL_AUTODETECT_CHARSET_NAME;
 static char *histfile;
 static char *histfile_tmp;
 static String glob_buffer,old_buffer;
@@ -1810,10 +1810,6 @@ static int get_options(int argc, char **
     connect_flag= 0; /* Not in interactive mode */
   }
   
-  if (strcmp(default_charset, charset_info->csname) &&
-      !(charset_info= get_charset_by_csname(default_charset, 
-					    MY_CS_PRIMARY, MYF(MY_WME))))
-    exit(1);
   if (argc > 1)
   {
     usage(0);
@@ -4281,8 +4277,9 @@ sql_real_connect(char *host,char *databa
 	    select_limit,max_join_size);
     mysql_options(&mysql, MYSQL_INIT_COMMAND, init_command);
   }
-  if (default_charset_used)
-    mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, default_charset);
+
+  mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, default_charset);
+  
   if (!mysql_real_connect(&mysql, host, user, password,
 			  database, opt_mysql_port, opt_mysql_unix_port,
 			  connect_flag | CLIENT_MULTI_STATEMENTS))
@@ -4297,6 +4294,9 @@ sql_real_connect(char *host,char *databa
     }
     return -1;					// Retryable
   }
+  
+  charset_info= mysql.charset;
+  
   connected=1;
 #ifndef EMBEDDED_LIBRARY
   mysql.reconnect= debug_info_flag; // We want to know if this happens

=== modified file 'client/mysqladmin.cc'
--- a/client/mysqladmin.cc	2009-03-17 20:26:16 +0000
+++ b/client/mysqladmin.cc	2009-04-29 14:38:38 +0000
@@ -29,7 +29,7 @@
 #define MAX_TRUNC_LENGTH 3
 
 char *host= NULL, *user= 0, *opt_password= 0,
-     *default_charset= NULL;
+     *default_charset= (char*) MYSQL_AUTODETECT_CHARSET_NAME;
 char truncated_var_names[MAX_MYSQL_VAR][MAX_TRUNC_LENGTH];
 char ex_var_names[MAX_MYSQL_VAR][FN_REFLEN];
 ulonglong last_values[MAX_MYSQL_VAR];
@@ -345,8 +345,7 @@ int main(int argc,char *argv[])
   if (shared_memory_base_name)
     mysql_options(&mysql,MYSQL_SHARED_MEMORY_BASE_NAME,shared_memory_base_name);
 #endif
-  if (default_charset)
-    mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, default_charset);
+  mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, default_charset);
   error_flags= (myf)(opt_nobeep ? 0 : ME_BELL);
 
   if (sql_connect(&mysql, option_wait))

=== modified file 'client/mysqlcheck.c'
--- a/client/mysqlcheck.c	2009-03-17 20:07:27 +0000
+++ b/client/mysqlcheck.c	2009-04-29 14:38:38 +0000
@@ -367,12 +367,16 @@ static int get_options(int *argc, char *
     If there's no --default-character-set option given with
     --fix-table-name or --fix-db-name set the default character set to "utf8".
   */
-  if (!default_charset && (opt_fix_db_names || opt_fix_table_names))
+  if (!default_charset)
   {
-    default_charset= (char*) "utf8";
+    if (opt_fix_db_names || opt_fix_table_names)
+      default_charset= (char*) "utf8";
+    else
+      default_charset= (char*) MYSQL_AUTODETECT_CHARSET_NAME;
   }
-  if (default_charset && !get_charset_by_csname(default_charset, MY_CS_PRIMARY,
-                                                MYF(MY_WME)))
+  if (default_charset &&
+      strcmp(default_charset, MYSQL_AUTODETECT_CHARSET_NAME) &&
+      !get_charset_by_csname(default_charset, MY_CS_PRIMARY, MYF(MY_WME)))
   {
     printf("Unsupported character set: %s\n", default_charset);
     return 1;

=== modified file 'client/mysqlimport.c'
--- a/client/mysqlimport.c	2008-12-17 18:40:14 +0000
+++ b/client/mysqlimport.c	2009-04-29 14:38:38 +0000
@@ -55,11 +55,10 @@ static char	*opt_password=0, *current_us
 		*current_host=0, *current_db=0, *fields_terminated=0,
 		*lines_terminated=0, *enclosed=0, *opt_enclosed=0,
 		*escaped=0, *opt_columns=0, 
-		*default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME;
+		*default_charset= (char*) MYSQL_AUTODETECT_CHARSET_NAME;
 static uint     opt_mysql_port= 0, opt_protocol= 0;
 static char * opt_mysql_unix_port=0;
 static longlong opt_ignore_lines= -1;
-static CHARSET_INFO *charset_info= &my_charset_latin1;
 #include <sslopt-vars.h>
 
 #ifdef HAVE_SMEM
@@ -280,10 +279,6 @@ static int get_options(int *argc, char *
     fprintf(stderr, "You can't use --ignore (-i) and --replace (-r) at the same time.\n");
     return(1);
   }
-  if (strcmp(default_charset, charset_info->csname) &&
-      !(charset_info= get_charset_by_csname(default_charset,
-  					    MY_CS_PRIMARY, MYF(MY_WME))))
-    exit(1);
   if (*argc < 2)
   {
     usage();
@@ -427,6 +422,7 @@ static MYSQL *db_connect(char *host, cha
   if (shared_memory_base_name)
     mysql_options(mysql,MYSQL_SHARED_MEMORY_BASE_NAME,shared_memory_base_name);
 #endif
+  mysql_options(mysql, MYSQL_SET_CHARSET_NAME, default_charset);
   if (!(mysql_real_connect(mysql,host,user,passwd,
                            database,opt_mysql_port,opt_mysql_unix_port,
                            0)))

=== modified file 'client/mysqlshow.c'
--- a/client/mysqlshow.c	2008-11-14 16:29:38 +0000
+++ b/client/mysqlshow.c	2009-04-29 14:38:38 +0000
@@ -32,7 +32,7 @@ static my_bool tty_password= 0, opt_tabl
 static my_bool debug_info_flag= 0, debug_check_flag= 0;
 static uint my_end_arg= 0;
 static uint opt_verbose=0;
-static char *default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME;
+static char *default_charset= (char*) MYSQL_AUTODETECT_CHARSET_NAME;
 
 #ifdef HAVE_SMEM 
 static char *shared_memory_base_name=0;

=== modified file 'configure.in'
--- a/configure.in	2009-04-07 14:22:01 +0000
+++ b/configure.in	2009-04-29 14:38:38 +0000
@@ -2036,10 +2036,11 @@ AC_SUBST(MAKE_SHELL)
 AC_CHECK_HEADERS(varargs.h stdarg.h dirent.h locale.h ndir.h sys/dir.h \
  sys/file.h sys/ndir.h sys/ptem.h sys/pte.h sys/select.h sys/stream.h \
  sys/mman.h curses.h termcap.h termio.h termbits.h asm/termbits.h grp.h \
-paths.h semaphore.h)
+paths.h semaphore.h langinfo.h)
 
 # Already-done: strcasecmp
 AC_CHECK_FUNCS(lstat putenv select setenv setlocale strcoll tcgetattr)
+AC_CHECK_FUNCS(nl_langinfo)
 
 MYSQL_SIGNAL_CHECK
 MYSQL_CHECK_GETPW_FUNCS

=== modified file 'include/mysql_com.h'
--- a/include/mysql_com.h	2009-01-26 16:03:39 +0000
+++ b/include/mysql_com.h	2009-04-29 14:38:38 +0000
@@ -27,6 +27,8 @@
 #define NAME_LEN                (NAME_CHAR_LEN*SYSTEM_CHARSET_MBMAXLEN)
 #define USERNAME_LENGTH         (USERNAME_CHAR_LENGTH*SYSTEM_CHARSET_MBMAXLEN)
 
+#define MYSQL_AUTODETECT_CHARSET_NAME "auto"
+
 #define SERVER_VERSION_LENGTH 60
 #define SQLSTATE_LENGTH 5
 

=== modified file 'mysql-test/include/default_my.cnf'
--- a/mysql-test/include/default_my.cnf	2009-03-19 09:27:20 +0000
+++ b/mysql-test/include/default_my.cnf	2009-04-29 14:38:38 +0000
@@ -15,3 +15,6 @@ disable-force-if-open
 [ENV]
 MASTER_MYPORT=           @mysqld.1.port
 MASTER_MYSOCK=           @mysqld.1.socket
+
+[mysql]
+default-character-set=latin1

=== added file 'mysql-test/r/mysql_auto_charset.result'
--- a/mysql-test/r/mysql_auto_charset.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/mysql_auto_charset.result	2009-04-29 14:38:38 +0000
@@ -0,0 +1,1689 @@
+CREATE TABLE t_charsets (c1 varchar(50));
+LOAD DATA INFILE '../../tmp/locale_a.output' INTO TABLE t_charsets;
+'----'422'-----------------------------------------------';
+zu_ZA.utf8;
+@@character_set_client
+utf8
+'----'421'-----------------------------------------------';
+zu_ZA;
+@@character_set_client
+latin1
+'----'420'-----------------------------------------------';
+zh_TW.utf8;
+@@character_set_client
+utf8
+'----'419'-----------------------------------------------';
+zh_TW.euctw;
+@@character_set_client
+latin1
+'----'418'-----------------------------------------------';
+zh_TW;
+@@character_set_client
+big5
+'----'417'-----------------------------------------------';
+zh_SG.utf8;
+@@character_set_client
+utf8
+'----'416'-----------------------------------------------';
+zh_SG.gbk;
+@@character_set_client
+gbk
+'----'415'-----------------------------------------------';
+zh_SG;
+@@character_set_client
+gb2312
+'----'414'-----------------------------------------------';
+zh_HK.utf8;
+@@character_set_client
+utf8
+'----'413'-----------------------------------------------';
+zh_HK;
+@@character_set_client
+latin1
+'----'412'-----------------------------------------------';
+zh_CN.utf8;
+@@character_set_client
+utf8
+'----'411'-----------------------------------------------';
+zh_CN.gbk;
+@@character_set_client
+gbk
+'----'410'-----------------------------------------------';
+zh_CN.gb18030;
+@@character_set_client
+latin1
+'----'409'-----------------------------------------------';
+zh_CN;
+@@character_set_client
+gb2312
+'----'408'-----------------------------------------------';
+yi_US.utf8;
+@@character_set_client
+utf8
+'----'407'-----------------------------------------------';
+yi_US;
+Not yet supported;
+'----'406'-----------------------------------------------';
+xh_ZA.utf8;
+@@character_set_client
+utf8
+'----'405'-----------------------------------------------';
+xh_ZA;
+@@character_set_client
+latin1
+'----'404'-----------------------------------------------';
+wa_BE@euro;
+@@character_set_client
+latin1
+'----'403'-----------------------------------------------';
+wa_BE.utf8;
+@@character_set_client
+utf8
+'----'402'-----------------------------------------------';
+wa_BE;
+@@character_set_client
+latin1
+'----'401'-----------------------------------------------';
+vi_VN.tcvn;
+Not yet supported;
+'----'400'-----------------------------------------------';
+vi_VN;
+@@character_set_client
+utf8
+'----'399'-----------------------------------------------';
+ve_ZA;
+@@character_set_client
+utf8
+'----'398'-----------------------------------------------';
+uz_UZ@cyrillic;
+@@character_set_client
+utf8
+'----'397'-----------------------------------------------';
+uz_UZ;
+@@character_set_client
+latin1
+'----'396'-----------------------------------------------';
+ur_PK.utf8;
+@@character_set_client
+utf8
+'----'395'-----------------------------------------------';
+ur_PK;
+@@character_set_client
+utf8
+'----'394'-----------------------------------------------';
+uk_UA.utf8;
+@@character_set_client
+utf8
+'----'393'-----------------------------------------------';
+uk_UA;
+@@character_set_client
+koi8u
+'----'392'-----------------------------------------------';
+tt_RU@stripped;
+@@character_set_client
+utf8
+'----'391'-----------------------------------------------';
+tt_RU.utf8;
+@@character_set_client
+utf8
+'----'390'-----------------------------------------------';
+ts_ZA;
+@@character_set_client
+utf8
+'----'389'-----------------------------------------------';
+tr_TR.utf8;
+@@character_set_client
+utf8
+'----'388'-----------------------------------------------';
+tr_TR;
+@@character_set_client
+latin5
+'----'387'-----------------------------------------------';
+tr_CY.utf8;
+@@character_set_client
+utf8
+'----'386'-----------------------------------------------';
+tr_CY;
+@@character_set_client
+latin5
+'----'385'-----------------------------------------------';
+tn_ZA;
+@@character_set_client
+utf8
+'----'384'-----------------------------------------------';
+tl_PH.utf8;
+@@character_set_client
+utf8
+'----'383'-----------------------------------------------';
+tl_PH;
+@@character_set_client
+latin1
+'----'382'-----------------------------------------------';
+tig_ER.utf8;
+@@character_set_client
+utf8
+'----'381'-----------------------------------------------';
+tig_ER;
+@@character_set_client
+utf8
+'----'380'-----------------------------------------------';
+ti_ET.utf8;
+@@character_set_client
+utf8
+'----'379'-----------------------------------------------';
+ti_ET;
+@@character_set_client
+utf8
+'----'378'-----------------------------------------------';
+ti_ER.utf8;
+@@character_set_client
+utf8
+'----'377'-----------------------------------------------';
+ti_ER;
+@@character_set_client
+utf8
+'----'376'-----------------------------------------------';
+th_TH.utf8;
+@@character_set_client
+utf8
+'----'375'-----------------------------------------------';
+th_TH;
+@@character_set_client
+tis620
+'----'374'-----------------------------------------------';
+tg_TJ.utf8;
+@@character_set_client
+utf8
+'----'373'-----------------------------------------------';
+tg_TJ;
+@@character_set_client
+latin1
+'----'372'-----------------------------------------------';
+te_IN.utf8;
+@@character_set_client
+utf8
+'----'371'-----------------------------------------------';
+te_IN;
+@@character_set_client
+utf8
+'----'370'-----------------------------------------------';
+ta_IN.utf8;
+@@character_set_client
+utf8
+'----'369'-----------------------------------------------';
+ta_IN;
+@@character_set_client
+utf8
+'----'368'-----------------------------------------------';
+sv_SE.utf8;
+@@character_set_client
+utf8
+'----'367'-----------------------------------------------';
+sv_SE.iso885915;
+@@character_set_client
+latin1
+'----'366'-----------------------------------------------';
+sv_SE;
+@@character_set_client
+latin1
+'----'365'-----------------------------------------------';
+sv_FI@euro;
+@@character_set_client
+latin1
+'----'364'-----------------------------------------------';
+sv_FI.utf8;
+@@character_set_client
+utf8
+'----'363'-----------------------------------------------';
+sv_FI;
+@@character_set_client
+latin1
+'----'362'-----------------------------------------------';
+st_ZA.utf8;
+@@character_set_client
+utf8
+'----'361'-----------------------------------------------';
+st_ZA;
+@@character_set_client
+latin1
+'----'360'-----------------------------------------------';
+ss_ZA;
+@@character_set_client
+utf8
+'----'359'-----------------------------------------------';
+sr_RS@latin;
+@@character_set_client
+utf8
+'----'358'-----------------------------------------------';
+sr_RS;
+@@character_set_client
+utf8
+'----'357'-----------------------------------------------';
+sr_ME;
+@@character_set_client
+utf8
+'----'356'-----------------------------------------------';
+sq_AL.utf8;
+@@character_set_client
+utf8
+'----'355'-----------------------------------------------';
+sq_AL;
+@@character_set_client
+latin1
+'----'354'-----------------------------------------------';
+so_SO.utf8;
+@@character_set_client
+utf8
+'----'353'-----------------------------------------------';
+so_SO;
+@@character_set_client
+latin1
+'----'352'-----------------------------------------------';
+so_KE.utf8;
+@@character_set_client
+utf8
+'----'351'-----------------------------------------------';
+so_KE;
+@@character_set_client
+latin1
+'----'350'-----------------------------------------------';
+so_ET.utf8;
+@@character_set_client
+utf8
+'----'349'-----------------------------------------------';
+so_ET;
+@@character_set_client
+utf8
+'----'348'-----------------------------------------------';
+so_DJ.utf8;
+@@character_set_client
+utf8
+'----'347'-----------------------------------------------';
+so_DJ;
+@@character_set_client
+latin1
+'----'346'-----------------------------------------------';
+sl_SI.utf8;
+@@character_set_client
+utf8
+'----'345'-----------------------------------------------';
+sl_SI;
+@@character_set_client
+latin2
+'----'344'-----------------------------------------------';
+sk_SK.utf8;
+@@character_set_client
+utf8
+'----'343'-----------------------------------------------';
+sk_SK;
+@@character_set_client
+latin2
+'----'342'-----------------------------------------------';
+sid_ET.utf8;
+@@character_set_client
+utf8
+'----'341'-----------------------------------------------';
+sid_ET;
+@@character_set_client
+utf8
+'----'340'-----------------------------------------------';
+si_LK;
+@@character_set_client
+utf8
+'----'339'-----------------------------------------------';
+sh_YU.utf8;
+@@character_set_client
+utf8
+'----'338'-----------------------------------------------';
+sh_YU;
+@@character_set_client
+latin2
+'----'337'-----------------------------------------------';
+se_NO.utf8;
+@@character_set_client
+utf8
+'----'336'-----------------------------------------------';
+se_NO;
+@@character_set_client
+utf8
+'----'335'-----------------------------------------------';
+rw_RW;
+@@character_set_client
+utf8
+'----'334'-----------------------------------------------';
+ru_UA.utf8;
+@@character_set_client
+utf8
+'----'333'-----------------------------------------------';
+ru_UA;
+@@character_set_client
+koi8u
+'----'332'-----------------------------------------------';
+ru_RU.utf8;
+@@character_set_client
+utf8
+'----'331'-----------------------------------------------';
+ru_RU.koi8r;
+@@character_set_client
+koi8r
+'----'330'-----------------------------------------------';
+ru_RU.KOI8-R;
+@@character_set_client
+koi8r
+'----'329'-----------------------------------------------';
+ru_RU;
+@@character_set_client
+latin1
+'----'328'-----------------------------------------------';
+ro_RO.utf8;
+@@character_set_client
+utf8
+'----'327'-----------------------------------------------';
+ro_RO;
+@@character_set_client
+latin2
+'----'326'-----------------------------------------------';
+pt_PT@euro;
+@@character_set_client
+latin1
+'----'325'-----------------------------------------------';
+pt_PT.utf8;
+@@character_set_client
+utf8
+'----'324'-----------------------------------------------';
+pt_PT;
+@@character_set_client
+latin1
+'----'323'-----------------------------------------------';
+pt_BR.utf8;
+@@character_set_client
+utf8
+'----'322'-----------------------------------------------';
+pt_BR;
+@@character_set_client
+latin1
+'----'321'-----------------------------------------------';
+pl_PL.utf8;
+@@character_set_client
+utf8
+'----'320'-----------------------------------------------';
+pl_PL;
+@@character_set_client
+latin2
+'----'319'-----------------------------------------------';
+pa_PK;
+@@character_set_client
+utf8
+'----'318'-----------------------------------------------';
+pa_IN.utf8;
+@@character_set_client
+utf8
+'----'317'-----------------------------------------------';
+pa_IN;
+@@character_set_client
+utf8
+'----'316'-----------------------------------------------';
+or_IN;
+@@character_set_client
+utf8
+'----'315'-----------------------------------------------';
+om_KE.utf8;
+@@character_set_client
+utf8
+'----'314'-----------------------------------------------';
+om_KE;
+@@character_set_client
+latin1
+'----'313'-----------------------------------------------';
+om_ET.utf8;
+@@character_set_client
+utf8
+'----'312'-----------------------------------------------';
+om_ET;
+@@character_set_client
+utf8
+'----'311'-----------------------------------------------';
+oc_FR.utf8;
+@@character_set_client
+utf8
+'----'310'-----------------------------------------------';
+oc_FR;
+@@character_set_client
+latin1
+'----'309'-----------------------------------------------';
+nso_ZA;
+@@character_set_client
+utf8
+'----'308'-----------------------------------------------';
+nr_ZA;
+@@character_set_client
+utf8
+'----'307'-----------------------------------------------';
+no_NO.utf8;
+@@character_set_client
+utf8
+'----'306'-----------------------------------------------';
+no_NO;
+@@character_set_client
+latin1
+'----'305'-----------------------------------------------';
+nn_NO.utf8;
+@@character_set_client
+utf8
+'----'304'-----------------------------------------------';
+nn_NO;
+@@character_set_client
+latin1
+'----'303'-----------------------------------------------';
+nl_NL@euro;
+@@character_set_client
+latin1
+'----'302'-----------------------------------------------';
+nl_NL.utf8;
+@@character_set_client
+utf8
+'----'301'-----------------------------------------------';
+nl_NL;
+@@character_set_client
+latin1
+'----'300'-----------------------------------------------';
+nl_BE@euro;
+@@character_set_client
+latin1
+'----'299'-----------------------------------------------';
+nl_BE.utf8;
+@@character_set_client
+utf8
+'----'298'-----------------------------------------------';
+nl_BE;
+@@character_set_client
+latin1
+'----'297'-----------------------------------------------';
+ne_NP.utf8;
+@@character_set_client
+utf8
+'----'296'-----------------------------------------------';
+ne_NP;
+@@character_set_client
+utf8
+'----'295'-----------------------------------------------';
+nb_NO.utf8;
+@@character_set_client
+utf8
+'----'294'-----------------------------------------------';
+nb_NO;
+@@character_set_client
+latin1
+'----'293'-----------------------------------------------';
+mt_MT.utf8;
+@@character_set_client
+utf8
+'----'292'-----------------------------------------------';
+mt_MT;
+@@character_set_client
+latin1
+'----'291'-----------------------------------------------';
+ms_MY.utf8;
+@@character_set_client
+utf8
+'----'290'-----------------------------------------------';
+ms_MY;
+@@character_set_client
+latin1
+'----'289'-----------------------------------------------';
+mr_IN.utf8;
+@@character_set_client
+utf8
+'----'288'-----------------------------------------------';
+mr_IN;
+@@character_set_client
+utf8
+'----'287'-----------------------------------------------';
+mn_MN.utf8;
+@@character_set_client
+utf8
+'----'286'-----------------------------------------------';
+mn_MN;
+@@character_set_client
+utf8
+'----'285'-----------------------------------------------';
+ml_IN.utf8;
+@@character_set_client
+utf8
+'----'284'-----------------------------------------------';
+ml_IN;
+@@character_set_client
+utf8
+'----'283'-----------------------------------------------';
+mk_MK.utf8;
+@@character_set_client
+utf8
+'----'282'-----------------------------------------------';
+mk_MK;
+@@character_set_client
+latin1
+'----'281'-----------------------------------------------';
+mi_NZ.utf8;
+@@character_set_client
+utf8
+'----'280'-----------------------------------------------';
+mi_NZ;
+@@character_set_client
+latin7
+'----'279'-----------------------------------------------';
+mg_MG.utf8;
+@@character_set_client
+utf8
+'----'278'-----------------------------------------------';
+mg_MG;
+@@character_set_client
+latin1
+'----'277'-----------------------------------------------';
+mai_IN;
+@@character_set_client
+utf8
+'----'276'-----------------------------------------------';
+lv_LV.utf8;
+@@character_set_client
+utf8
+'----'275'-----------------------------------------------';
+lv_LV;
+@@character_set_client
+latin7
+'----'274'-----------------------------------------------';
+lt_LT.utf8;
+@@character_set_client
+utf8
+'----'273'-----------------------------------------------';
+lt_LT;
+@@character_set_client
+latin7
+'----'272'-----------------------------------------------';
+lo_LA;
+@@character_set_client
+utf8
+'----'271'-----------------------------------------------';
+lg_UG.utf8;
+@@character_set_client
+utf8
+'----'270'-----------------------------------------------';
+lg_UG;
+@@character_set_client
+latin1
+'----'269'-----------------------------------------------';
+ky_KG;
+@@character_set_client
+utf8
+'----'268'-----------------------------------------------';
+kw_GB.utf8;
+@@character_set_client
+utf8
+'----'267'-----------------------------------------------';
+kw_GB;
+@@character_set_client
+latin1
+'----'266'-----------------------------------------------';
+ku_TR.utf8;
+@@character_set_client
+utf8
+'----'265'-----------------------------------------------';
+ku_TR;
+@@character_set_client
+latin5
+'----'264'-----------------------------------------------';
+ko_KR.utf8;
+@@character_set_client
+utf8
+'----'263'-----------------------------------------------';
+ko_KR.euckr;
+@@character_set_client
+euckr
+'----'262'-----------------------------------------------';
+kn_IN;
+@@character_set_client
+utf8
+'----'261'-----------------------------------------------';
+km_KH;
+@@character_set_client
+utf8
+'----'260'-----------------------------------------------';
+kl_GL.utf8;
+@@character_set_client
+utf8
+'----'259'-----------------------------------------------';
+kl_GL;
+@@character_set_client
+latin1
+'----'258'-----------------------------------------------';
+kk_KZ.utf8;
+@@character_set_client
+utf8
+'----'257'-----------------------------------------------';
+kk_KZ;
+@@character_set_client
+latin1
+'----'256'-----------------------------------------------';
+ka_GE.utf8;
+@@character_set_client
+utf8
+'----'255'-----------------------------------------------';
+ka_GE;
+@@character_set_client
+geostd8
+'----'254'-----------------------------------------------';
+ja_JP.utf8;
+@@character_set_client
+utf8
+'----'253'-----------------------------------------------';
+ja_JP.sjis;
+@@character_set_client
+sjis
+'----'252'-----------------------------------------------';
+ja_JP.shiftjisx0213;
+@@character_set_client
+latin1
+'----'251'-----------------------------------------------';
+ja_JP.eucjp;
+@@character_set_client
+ujis
+'----'250'-----------------------------------------------';
+iw_IL.utf8;
+@@character_set_client
+utf8
+'----'249'-----------------------------------------------';
+iw_IL;
+@@character_set_client
+hebrew
+'----'248'-----------------------------------------------';
+it_IT@euro;
+@@character_set_client
+latin1
+'----'247'-----------------------------------------------';
+it_IT.utf8;
+@@character_set_client
+utf8
+'----'246'-----------------------------------------------';
+it_IT;
+@@character_set_client
+latin1
+'----'245'-----------------------------------------------';
+it_CH.utf8;
+@@character_set_client
+utf8
+'----'244'-----------------------------------------------';
+it_CH;
+@@character_set_client
+latin1
+'----'243'-----------------------------------------------';
+is_IS.utf8;
+@@character_set_client
+utf8
+'----'242'-----------------------------------------------';
+is_IS;
+@@character_set_client
+latin1
+'----'241'-----------------------------------------------';
+id_ID.utf8;
+@@character_set_client
+utf8
+'----'240'-----------------------------------------------';
+id_ID;
+@@character_set_client
+latin1
+'----'239'-----------------------------------------------';
+hy_AM.armscii8;
+@@character_set_client
+latin1
+'----'238'-----------------------------------------------';
+hy_AM;
+@@character_set_client
+utf8
+'----'237'-----------------------------------------------';
+hu_HU.utf8;
+@@character_set_client
+utf8
+'----'236'-----------------------------------------------';
+hu_HU;
+@@character_set_client
+latin2
+'----'235'-----------------------------------------------';
+hsb_DE.utf8;
+@@character_set_client
+utf8
+'----'234'-----------------------------------------------';
+hsb_DE;
+@@character_set_client
+latin2
+'----'233'-----------------------------------------------';
+hr_HR.utf8;
+@@character_set_client
+utf8
+'----'232'-----------------------------------------------';
+hr_HR;
+@@character_set_client
+latin2
+'----'231'-----------------------------------------------';
+hi_IN.utf8;
+@@character_set_client
+utf8
+'----'230'-----------------------------------------------';
+hi_IN;
+@@character_set_client
+utf8
+'----'229'-----------------------------------------------';
+he_IL.utf8;
+@@character_set_client
+utf8
+'----'228'-----------------------------------------------';
+he_IL;
+@@character_set_client
+hebrew
+'----'227'-----------------------------------------------';
+gv_GB.utf8;
+@@character_set_client
+utf8
+'----'226'-----------------------------------------------';
+gv_GB;
+@@character_set_client
+latin1
+'----'225'-----------------------------------------------';
+gu_IN;
+@@character_set_client
+utf8
+'----'224'-----------------------------------------------';
+gl_ES@euro;
+@@character_set_client
+latin1
+'----'223'-----------------------------------------------';
+gl_ES.utf8;
+@@character_set_client
+utf8
+'----'222'-----------------------------------------------';
+gl_ES;
+@@character_set_client
+latin1
+'----'221'-----------------------------------------------';
+gez_ET@abegede;
+@@character_set_client
+utf8
+'----'220'-----------------------------------------------';
+gez_ET;
+@@character_set_client
+utf8
+'----'219'-----------------------------------------------';
+gez_ER@abegede;
+@@character_set_client
+utf8
+'----'218'-----------------------------------------------';
+gez_ER;
+@@character_set_client
+utf8
+'----'217'-----------------------------------------------';
+gd_GB.utf8;
+@@character_set_client
+utf8
+'----'216'-----------------------------------------------';
+gd_GB;
+@@character_set_client
+latin1
+'----'215'-----------------------------------------------';
+ga_IE@euro;
+@@character_set_client
+latin1
+'----'214'-----------------------------------------------';
+ga_IE.utf8;
+@@character_set_client
+utf8
+'----'213'-----------------------------------------------';
+ga_IE;
+@@character_set_client
+latin1
+'----'212'-----------------------------------------------';
+fy_NL;
+@@character_set_client
+utf8
+'----'211'-----------------------------------------------';
+fr_LU@euro;
+@@character_set_client
+latin1
+'----'210'-----------------------------------------------';
+fr_LU.utf8;
+@@character_set_client
+utf8
+'----'209'-----------------------------------------------';
+fr_LU;
+@@character_set_client
+latin1
+'----'208'-----------------------------------------------';
+fr_FR@euro;
+@@character_set_client
+latin1
+'----'207'-----------------------------------------------';
+fr_FR.utf8;
+@@character_set_client
+utf8
+'----'206'-----------------------------------------------';
+fr_FR;
+@@character_set_client
+latin1
+'----'205'-----------------------------------------------';
+fr_CH.utf8;
+@@character_set_client
+utf8
+'----'204'-----------------------------------------------';
+fr_CH;
+@@character_set_client
+latin1
+'----'203'-----------------------------------------------';
+fr_CA.utf8;
+@@character_set_client
+utf8
+'----'202'-----------------------------------------------';
+fr_CA;
+@@character_set_client
+latin1
+'----'201'-----------------------------------------------';
+fr_BE@euro;
+@@character_set_client
+latin1
+'----'200'-----------------------------------------------';
+fr_BE.utf8;
+@@character_set_client
+utf8
+'----'199'-----------------------------------------------';
+fr_BE;
+@@character_set_client
+latin1
+'----'198'-----------------------------------------------';
+fo_FO.utf8;
+@@character_set_client
+utf8
+'----'197'-----------------------------------------------';
+fo_FO;
+@@character_set_client
+latin1
+'----'196'-----------------------------------------------';
+fi_FI@euro;
+@@character_set_client
+latin1
+'----'195'-----------------------------------------------';
+fi_FI.utf8;
+@@character_set_client
+utf8
+'----'194'-----------------------------------------------';
+fi_FI.iso88591;
+@@character_set_client
+latin1
+'----'193'-----------------------------------------------';
+fi_FI;
+@@character_set_client
+latin1
+'----'192'-----------------------------------------------';
+fa_IR.utf8;
+@@character_set_client
+utf8
+'----'191'-----------------------------------------------';
+fa_IR;
+@@character_set_client
+utf8
+'----'190'-----------------------------------------------';
+eu_ES@euro;
+@@character_set_client
+latin1
+'----'189'-----------------------------------------------';
+eu_ES.utf8;
+@@character_set_client
+utf8
+'----'188'-----------------------------------------------';
+eu_ES;
+@@character_set_client
+latin1
+'----'187'-----------------------------------------------';
+et_EE.utf8;
+@@character_set_client
+utf8
+'----'186'-----------------------------------------------';
+et_EE.iso885915;
+@@character_set_client
+latin1
+'----'185'-----------------------------------------------';
+et_EE;
+@@character_set_client
+latin1
+'----'184'-----------------------------------------------';
+es_VE.utf8;
+@@character_set_client
+utf8
+'----'183'-----------------------------------------------';
+es_VE;
+@@character_set_client
+latin1
+'----'182'-----------------------------------------------';
+es_UY.utf8;
+@@character_set_client
+utf8
+'----'181'-----------------------------------------------';
+es_UY;
+@@character_set_client
+latin1
+'----'180'-----------------------------------------------';
+es_US.utf8;
+@@character_set_client
+utf8
+'----'179'-----------------------------------------------';
+es_US;
+@@character_set_client
+latin1
+'----'178'-----------------------------------------------';
+es_SV.utf8;
+@@character_set_client
+utf8
+'----'177'-----------------------------------------------';
+es_SV;
+@@character_set_client
+latin1
+'----'176'-----------------------------------------------';
+es_PY.utf8;
+@@character_set_client
+utf8
+'----'175'-----------------------------------------------';
+es_PY;
+@@character_set_client
+latin1
+'----'174'-----------------------------------------------';
+es_PR.utf8;
+@@character_set_client
+utf8
+'----'173'-----------------------------------------------';
+es_PR;
+@@character_set_client
+latin1
+'----'172'-----------------------------------------------';
+es_PE.utf8;
+@@character_set_client
+utf8
+'----'171'-----------------------------------------------';
+es_PE;
+@@character_set_client
+latin1
+'----'170'-----------------------------------------------';
+es_PA.utf8;
+@@character_set_client
+utf8
+'----'169'-----------------------------------------------';
+es_PA;
+@@character_set_client
+latin1
+'----'168'-----------------------------------------------';
+es_NI.utf8;
+@@character_set_client
+utf8
+'----'167'-----------------------------------------------';
+es_NI;
+@@character_set_client
+latin1
+'----'166'-----------------------------------------------';
+es_MX.utf8;
+@@character_set_client
+utf8
+'----'165'-----------------------------------------------';
+es_MX;
+@@character_set_client
+latin1
+'----'164'-----------------------------------------------';
+es_HN.utf8;
+@@character_set_client
+utf8
+'----'163'-----------------------------------------------';
+es_HN;
+@@character_set_client
+latin1
+'----'162'-----------------------------------------------';
+es_GT.utf8;
+@@character_set_client
+utf8
+'----'161'-----------------------------------------------';
+es_GT;
+@@character_set_client
+latin1
+'----'160'-----------------------------------------------';
+es_ES@euro;
+@@character_set_client
+latin1
+'----'159'-----------------------------------------------';
+es_ES.utf8;
+@@character_set_client
+utf8
+'----'158'-----------------------------------------------';
+es_ES;
+@@character_set_client
+latin1
+'----'157'-----------------------------------------------';
+es_EC.utf8;
+@@character_set_client
+utf8
+'----'156'-----------------------------------------------';
+es_EC;
+@@character_set_client
+latin1
+'----'155'-----------------------------------------------';
+es_DO.utf8;
+@@character_set_client
+utf8
+'----'154'-----------------------------------------------';
+es_DO;
+@@character_set_client
+latin1
+'----'153'-----------------------------------------------';
+es_CR.utf8;
+@@character_set_client
+utf8
+'----'152'-----------------------------------------------';
+es_CR;
+@@character_set_client
+latin1
+'----'151'-----------------------------------------------';
+es_CO.utf8;
+@@character_set_client
+utf8
+'----'150'-----------------------------------------------';
+es_CO;
+@@character_set_client
+latin1
+'----'149'-----------------------------------------------';
+es_CL.utf8;
+@@character_set_client
+utf8
+'----'148'-----------------------------------------------';
+es_CL;
+@@character_set_client
+latin1
+'----'147'-----------------------------------------------';
+es_BO.utf8;
+@@character_set_client
+utf8
+'----'146'-----------------------------------------------';
+es_BO;
+@@character_set_client
+latin1
+'----'145'-----------------------------------------------';
+es_AR.utf8;
+@@character_set_client
+utf8
+'----'144'-----------------------------------------------';
+es_AR;
+@@character_set_client
+latin1
+'----'143'-----------------------------------------------';
+en_ZW.utf8;
+@@character_set_client
+utf8
+'----'142'-----------------------------------------------';
+en_ZW;
+@@character_set_client
+latin1
+'----'141'-----------------------------------------------';
+en_ZA.utf8;
+@@character_set_client
+utf8
+'----'140'-----------------------------------------------';
+en_ZA;
+@@character_set_client
+latin1
+'----'139'-----------------------------------------------';
+en_US.utf8;
+@@character_set_client
+utf8
+'----'138'-----------------------------------------------';
+en_US.iso885915;
+@@character_set_client
+latin1
+'----'137'-----------------------------------------------';
+en_US;
+@@character_set_client
+latin1
+'----'136'-----------------------------------------------';
+en_SG.utf8;
+@@character_set_client
+utf8
+'----'135'-----------------------------------------------';
+en_SG;
+@@character_set_client
+latin1
+'----'134'-----------------------------------------------';
+en_PH.utf8;
+@@character_set_client
+utf8
+'----'133'-----------------------------------------------';
+en_PH;
+@@character_set_client
+latin1
+'----'132'-----------------------------------------------';
+en_NZ.utf8;
+@@character_set_client
+utf8
+'----'131'-----------------------------------------------';
+en_NZ;
+@@character_set_client
+latin1
+'----'130'-----------------------------------------------';
+en_IN.utf8;
+@@character_set_client
+utf8
+'----'129'-----------------------------------------------';
+en_IN;
+@@character_set_client
+utf8
+'----'128'-----------------------------------------------';
+en_IE@euro;
+@@character_set_client
+latin1
+'----'127'-----------------------------------------------';
+en_IE.utf8;
+@@character_set_client
+utf8
+'----'126'-----------------------------------------------';
+en_IE;
+@@character_set_client
+latin1
+'----'125'-----------------------------------------------';
+en_HK.utf8;
+@@character_set_client
+utf8
+'----'124'-----------------------------------------------';
+en_HK;
+@@character_set_client
+latin1
+'----'123'-----------------------------------------------';
+en_GB.utf8;
+@@character_set_client
+utf8
+'----'122'-----------------------------------------------';
+en_GB.iso885915;
+@@character_set_client
+latin1
+'----'121'-----------------------------------------------';
+en_GB;
+@@character_set_client
+latin1
+'----'120'-----------------------------------------------';
+en_DK.utf8;
+@@character_set_client
+utf8
+'----'119'-----------------------------------------------';
+en_DK;
+@@character_set_client
+latin1
+'----'118'-----------------------------------------------';
+en_CA.utf8;
+@@character_set_client
+utf8
+'----'117'-----------------------------------------------';
+en_CA;
+@@character_set_client
+latin1
+'----'116'-----------------------------------------------';
+en_BW.utf8;
+@@character_set_client
+utf8
+'----'115'-----------------------------------------------';
+en_BW;
+@@character_set_client
+latin1
+'----'114'-----------------------------------------------';
+en_BE@euro;
+@@character_set_client
+latin1
+'----'113'-----------------------------------------------';
+en_BE.utf8;
+@@character_set_client
+utf8
+'----'112'-----------------------------------------------';
+en_BE;
+@@character_set_client
+latin1
+'----'111'-----------------------------------------------';
+en_AU.utf8;
+@@character_set_client
+utf8
+'----'110'-----------------------------------------------';
+en_AU;
+@@character_set_client
+latin1
+'----'109'-----------------------------------------------';
+el_GR.utf8;
+@@character_set_client
+utf8
+'----'108'-----------------------------------------------';
+el_GR;
+@@character_set_client
+greek
+'----'107'-----------------------------------------------';
+el_CY.utf8;
+@@character_set_client
+utf8
+'----'106'-----------------------------------------------';
+el_CY;
+@@character_set_client
+greek
+'----'105'-----------------------------------------------';
+dz_BT;
+@@character_set_client
+utf8
+'----'104'-----------------------------------------------';
+de_LU@euro;
+@@character_set_client
+latin1
+'----'103'-----------------------------------------------';
+de_LU.utf8;
+@@character_set_client
+utf8
+'----'102'-----------------------------------------------';
+de_LU;
+@@character_set_client
+latin1
+'----'101'-----------------------------------------------';
+de_DE@euro;
+@@character_set_client
+latin1
+'----'100'-----------------------------------------------';
+de_DE.utf8;
+@@character_set_client
+utf8
+'----'99'-----------------------------------------------';
+de_DE.iso88591;
+@@character_set_client
+latin1
+'----'98'-----------------------------------------------';
+de_DE;
+@@character_set_client
+latin2
+'----'97'-----------------------------------------------';
+de_CH.utf8;
+@@character_set_client
+utf8
+'----'96'-----------------------------------------------';
+de_CH;
+@@character_set_client
+latin1
+'----'95'-----------------------------------------------';
+de_BE@euro;
+@@character_set_client
+latin1
+'----'94'-----------------------------------------------';
+de_BE.utf8;
+@@character_set_client
+utf8
+'----'93'-----------------------------------------------';
+de_BE;
+@@character_set_client
+latin1
+'----'92'-----------------------------------------------';
+de_AT@euro;
+@@character_set_client
+latin1
+'----'91'-----------------------------------------------';
+de_AT.utf8;
+@@character_set_client
+utf8
+'----'90'-----------------------------------------------';
+de_AT;
+@@character_set_client
+latin1
+'----'89'-----------------------------------------------';
+da_DK.utf8;
+@@character_set_client
+utf8
+'----'88'-----------------------------------------------';
+da_DK;
+@@character_set_client
+latin1
+'----'87'-----------------------------------------------';
+cy_GB.utf8;
+@@character_set_client
+utf8
+'----'86'-----------------------------------------------';
+cy_GB;
+@@character_set_client
+latin1
+'----'85'-----------------------------------------------';
+csb_PL;
+@@character_set_client
+utf8
+'----'84'-----------------------------------------------';
+cs_CZ.utf8;
+@@character_set_client
+utf8
+'----'83'-----------------------------------------------';
+cs_CZ.iso88592;
+@@character_set_client
+latin2
+'----'82'-----------------------------------------------';
+cs_CZ;
+@@character_set_client
+latin2
+'----'81'-----------------------------------------------';
+crh_UA;
+@@character_set_client
+utf8
+'----'80'-----------------------------------------------';
+ca_IT.utf8;
+@@character_set_client
+utf8
+'----'79'-----------------------------------------------';
+ca_IT;
+@@character_set_client
+latin1
+'----'78'-----------------------------------------------';
+ca_FR.utf8;
+@@character_set_client
+utf8
+'----'77'-----------------------------------------------';
+ca_FR;
+@@character_set_client
+latin1
+'----'76'-----------------------------------------------';
+ca_ES@euro;
+@@character_set_client
+latin1
+'----'75'-----------------------------------------------';
+ca_ES.utf8;
+@@character_set_client
+utf8
+'----'74'-----------------------------------------------';
+ca_ES;
+@@character_set_client
+latin1
+'----'73'-----------------------------------------------';
+ca_AD.utf8;
+@@character_set_client
+utf8
+'----'72'-----------------------------------------------';
+ca_AD;
+@@character_set_client
+latin1
+'----'71'-----------------------------------------------';
+byn_ER.utf8;
+@@character_set_client
+utf8
+'----'70'-----------------------------------------------';
+byn_ER;
+@@character_set_client
+utf8
+'----'69'-----------------------------------------------';
+bs_BA.utf8;
+@@character_set_client
+utf8
+'----'68'-----------------------------------------------';
+bs_BA;
+@@character_set_client
+latin2
+'----'67'-----------------------------------------------';
+br_FR@euro;
+@@character_set_client
+latin1
+'----'66'-----------------------------------------------';
+br_FR.utf8;
+@@character_set_client
+utf8
+'----'65'-----------------------------------------------';
+br_FR;
+@@character_set_client
+latin1
+'----'64'-----------------------------------------------';
+bn_IN.utf8;
+@@character_set_client
+utf8
+'----'63'-----------------------------------------------';
+bn_IN;
+@@character_set_client
+utf8
+'----'62'-----------------------------------------------';
+bn_BD.utf8;
+@@character_set_client
+utf8
+'----'61'-----------------------------------------------';
+bn_BD;
+@@character_set_client
+utf8
+'----'60'-----------------------------------------------';
+bg_BG.utf8;
+@@character_set_client
+utf8
+'----'59'-----------------------------------------------';
+bg_BG;
+@@character_set_client
+cp1251
+'----'58'-----------------------------------------------';
+be_BY@latin;
+@@character_set_client
+utf8
+'----'57'-----------------------------------------------';
+be_BY.utf8;
+@@character_set_client
+utf8
+'----'56'-----------------------------------------------';
+be_BY;
+@@character_set_client
+cp1251
+'----'55'-----------------------------------------------';
+az_AZ.utf8;
+@@character_set_client
+utf8
+'----'54'-----------------------------------------------';
+ast_ES.utf8;
+@@character_set_client
+utf8
+'----'53'-----------------------------------------------';
+ast_ES;
+@@character_set_client
+latin1
+'----'52'-----------------------------------------------';
+as_IN.utf8;
+@@character_set_client
+utf8
+'----'51'-----------------------------------------------';
+ar_YE.utf8;
+@@character_set_client
+utf8
+'----'50'-----------------------------------------------';
+ar_YE;
+@@character_set_client
+latin1
+'----'49'-----------------------------------------------';
+ar_TN.utf8;
+@@character_set_client
+utf8
+'----'48'-----------------------------------------------';
+ar_TN;
+@@character_set_client
+latin1
+'----'47'-----------------------------------------------';
+ar_SY.utf8;
+@@character_set_client
+utf8
+'----'46'-----------------------------------------------';
+ar_SY;
+@@character_set_client
+latin1
+'----'45'-----------------------------------------------';
+ar_SD.utf8;
+@@character_set_client
+utf8
+'----'44'-----------------------------------------------';
+ar_SD;
+@@character_set_client
+latin1
+'----'43'-----------------------------------------------';
+ar_SA.utf8;
+@@character_set_client
+utf8
+'----'42'-----------------------------------------------';
+ar_SA;
+@@character_set_client
+latin1
+'----'41'-----------------------------------------------';
+ar_QA.utf8;
+@@character_set_client
+utf8
+'----'40'-----------------------------------------------';
+ar_QA;
+@@character_set_client
+latin1
+'----'39'-----------------------------------------------';
+ar_OM.utf8;
+@@character_set_client
+utf8
+'----'38'-----------------------------------------------';
+ar_OM;
+@@character_set_client
+latin1
+'----'37'-----------------------------------------------';
+ar_MA.utf8;
+@@character_set_client
+utf8
+'----'36'-----------------------------------------------';
+ar_MA;
+@@character_set_client
+latin1
+'----'35'-----------------------------------------------';
+ar_LY.utf8;
+@@character_set_client
+utf8
+'----'34'-----------------------------------------------';
+ar_LY;
+@@character_set_client
+latin1
+'----'33'-----------------------------------------------';
+ar_LB.utf8;
+@@character_set_client
+utf8
+'----'32'-----------------------------------------------';
+ar_LB;
+@@character_set_client
+latin1
+'----'31'-----------------------------------------------';
+ar_KW.utf8;
+@@character_set_client
+utf8
+'----'30'-----------------------------------------------';
+ar_KW;
+@@character_set_client
+latin1
+'----'29'-----------------------------------------------';
+ar_JO.utf8;
+@@character_set_client
+utf8
+'----'28'-----------------------------------------------';
+ar_JO;
+@@character_set_client
+latin1
+'----'27'-----------------------------------------------';
+ar_IQ.utf8;
+@@character_set_client
+utf8
+'----'26'-----------------------------------------------';
+ar_IQ;
+@@character_set_client
+latin1
+'----'25'-----------------------------------------------';
+ar_IN.utf8;
+@@character_set_client
+utf8
+'----'24'-----------------------------------------------';
+ar_IN;
+@@character_set_client
+utf8
+'----'23'-----------------------------------------------';
+ar_EG.utf8;
+@@character_set_client
+utf8
+'----'22'-----------------------------------------------';
+ar_EG;
+@@character_set_client
+latin1
+'----'21'-----------------------------------------------';
+ar_DZ.utf8;
+@@character_set_client
+utf8
+'----'20'-----------------------------------------------';
+ar_DZ;
+@@character_set_client
+latin1
+'----'19'-----------------------------------------------';
+ar_BH.utf8;
+@@character_set_client
+utf8
+'----'18'-----------------------------------------------';
+ar_BH;
+@@character_set_client
+latin1
+'----'17'-----------------------------------------------';
+ar_AE.utf8;
+@@character_set_client
+utf8
+'----'16'-----------------------------------------------';
+ar_AE;
+@@character_set_client
+latin1
+'----'15'-----------------------------------------------';
+an_ES.utf8;
+@@character_set_client
+utf8
+'----'14'-----------------------------------------------';
+an_ES;
+@@character_set_client
+latin1
+'----'13'-----------------------------------------------';
+am_ET.utf8;
+@@character_set_client
+utf8
+'----'12'-----------------------------------------------';
+am_ET;
+@@character_set_client
+utf8
+'----'11'-----------------------------------------------';
+af_ZA.utf8;
+@@character_set_client
+utf8
+'----'10'-----------------------------------------------';
+af_ZA;
+@@character_set_client
+latin1
+'----'9'-----------------------------------------------';
+aa_ET.utf8;
+@@character_set_client
+utf8
+'----'8'-----------------------------------------------';
+aa_ET;
+@@character_set_client
+utf8
+'----'7'-----------------------------------------------';
+aa_ER@saaho;
+@@character_set_client
+utf8
+'----'6'-----------------------------------------------';
+aa_ER.utf8;
+@@character_set_client
+utf8
+'----'5'-----------------------------------------------';
+aa_ER;
+@@character_set_client
+utf8
+'----'4'-----------------------------------------------';
+aa_DJ.utf8;
+@@character_set_client
+utf8
+'----'3'-----------------------------------------------';
+aa_DJ;
+@@character_set_client
+latin1
+'----'2'-----------------------------------------------';
+POSIX;
+@@character_set_client
+ascii
+'----'1'-----------------------------------------------';
+C;
+@@character_set_client
+ascii
+DROP TABLE t_charsets;

=== added file 'mysql-test/r/mysql_auto_charset_win.result'
--- a/mysql-test/r/mysql_auto_charset_win.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/mysql_auto_charset_win.result	2009-04-29 14:38:38 +0000
@@ -0,0 +1,572 @@
+CREATE TABLE t_charsets (c1 varchar(50));
+INSERT INTO t_charsets VALUES (437);
+INSERT INTO t_charsets VALUES (708);
+INSERT INTO t_charsets VALUES (720);
+INSERT INTO t_charsets VALUES (737);
+INSERT INTO t_charsets VALUES (775);
+INSERT INTO t_charsets VALUES (850);
+INSERT INTO t_charsets VALUES (852);
+INSERT INTO t_charsets VALUES (855);
+INSERT INTO t_charsets VALUES (857);
+INSERT INTO t_charsets VALUES (858);
+INSERT INTO t_charsets VALUES (861);
+INSERT INTO t_charsets VALUES (862);
+INSERT INTO t_charsets VALUES (863);
+INSERT INTO t_charsets VALUES (864);
+INSERT INTO t_charsets VALUES (865);
+INSERT INTO t_charsets VALUES (866);
+INSERT INTO t_charsets VALUES (869);
+INSERT INTO t_charsets VALUES (874);
+INSERT INTO t_charsets VALUES (1250);
+INSERT INTO t_charsets VALUES (1251);
+INSERT INTO t_charsets VALUES (1252);
+INSERT INTO t_charsets VALUES (1253);
+INSERT INTO t_charsets VALUES (1254);
+INSERT INTO t_charsets VALUES (1255);
+INSERT INTO t_charsets VALUES (1256);
+INSERT INTO t_charsets VALUES (1257);
+INSERT INTO t_charsets VALUES (1258);
+INSERT INTO t_charsets VALUES (1361);
+INSERT INTO t_charsets VALUES (10000);
+INSERT INTO t_charsets VALUES (10001);
+INSERT INTO t_charsets VALUES (10002);
+INSERT INTO t_charsets VALUES (10003);
+INSERT INTO t_charsets VALUES (10004);
+INSERT INTO t_charsets VALUES (10005);
+INSERT INTO t_charsets VALUES (10006);
+INSERT INTO t_charsets VALUES (10007);
+INSERT INTO t_charsets VALUES (10008);
+INSERT INTO t_charsets VALUES (10010);
+INSERT INTO t_charsets VALUES (10017);
+INSERT INTO t_charsets VALUES (10021);
+INSERT INTO t_charsets VALUES (10029);
+INSERT INTO t_charsets VALUES (10079);
+INSERT INTO t_charsets VALUES (10081);
+INSERT INTO t_charsets VALUES (10082);
+INSERT INTO t_charsets VALUES (20000);
+INSERT INTO t_charsets VALUES (20001);
+INSERT INTO t_charsets VALUES (20002);
+INSERT INTO t_charsets VALUES (20003);
+INSERT INTO t_charsets VALUES (20004);
+INSERT INTO t_charsets VALUES (20005);
+INSERT INTO t_charsets VALUES (20105);
+INSERT INTO t_charsets VALUES (20106);
+INSERT INTO t_charsets VALUES (20107);
+INSERT INTO t_charsets VALUES (20108);
+INSERT INTO t_charsets VALUES (20127);
+INSERT INTO t_charsets VALUES (20261);
+INSERT INTO t_charsets VALUES (20269);
+INSERT INTO t_charsets VALUES (20866);
+INSERT INTO t_charsets VALUES (20932);
+INSERT INTO t_charsets VALUES (20936);
+INSERT INTO t_charsets VALUES (20949);
+INSERT INTO t_charsets VALUES (21866);
+INSERT INTO t_charsets VALUES (28591);
+INSERT INTO t_charsets VALUES (28592);
+INSERT INTO t_charsets VALUES (28593);
+INSERT INTO t_charsets VALUES (28594);
+INSERT INTO t_charsets VALUES (28595);
+INSERT INTO t_charsets VALUES (28596);
+INSERT INTO t_charsets VALUES (28597);
+INSERT INTO t_charsets VALUES (28598);
+INSERT INTO t_charsets VALUES (28599);
+INSERT INTO t_charsets VALUES (28603);
+INSERT INTO t_charsets VALUES (28605);
+INSERT INTO t_charsets VALUES (38598);
+INSERT INTO t_charsets VALUES (50220);
+INSERT INTO t_charsets VALUES (50221);
+INSERT INTO t_charsets VALUES (50222);
+INSERT INTO t_charsets VALUES (50225);
+INSERT INTO t_charsets VALUES (50227);
+INSERT INTO t_charsets VALUES (50229);
+INSERT INTO t_charsets VALUES (51949);
+INSERT INTO t_charsets VALUES (52936);
+INSERT INTO t_charsets VALUES (54936);
+INSERT INTO t_charsets VALUES (57002);
+INSERT INTO t_charsets VALUES (57003);
+INSERT INTO t_charsets VALUES (57004);
+INSERT INTO t_charsets VALUES (57005);
+INSERT INTO t_charsets VALUES (57006);
+INSERT INTO t_charsets VALUES (57007);
+INSERT INTO t_charsets VALUES (57008);
+INSERT INTO t_charsets VALUES (57009);
+INSERT INTO t_charsets VALUES (57010);
+INSERT INTO t_charsets VALUES (57011);
+INSERT INTO t_charsets VALUES (65000);
+INSERT INTO t_charsets VALUES (65001);
+'----'95'-----------------------------------------------';
+65001;
+Active code page: 65001
+@@character_set_client
+utf8
+'----'94'-----------------------------------------------';
+65000;
+Active code page: 65000
+@@character_set_client
+latin1
+'----'93'-----------------------------------------------';
+57011;
+Active code page: 57011
+@@character_set_client
+latin1
+'----'92'-----------------------------------------------';
+57010;
+Active code page: 57010
+@@character_set_client
+latin1
+'----'91'-----------------------------------------------';
+57009;
+Active code page: 57009
+@@character_set_client
+latin1
+'----'90'-----------------------------------------------';
+57008;
+Active code page: 57008
+@@character_set_client
+latin1
+'----'89'-----------------------------------------------';
+57007;
+Active code page: 57007
+@@character_set_client
+latin1
+'----'88'-----------------------------------------------';
+57006;
+Active code page: 57006
+@@character_set_client
+latin1
+'----'87'-----------------------------------------------';
+57005;
+Active code page: 57005
+@@character_set_client
+latin1
+'----'86'-----------------------------------------------';
+57004;
+Active code page: 57004
+@@character_set_client
+latin1
+'----'85'-----------------------------------------------';
+57003;
+Active code page: 57003
+@@character_set_client
+latin1
+'----'84'-----------------------------------------------';
+57002;
+Active code page: 57002
+@@character_set_client
+latin1
+'----'83'-----------------------------------------------';
+54936;
+Active code page: 54936
+@@character_set_client
+latin1
+'----'82'-----------------------------------------------';
+52936;
+Active code page: 52936
+@@character_set_client
+latin1
+'----'81'-----------------------------------------------';
+51949;
+Active code page: 51949
+@@character_set_client
+euckr
+'----'80'-----------------------------------------------';
+50229;
+Active code page: 50229
+@@character_set_client
+latin1
+'----'79'-----------------------------------------------';
+50227;
+Active code page: 50227
+@@character_set_client
+latin1
+'----'78'-----------------------------------------------';
+50225;
+Active code page: 50225
+@@character_set_client
+latin1
+'----'77'-----------------------------------------------';
+50222;
+Active code page: 50222
+@@character_set_client
+latin1
+'----'76'-----------------------------------------------';
+50221;
+Active code page: 50221
+@@character_set_client
+latin1
+'----'75'-----------------------------------------------';
+50220;
+Active code page: 50220
+@@character_set_client
+latin1
+'----'74'-----------------------------------------------';
+38598;
+Active code page: 38598
+@@character_set_client
+hebrew
+'----'73'-----------------------------------------------';
+28605;
+Active code page: 28605
+@@character_set_client
+latin1
+'----'72'-----------------------------------------------';
+28603;
+Active code page: 28603
+@@character_set_client
+latin7
+'----'71'-----------------------------------------------';
+28599;
+Active code page: 28599
+@@character_set_client
+latin5
+'----'70'-----------------------------------------------';
+28598;
+Active code page: 28598
+@@character_set_client
+hebrew
+'----'69'-----------------------------------------------';
+28597;
+Active code page: 28597
+@@character_set_client
+greek
+'----'68'-----------------------------------------------';
+28596;
+Active code page: 28596
+@@character_set_client
+latin1
+'----'67'-----------------------------------------------';
+28595;
+Active code page: 28595
+@@character_set_client
+latin1
+'----'66'-----------------------------------------------';
+28594;
+Active code page: 28594
+@@character_set_client
+latin1
+'----'65'-----------------------------------------------';
+28593;
+Active code page: 28593
+@@character_set_client
+latin1
+'----'64'-----------------------------------------------';
+28592;
+Active code page: 28592
+@@character_set_client
+latin2
+'----'63'-----------------------------------------------';
+28591;
+Active code page: 28591
+@@character_set_client
+latin1
+'----'62'-----------------------------------------------';
+21866;
+Active code page: 21866
+@@character_set_client
+koi8u
+'----'61'-----------------------------------------------';
+20949;
+Active code page: 20949
+@@character_set_client
+euckr
+'----'60'-----------------------------------------------';
+20936;
+Active code page: 20936
+@@character_set_client
+gb2312
+'----'59'-----------------------------------------------';
+20932;
+Active code page: 20932
+@@character_set_client
+ujis
+'----'58'-----------------------------------------------';
+20866;
+Active code page: 20866
+@@character_set_client
+koi8r
+'----'57'-----------------------------------------------';
+20269;
+Active code page: 20269
+@@character_set_client
+latin1
+'----'56'-----------------------------------------------';
+20261;
+Active code page: 20261
+@@character_set_client
+latin1
+'----'55'-----------------------------------------------';
+20127;
+Active code page: 20127
+@@character_set_client
+ascii
+'----'54'-----------------------------------------------';
+20108;
+Active code page: 20108
+@@character_set_client
+latin1
+'----'53'-----------------------------------------------';
+20107;
+Active code page: 20107
+@@character_set_client
+swe7
+'----'52'-----------------------------------------------';
+20106;
+Active code page: 20106
+@@character_set_client
+latin1
+'----'51'-----------------------------------------------';
+20105;
+Active code page: 20105
+@@character_set_client
+latin1
+'----'50'-----------------------------------------------';
+20005;
+Active code page: 20005
+@@character_set_client
+latin1
+'----'49'-----------------------------------------------';
+20004;
+Active code page: 20004
+@@character_set_client
+latin1
+'----'48'-----------------------------------------------';
+20003;
+Active code page: 20003
+@@character_set_client
+latin1
+'----'47'-----------------------------------------------';
+20002;
+Active code page: 20002
+@@character_set_client
+latin1
+'----'46'-----------------------------------------------';
+20001;
+Active code page: 20001
+@@character_set_client
+latin1
+'----'45'-----------------------------------------------';
+20000;
+Active code page: 20000
+@@character_set_client
+latin1
+'----'44'-----------------------------------------------';
+10082;
+Active code page: 10082
+@@character_set_client
+latin1
+'----'43'-----------------------------------------------';
+10081;
+Active code page: 10081
+@@character_set_client
+latin1
+'----'42'-----------------------------------------------';
+10079;
+Active code page: 10079
+@@character_set_client
+latin1
+'----'41'-----------------------------------------------';
+10029;
+Active code page: 10029
+@@character_set_client
+macce
+'----'40'-----------------------------------------------';
+10021;
+Active code page: 10021
+@@character_set_client
+tis620
+'----'39'-----------------------------------------------';
+10017;
+Active code page: 10017
+@@character_set_client
+latin1
+'----'38'-----------------------------------------------';
+10010;
+Active code page: 10010
+@@character_set_client
+latin1
+'----'37'-----------------------------------------------';
+10008;
+Active code page: 10008
+@@character_set_client
+gb2312
+'----'36'-----------------------------------------------';
+10007;
+Active code page: 10007
+@@character_set_client
+latin1
+'----'35'-----------------------------------------------';
+10006;
+Active code page: 10006
+@@character_set_client
+latin1
+'----'34'-----------------------------------------------';
+10005;
+Active code page: 10005
+@@character_set_client
+latin1
+'----'33'-----------------------------------------------';
+10004;
+Active code page: 10004
+@@character_set_client
+latin1
+'----'32'-----------------------------------------------';
+10003;
+Active code page: 10003
+@@character_set_client
+latin1
+'----'31'-----------------------------------------------';
+10002;
+Active code page: 10002
+@@character_set_client
+big5
+'----'30'-----------------------------------------------';
+10001;
+Active code page: 10001
+@@character_set_client
+sjis
+'----'29'-----------------------------------------------';
+10000;
+Active code page: 10000
+@@character_set_client
+macroman
+'----'28'-----------------------------------------------';
+1361;
+Active code page: 1361
+@@character_set_client
+latin1
+'----'27'-----------------------------------------------';
+1258;
+Active code page: 1258
+@@character_set_client
+latin1
+'----'26'-----------------------------------------------';
+1257;
+Active code page: 1257
+@@character_set_client
+cp1257
+'----'25'-----------------------------------------------';
+1256;
+Active code page: 1256
+@@character_set_client
+cp1256
+'----'24'-----------------------------------------------';
+1255;
+Active code page: 1255
+@@character_set_client
+hebrew
+'----'23'-----------------------------------------------';
+1254;
+Active code page: 1254
+@@character_set_client
+latin5
+'----'22'-----------------------------------------------';
+1253;
+Active code page: 1253
+@@character_set_client
+greek
+'----'21'-----------------------------------------------';
+1252;
+Active code page: 1252
+@@character_set_client
+latin1
+'----'20'-----------------------------------------------';
+1251;
+Active code page: 1251
+@@character_set_client
+cp1251
+'----'19'-----------------------------------------------';
+1250;
+Active code page: 1250
+@@character_set_client
+cp1250
+'----'18'-----------------------------------------------';
+874;
+Active code page: 874
+@@character_set_client
+tis620
+'----'17'-----------------------------------------------';
+869;
+Active code page: 869
+@@character_set_client
+latin1
+'----'16'-----------------------------------------------';
+866;
+Active code page: 866
+@@character_set_client
+cp866
+'----'15'-----------------------------------------------';
+865;
+Active code page: 865
+@@character_set_client
+latin1
+'----'14'-----------------------------------------------';
+864;
+Active code page: 864
+@@character_set_client
+latin1
+'----'13'-----------------------------------------------';
+863;
+Active code page: 863
+@@character_set_client
+latin1
+'----'12'-----------------------------------------------';
+862;
+Active code page: 862
+@@character_set_client
+latin1
+'----'11'-----------------------------------------------';
+861;
+Active code page: 861
+@@character_set_client
+latin1
+'----'10'-----------------------------------------------';
+858;
+Active code page: 858
+@@character_set_client
+cp850
+'----'9'-----------------------------------------------';
+857;
+Active code page: 857
+@@character_set_client
+latin1
+'----'8'-----------------------------------------------';
+855;
+Active code page: 855
+@@character_set_client
+latin1
+'----'7'-----------------------------------------------';
+852;
+Active code page: 852
+@@character_set_client
+cp852
+'----'6'-----------------------------------------------';
+850;
+Active code page: 850
+@@character_set_client
+cp850
+'----'5'-----------------------------------------------';
+775;
+Active code page: 775
+@@character_set_client
+latin1
+'----'4'-----------------------------------------------';
+737;
+Active code page: 737
+@@character_set_client
+latin1
+'----'3'-----------------------------------------------';
+720;
+Active code page: 720
+@@character_set_client
+latin1
+'----'2'-----------------------------------------------';
+708;
+Active code page: 708
+@@character_set_client
+latin1
+'----'1'-----------------------------------------------';
+437;
+Active code page: 437
+@@character_set_client
+cp850
+DROP TABLE t_charsets;

=== added file 'mysql-test/r/mysql_clients_locale.result'
--- a/mysql-test/r/mysql_clients_locale.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/mysql_clients_locale.result	2009-04-29 14:38:38 +0000
@@ -0,0 +1,95 @@
+SET NAMES 'utf8';
+CREATE TABLE t_charsets (charset varchar(50), dbname varchar(50),intern_cs varchar(50));
+INSERT INTO t_charsets VALUES ('de_DE.utf8', 'süß', NULL);
+INSERT INTO t_charsets VALUES ('de_DE', 'süß', NULL);
+INSERT INTO t_charsets VALUES ('de_DE.iso88591', 'äöüß', NULL);
+INSERT INTO t_charsets VALUES ('ja_JP.sjis', 'abc', NULL);
+SELECT * FROM t_charsets;
+charset	dbname	intern_cs
+de_DE.utf8	süß	NULL
+de_DE	süß	NULL
+de_DE.iso88591	sjis
+SET NAMES 'sjis';
+abc.t1: Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
+Database: abc
++--------+
+| Tables |
++--------+
+| t1     |
++--------+
+abc.t1                                             OK
+SELECT * FROM `abc`.t1;
+c1
+abcde
+a1b2c3
+nhu3453ngd
+DROP DATABASE `abc`;
+SET NAMES 'utf8';
+
+de_DE.iso88591
+latin1
+SET NAMES 'latin1';
+äöüß.t1: Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
+Database: äöüß
++--------+
+| Tables |
++--------+
+| t1     |
++--------+
+äöüß.t1                                        OK
+SELECT * FROM `äöüß`.t1;
+c1
+abcde
+a1b2c3
+nhu3453ngd
+DROP DATABASE `äöüß`;
+SET NAMES 'utf8';
+
+de_DE
+latin2
+SET NAMES 'latin2';
+süß.t1: Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
+Database: süß
++--------+
+| Tables |
++--------+
+| t1     |
++--------+
+süß.t1                                           OK
+SELECT * FROM `süß`.t1;
+c1
+abcde
+a1b2c3
+nhu3453ngd
+DROP DATABASE `süÃf8';
+süß.t1: Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
+Database: süß
++--------+
+| Tables |
++--------+
+| t1     |
++--------+
+süß.t1                                           OK
+SELECT * FROM `sÃ`süß`;
+SET NAMES 'utf8';
+SELECT * FROM t_charsets;
+charset	dbname	intern_cs
+de_DE.utf8	süß	utf8
+de_DE	süß	latin2
+de_DE.iso88591	äöüß	latin1
+ja_JP.sjis	abc	sjis
+DROP TABLE t_charsets;

=== added file 'mysql-test/r/mysql_clients_locale_win.result'
--- a/mysql-test/r/mysql_clients_locale_win.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/mysql_clients_locale_win.result	2009-04-29 14:38:38 +0000
@@ -0,0 +1,77 @@
+SET NAMES 'utf8';
+CREATE TABLE t_charsets (charset varchar(50), dbname varchar(50),intern_cs varchar(50));
+INSERT INTO t_charsets VALUES ('65001', 's??',  NULL);
+INSERT INTO t_charsets VALUES ('850',  's??',  NULL);
+INSERT INTO t_charsets VALUES ('1250',  '????',  NULL);
+SELECT * FROM t_charsets;
+charset	dbname	intern_cs
+65001	s??	NULL
+850	s??	NULL
+1250	????	NULL
+
+1250
+Active code page: 1250
+cp1250
+SET NAMES 'cp1250';
+????.t1: Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
+Wildcard: ____
++-----------+
+| Databases |
++-----------+
+| ????      |
+| test      |
++-----------+
+????.t1                                            OK
+SELECT * FROM `????`.t1;
+c1
+abcde
+a1b2c3
+nhu3453ngd
+drop database `????`;
+SET NAMES 'utf8';
+
+850
+Active code page: 850
+cp850
+SET NAMES 'cp850';
+s??.t1: Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
+Wildcard: s__
++-----------+
+| Databases |
++-----------+
+| s??       |
++-----------+
+s??.t1                                             OK
+SELECT * FROM `s??`.t1;
+c1
+abcde
+a1b2c3
+nhu3453ngd
+drop database `s??`;
+SET NAMES 'utf8';
+
+65001
+Active code page: 65001
+utf8
+SET NAMES 'utf8';
+s??.t1: Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
+Wildcard: s__
++-----------+
+| Databases |
++-----------+
+| s??       |
++-----------+
+s??.t1                                             OK
+SELECT * FROM `s??`.t1;
+c1
+abcde
+a1b2c3
+nhu3453ngd
+drop database `s??`;
+SET NAMES 'utf8';
+SELECT * FROM t_charsets;
+charset	dbname	intern_cs
+65001	s??	utf8
+850	s??	cp850
+1250	????	cp1250
+DROP TABLE t_charsets;

=== added file 'mysql-test/std_data/t1.txt'
--- a/mysql-test/std_data/t1.txt	1970-01-01 00:00:00 +0000
+++ b/mysql-test/std_data/t1.txt	2009-04-29 14:38:38 +0000
@@ -0,0 +1,3 @@
+abcde
+a1b2c3
+nhu3453ngd

=== added file 'mysql-test/t/mysql_auto_charset.test'
--- a/mysql-test/t/mysql_auto_charset.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/mysql_auto_charset.test	2009-04-29 14:38:38 +0000
@@ -0,0 +1,28 @@
+#########################################################################################
+# Test of charset setting in mode auto for mysql
+# Created: hhunger 2009-04-15
+##########################################################################################
+--source include/not_windows.inc
+--exec locale -a >> var/tmp/locale_a.output 2>/dev/null || true
+CREATE TABLE t_charsets (c1 varchar(50));
+LOAD DATA INFILE '../../tmp/locale_a.output' INTO TABLE t_charsets;
+--exec rm -f var/tmp/locale_a.output
+let $nb_cs=`SELECT count(*) FROM t_charsets`;
+WHILE ($nb_cs)
+{
+  let $cs= query_get_value(select * from t_charsets, c1, $nb_cs);
+  --echo '----'$nb_cs'-----------------------------------------------';
+  --echo $cs;
+  if (!`SELECT '$cs' IN('yi_US','vi_VN.tcvn')`)
+  {
+   --replace_result $MYSQL MYSQL $CHARSETSDIR CHARSETSDIR
+    --exec LC_ALL=$cs $MYSQL --default-character-set=auto --character-sets-dir=$CHARSETSDIR test -e "select @@character_set_client"
+  }
+  if (`SELECT '$cs' IN('yi_US','vi_VN.tcvn')`)
+  {
+    --echo Not yet supported;
+  }
+  --dec $nb_cs
+}
+DROP TABLE t_charsets;
+

=== added file 'mysql-test/t/mysql_auto_charset_win.test'
--- a/mysql-test/t/mysql_auto_charset_win.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/mysql_auto_charset_win.test	2009-04-29 14:38:38 +0000
@@ -0,0 +1,130 @@
+#########################################################################################
+# Test of charset setting in mode auto for mysql on Windows
+# Created: hhunger 2009-04-16
+##########################################################################################
+--source include/windows.inc
+
+CREATE TABLE t_charsets (c1 varchar(50));
+INSERT INTO t_charsets VALUES (437);
+INSERT INTO t_charsets VALUES (708);
+#INSERT INTO t_charsets VALUES (709);
+#INSERT INTO t_charsets VALUES (710);
+INSERT INTO t_charsets VALUES (720);
+INSERT INTO t_charsets VALUES (737);
+INSERT INTO t_charsets VALUES (775);
+INSERT INTO t_charsets VALUES (850);
+INSERT INTO t_charsets VALUES (852);
+INSERT INTO t_charsets VALUES (855);
+INSERT INTO t_charsets VALUES (857);
+INSERT INTO t_charsets VALUES (858);
+INSERT INTO t_charsets VALUES (861);
+INSERT INTO t_charsets VALUES (862);
+INSERT INTO t_charsets VALUES (863);
+INSERT INTO t_charsets VALUES (864);
+INSERT INTO t_charsets VALUES (865);
+INSERT INTO t_charsets VALUES (866);
+INSERT INTO t_charsets VALUES (869);
+INSERT INTO t_charsets VALUES (874);
+#INSERT INTO t_charsets VALUES (932);
+#INSERT INTO t_charsets VALUES (936);
+#INSERT INTO t_charsets VALUES (949);
+#INSERT INTO t_charsets VALUES (950);
+#INSERT INTO t_charsets VALUES (1200);
+#INSERT INTO t_charsets VALUES (1201);
+INSERT INTO t_charsets VALUES (1250);
+INSERT INTO t_charsets VALUES (1251);
+INSERT INTO t_charsets VALUES (1252);
+INSERT INTO t_charsets VALUES (1253);
+INSERT INTO t_charsets VALUES (1254);
+INSERT INTO t_charsets VALUES (1255);
+INSERT INTO t_charsets VALUES (1256);
+INSERT INTO t_charsets VALUES (1257);
+INSERT INTO t_charsets VALUES (1258);
+INSERT INTO t_charsets VALUES (1361);
+INSERT INTO t_charsets VALUES (10000);
+INSERT INTO t_charsets VALUES (10001);
+INSERT INTO t_charsets VALUES (10002);
+INSERT INTO t_charsets VALUES (10003);
+INSERT INTO t_charsets VALUES (10004);
+INSERT INTO t_charsets VALUES (10005);
+INSERT INTO t_charsets VALUES (10006);
+INSERT INTO t_charsets VALUES (10007);
+INSERT INTO t_charsets VALUES (10008);
+INSERT INTO t_charsets VALUES (10010);
+INSERT INTO t_charsets VALUES (10017);
+INSERT INTO t_charsets VALUES (10021);
+INSERT INTO t_charsets VALUES (10029);
+INSERT INTO t_charsets VALUES (10079);
+INSERT INTO t_charsets VALUES (10081);
+INSERT INTO t_charsets VALUES (10082);
+#INSERT INTO t_charsets VALUES (12000);
+#INSERT INTO t_charsets VALUES (12001);
+INSERT INTO t_charsets VALUES (20000);
+INSERT INTO t_charsets VALUES (20001);
+INSERT INTO t_charsets VALUES (20002);
+INSERT INTO t_charsets VALUES (20003);
+INSERT INTO t_charsets VALUES (20004);
+INSERT INTO t_charsets VALUES (20005);
+INSERT INTO t_charsets VALUES (20105);
+INSERT INTO t_charsets VALUES (20106);
+INSERT INTO t_charsets VALUES (20107);
+INSERT INTO t_charsets VALUES (20108);
+INSERT INTO t_charsets VALUES (20127);
+INSERT INTO t_charsets VALUES (20261);
+INSERT INTO t_charsets VALUES (20269);
+INSERT INTO t_charsets VALUES (20866);
+INSERT INTO t_charsets VALUES (20932);
+INSERT INTO t_charsets VALUES (20936);
+INSERT INTO t_charsets VALUES (20949);
+INSERT INTO t_charsets VALUES (21866);
+INSERT INTO t_charsets VALUES (28591);
+INSERT INTO t_charsets VALUES (28592);
+INSERT INTO t_charsets VALUES (28593);
+INSERT INTO t_charsets VALUES (28594);
+INSERT INTO t_charsets VALUES (28595);
+INSERT INTO t_charsets VALUES (28596);
+INSERT INTO t_charsets VALUES (28597);
+INSERT INTO t_charsets VALUES (28598);
+INSERT INTO t_charsets VALUES (28599);
+INSERT INTO t_charsets VALUES (28603);
+INSERT INTO t_charsets VALUES (28605);
+#INSERT INTO t_charsets VALUES (29001);
+INSERT INTO t_charsets VALUES (38598);
+INSERT INTO t_charsets VALUES (50220);
+INSERT INTO t_charsets VALUES (50221);
+INSERT INTO t_charsets VALUES (50222);
+INSERT INTO t_charsets VALUES (50225);
+INSERT INTO t_charsets VALUES (50227);
+INSERT INTO t_charsets VALUES (50229);
+#INSERT INTO t_charsets VALUES (51932);
+#INSERT INTO t_charsets VALUES (51936);
+INSERT INTO t_charsets VALUES (51949);
+#INSERT INTO t_charsets VALUES (51950);
+INSERT INTO t_charsets VALUES (52936);
+INSERT INTO t_charsets VALUES (54936);
+INSERT INTO t_charsets VALUES (57002);
+INSERT INTO t_charsets VALUES (57003);
+INSERT INTO t_charsets VALUES (57004);
+INSERT INTO t_charsets VALUES (57005);
+INSERT INTO t_charsets VALUES (57006);
+INSERT INTO t_charsets VALUES (57007);
+INSERT INTO t_charsets VALUES (57008);
+INSERT INTO t_charsets VALUES (57009);
+INSERT INTO t_charsets VALUES (57010);
+INSERT INTO t_charsets VALUES (57011);
+INSERT INTO t_charsets VALUES (65000);
+INSERT INTO t_charsets VALUES (65001);
+
+let $nb_cs=`SELECT count(*) FROM t_charsets`;
+WHILE ($nb_cs)
+{
+  let $cs= query_get_value(select * from t_charsets, c1, $nb_cs);
+  --echo '----'$nb_cs'-----------------------------------------------';
+  --echo $cs;
+  --exec chcp $cs
+  --replace_result $MYSQL MYSQL $CHARSETSDIR CHARSETSDIR
+  --exec $MYSQL --default-character-set=auto --character-sets-dir=$CHARSETSDIR test -e "select @@character_set_client"
+  --dec $nb_cs
+}
+DROP TABLE t_charsets;
+

=== added file 'mysql-test/t/mysql_clients_locale.test'
--- a/mysql-test/t/mysql_clients_locale.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/mysql_clients_locale.test	2009-04-29 14:38:38 +0000
@@ -0,0 +1,58 @@
+--source include/not_windows.inc
+--source include/have_case_sensitive_file_system.inc
+
+#
+# Note, please keep this file UTF-8 compatible.
+# After editing, make sure that
+# this file says 
+#   "UTF-8 Unicode text"
+# or
+#   "UTF-8 Unicode English text"
+#
+
+SET NAMES 'utf8';
+
+CREATE TABLE t_charsets (charset varchar(50), dbname varchar(50),intern_cs varchar(50));
+
+INSERT INTO t_charsets VALUES ('de_DE.utf8', 'süß', NULL);
+INSERT INTO t_charsets VALUES ('de_DE', 'süß', NULL);
+#INSERT INTO t_charsets VALUES ('ru_RU.KOI8-R', _utf8 0xC3B3, NULL);
+INSERT INTO t_charsets VALUES ('de_DE.iso88591', 'äö, 'андрей', NULL);
+INSERT INTO t_charsets VALUES ('ja_JP.sjis', 'abc', NULL);
+#INSERT INTO t_charsets VALUES ('de_DE.iso88591', 'Ψ', NULL);
+
+SELECT * FROM t_charsets;
+
+let $nb_cs=`SELECT count(*) FROM t_charsets`;
+WHILE ($nb_cs)
+{
+  let $charset= query_get_value(select * from t_charsets, charset, $nb_cs);
+  let $dbname= query_get_value(select * from t_charsets, dbname, $nb_cs);
+  --echo
+  --echo $charset
+  --exec LC_ALL=$charset $MYSQL --default-character-set=auto test -e "UPDATE t_charsets SET intern_cs= @@character_set_client WHERE charset='$charset'"  
+  let $clcs= query_get_value(select * from t_charsets, intern_cs, $nb_cs);
+  --echo $clcs
+  eval SET NAMES '$clcs';
+  --replace_result $MYSQLADMIN MYSQLADMIN $MASTER_MYSOCK MYSOCK $MASTER_MYPORT MYPORT
+  --exec LC_ALL=$charset $MYSQLADMIN -uroot -S $MASTER_MYSOCK -P $MASTER_MYPORT --default-character-set=auto create $dbname
+  --exec LC_ALL=$charset $MYSQL --default-character-set=auto $dbname -e "CREATE TABLE t1 (c1 varchar(20))" 
+  --replace_result $MYSQL_IMPORT MYSQLIMPORT $MYSQLTEST_VARDIR VARDIR
+  --exec LC_ALL=$charset $MYSQL_IMPORT --default-character-set=auto $dbname $MYSQLTEST_VARDIR/std_data/t1.txt
+  --exec LC_ALL=$charset $MYSQL_SHOW --default-character-set=auto $dbname
+  --exec LC_ALL=$charset $MYSQL_CHECK --default-character-set=auto "$dbname"
+  --disable_warnings
+  eval SELECT * FROM `$dbname`.t1;
+  eval DROP DATABASE `$dbname`;
+  --enable_warnings
+  SET NAMES 'utf8';
+  --dec $nb_cs
+}
+
+SELECT * FROM t_charsets;
+
+--disable_warnings
+DROP TABLE t_charsets;
+--enable_warnings
+

=== added file 'mysql-test/t/mysql_clients_locale_win.test'
--- a/mysql-test/t/mysql_clients_locale_win.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/mysql_clients_locale_win.test	2009-04-29 14:38:38 +0000
@@ -0,0 +1,60 @@
+--source include/windows.inc
+
+#
+# Note, please keep this file UTF-8 compatible.
+# After editing, make sure that
+# this file says 
+#   "UTF-8 Unicode text"
+# or
+#   "UTF-8 Unicode English text"
+#
+
+SET NAMES 'utf8';
+
+CREATE TABLE t_charsets (charset varchar(50), dbname varchar(50),intern_cs varchar(50));
+INSERT INTO t_charsets VALUES ('65001', 's??',  NULL);
+INSERT INTO t_charsets VALUES ('850',  's??',  NULL);
+#INSERT INTO t_charsets VALUES ('ru_RU.KOI8-R', _utf8 0xC3B3, NULL);
+INSERT INTO t_charsets VALUES ('1250',  '????',  NULL);
+#INSERT INTO t_charsets VALUES ('ru_RU', 'андрей', NULL);
+#INSERT INTO t_charsets VALUES ('ja_JP.sjis', 'abc', NULL);
+#INSERT INTO t_charsets VALUES ('de_DE.iso88591', 'Ψ', NULL);
+
+SELECT * FROM t_charsets;
+
+let $nb_cs=`SELECT count(*) FROM t_charsets`;
+WHILE ($nb_cs)
+{
+  let $charset= query_get_value(select * from t_charsets, charset, $nb_cs);
+  let $dbname= query_get_value(select * from t_charsets, dbname, $nb_cs);
+  --echo
+  --echo $charset
+  --exec chcp $charset
+ --replace_result $MYSQL MYSQL $CHARSETSDIR CHARSETSDIR
+  --exec $MYSQL --default-character-set=auto --character-sets-dir=$CHARSETSDIR test -e "update t_charsets set intern_cs=@@character_set_client where charset='$charset'"  
+  let $clcs= query_get_value(select * from t_charsets, intern_cs, $nb_cs);
+  --echo $clcs
+  eval SET NAMES '$clcs';
+  --replace_result $MYSQLADMIN MYSQLADMIN $MASTER_MYSOCK MYSOCK $MASTER_MYPORT MYPORT
+  --exec $MYSQLADMIN -uroot -S $MASTER_MYSOCK -P $MASTER_MYPORT --default-character-set=auto create $dbname
+  --exec $MYSQL --default-character-set=auto $dbname -e "CREATE TABLE t1 (c1 varchar(20))" 
+  --replace_result $MYSQL_IMPORT MYSQLIMPORT $MYSQLTEST_VARDIR VARDIR
+  --exec $MYSQL_IMPORT --default-character-set=auto $dbname $MYSQLTEST_VARDIR/std_data/t1.txt
+  --exec $MYSQL_SHOW --default-character-set=auto $dbname
+  --exec $MYSQL_CHECK --default-character-set=auto "$dbname"
+  --disable_warnings
+  eval SELECT * FROM `$dbname`.t1;
+  --disable_warnings
+  eval drop database `$dbname`;
+  --enable_warnings
+  SET NAMES 'utf8';
+  --dec $nb_cs
+}
+
+SELECT * FROM t_charsets;
+
+--disable_warnings
+DROP TABLE t_charsets;
+--enable_warnings
+
+--exit

=== modified file 'sql-common/client.c'
--- a/sql-common/client.c	2009-03-19 16:42:23 +0000
+++ b/sql-common/client.c	2009-04-29 14:38:38 +0000
@@ -1843,52 +1843,295 @@ static MYSQL_METHODS client_methods=
 #endif
 };
 
+
+
+typedef enum my_cs_match_type_enum
+{
+  /* MySQL and OS charsets are fully compatible */
+  my_cs_exact,
+  /* MySQL charset is very close to OS charset  */
+  my_cs_approx,
+  /*
+    MySQL knows this charset, but it is not supported as client character set.
+  */
+  my_cs_unsupp
+} my_cs_match_type;
+
+
+typedef struct str2str_st
+{
+  const char *os_name;
+  const char *my_name;
+  my_cs_match_type param;
+} MY_CSET_OS_NAME;
+
+const MY_CSET_OS_NAME charsets[]=
+{
+#ifdef __WIN__
+  {"cp437",          "cp850",    my_cs_approx},
+  {"cp850",          "cp850",    my_cs_exact},
+  {"cp852",          "cp852",    my_cs_exact},
+  {"cp858",          "cp850",    my_cs_approx},
+  {"cp866",          "cp866",    my_cs_exact},
+  {"cp874",          "tis620",   my_cs_approx},
+  {"cp932",          "cp932",    my_cs_exact},
+  {"cp936",          "gbk",      my_cs_approx},
+  {"cp949",          "euckr",    my_cs_approx},
+  {"cp950",          "big5",     my_cs_exact},
+  {"cp1200",         "utf16le",  my_cs_unsupp},
+  {"cp1201",         "utf16",    my_cs_unsupp},
+  {"cp1250",         "cp1250",   my_cs_exact},
+  {"cp1251",         "cp1251",   my_cs_exact},
+  {"cp1252",         "latin1",   my_cs_exact},
+  {"cp1253",         "greek",    my_cs_exact},
+  {"cp1254",         "latin5",   my_cs_exact},
+  {"cp1255",         "hebrew",   my_cs_approx},
+  {"cp1256",         "cp1256",   my_cs_exact},
+  {"cp1257",         "cp1257",   my_cs_exact},
+  {"cp10000",        "macroman", my_cs_exact},
+  {"cp10001",        "sjis",     my_cs_approx},
+  {"cp10002",        "big5",     my_cs_approx},
+  {"cp10008",        "gb2312",   my_cs_approx},
+  {"cp10021",        "tis620",   my_cs_approx},
+  {"cp10029",        "macce",    my_cs_exact},
+  {"cp12001",        "utf32",    my_cs_unsupp},
+  {"cp20107",        "swe7",     my_cs_exact},
+  {"cp20127",        "ascii",    my_cs_exact},
+  {"cp20866",        "koi8r",    my_cs_exact},
+  {"cp20932",        "ujis",     my_cs_exact},
+  {"cp20936",        "gb2312",   my_cs_approx},
+  {"cp20949",        "euckr",    my_cs_approx},
+  {"cp21866",        "koi8u",    my_cs_exact},
+  {"cp28591",        "latin1",   my_cs_approx},
+  {"cp28592",        "latin2",   my_cs_exact},
+  {"cp28597",        "greek",    my_cs_exact},
+  {"cp28598",        "hebrew",   my_cs_exact},
+  {"cp28599",        "latin5",   my_cs_exact},
+  {"cp28603",        "latin7",   my_cs_exact},
+#ifdef UNCOMMENT_THIS_WHEN_WL_4579_IS_DONE
+  {"cp28605",        "latin9",   my_cs_exact},
+#endif
+  {"cp38598",        "hebrew",   my_cs_exact},
+  {"cp51932",        "ujis",     my_cs_exact},
+  {"cp51936",        "gb2312",   my_cs_exact},
+  {"cp51949",        "euckr",    my_cs_exact},
+  {"cp51950",        "big5",     my_cs_exact},
+#ifdef UNCOMMENT_THIS_WHEN_WL_WL_4024_IS_DONE
+  {"cp54936",        "gb18030",  my_cs_exact},
+#endif
+  {"cp65001",        "utf8",     my_cs_exact},
+
+#else /* not Windows */
+
+  {"ANSI_X3.4-1968", "ascii",    my_cs_exact},
+  {"ansi1251",       "cp1251",   my_cs_exact},
+  {"armscii8",       "armscii8", my_cs_exact},
+  {"armscii-8",      "armscii8", my_cs_exact},
+  {"ASCII",          "ascii",    my_cs_exact},
+  {"Big5",           "big5",     my_cs_exact},
+  {"cp1251",         "cp1251",   my_cs_exact},
+  {"cp1255",         "hebrew",   my_cs_approx},
+  {"CP866",          "cp866",    my_cs_exact},
+  {"eucCN",          "gb2312",   my_cs_exact},
+  {"euc-CN",         "gb2312",   my_cs_exact},
+  {"eucJP",          "ujis",     my_cs_exact},
+  {"euc-JP",         "ujis",     my_cs_exact},
+  {"eucKR",          "euckr",    my_cs_exact},
+  {"euc-KR",         "euckr",    my_cs_exact},
+#ifdef UNCOMMENT_THIS_WHEN_WL_WL_4024_IS_DONE
+  {"gb18030",        "gb18030",  my_cs_exact},
+#endif
+  {"gb2312",         "gb2312",   my_cs_exact},
+  {"gbk",            "gbk",      my_cs_exact},
+  {"georgianps",     "geostd8",  my_cs_exact},
+  {"georgian-ps",    "geostd8",  my_cs_exact},
+  {"IBM-1252",       "cp1252",   my_cs_exact},
+
+  {"iso88591",       "latin1",   my_cs_approx},
+  {"ISO_8859-1",     "latin1",   my_cs_approx},
+  {"ISO8859-1",      "latin1",   my_cs_approx},
+  {"ISO-8859-1",     "latin1",   my_cs_approx},
+
+  {"iso885913",      "latin7",   my_cs_exact},
+  {"ISO_8859-13",    "latin7",   my_cs_exact},
+  {"ISO8859-13",     "latin7",   my_cs_exact},
+  {"ISO-8859-13",    "latin7",   my_cs_exact},
+
+#ifdef UNCOMMENT_THIS_WHEN_WL_4579_IS_DONE
+  {"iso885915",      "latin9",   my_cs_exact},
+  {"ISO_8859-15",    "latin9",   my_cs_exact},
+  {"ISO8859-15",     "latin9",   my_cs_exact},
+  {"ISO-8859-15",    "latin9",   my_cs_exact},
+#endif
+
+  {"iso88592",       "latin2",   my_cs_exact},
+  {"ISO_8859-2",     "latin2",   my_cs_exact},
+  {"ISO8859-2",      "latin2",   my_cs_exact},
+  {"ISO-8859-2",     "latin2",   my_cs_exact},
+
+  {"iso88597",       "greek",    my_cs_exact},
+  {"ISO_8859-7",     "greek",    my_cs_exact},
+  {"ISO8859-7",      "greek",    my_cs_exact},
+  {"ISO-8859-7",     "greek",    my_cs_exact},
+
+  {"iso88598",       "hebrew",   my_cs_exact},
+  {"ISO_8859-8",     "hebrew",   my_cs_exact},
+  {"ISO8859-8",      "hebrew",   my_cs_exact},
+  {"ISO-8859-8",     "hebrew",   my_cs_exact},
+
+  {"iso88599",       "latin5",   my_cs_exact},
+  {"ISO_8859-9",     "latin5",   my_cs_exact},
+  {"ISO8859-9",      "latin5",   my_cs_exact},
+  {"ISO-8859-9",     "latin5",   my_cs_exact},
+
+  {"koi8r",          "koi8r",    my_cs_exact},
+  {"KOI8-R",         "koi8r",    my_cs_exact},
+  {"koi8u",          "koi8u",    my_cs_exact},
+  {"KOI8-U",         "koi8u",    my_cs_exact},
+
+  {"Shift_JIS",      "sjis",     my_cs_exact},
+  {"SJIS",           "sjis",     my_cs_exact},
+  {"shiftjisx0213",  "sjis",     my_cs_exact},
+  
+  {"tis620",         "tis620",   my_cs_exact},
+  {"tis-620",        "tis620",   my_cs_exact},
+
+  {"ujis",           "ujis",     my_cs_exact},
+
+  {"US-ASCII",       "ascii",    my_cs_exact},
+
+  {"utf8",           "utf8",     my_cs_exact},
+  {"utf-8",          "utf8",     my_cs_exact},
+#endif
+  {NULL,             NULL,       0}
+};
+
+
+static const char *
+my_os_charset_to_mysql_charset(const char *csname)
+{
+  const MY_CSET_OS_NAME *csp;
+  for (csp= charsets; csp->os_name; csp++)
+  {
+    if (!my_strcasecmp(&my_charset_latin1, csp->os_name, csname))
+    {
+      switch (csp->param)
+      {
+      case my_cs_exact:
+        return csp->my_name;
+
+      case my_cs_approx:
+        /*
+          Maybe we should print a warning eventually:
+          character set correspondence is not exact.
+        */
+        return csp->my_name;
+
+      default:
+        my_printf_error(ER_UNKNOWN_ERROR,
+                        "OS character set '%s'"
+                        " is not supported by MySQL client",
+                         MYF(0), csp->my_name);
+        goto def;
+      }
+    }
+  }
+
+  my_printf_error(ER_UNKNOWN_ERROR,
+                  "Unknown OS character set '%s'.",
+                  MYF(0), csname);
+
+def:
+  csname= MYSQL_DEFAULT_CHARSET_NAME;
+  my_printf_error(ER_UNKNOWN_ERROR,
+                  "Switching to the default character set '%s'.",
+                  MYF(0), csname);
+  return csname;
+}
+
+
+#ifndef __WIN__
+#include <stdlib.h> /* for getenv() */
+#ifdef HAVE_LANGINFO_H
+#include <langinfo.h>
+#endif
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+#endif /* __WIN__ */
+
+
+static int
+mysql_autodetect_character_set(MYSQL *mysql)
+{
+  const char *csname= MYSQL_DEFAULT_CHARSET_NAME;
+
+#ifdef __WIN__
+  char cpbuf[64];
+  {
+    my_snprintf(cpbuf, sizeof(cpbuf), "cp%d", (int) GetConsoleCP());
+    csname= my_os_charset_to_mysql_charset(cpbuf);
+  }
+#elif defined(HAVE_SETLOCALE) && defined(HAVE_NL_LANGINFO)
+  {
+    if (setlocale(LC_CTYPE, "") && (csname= nl_langinfo(CODESET)))
+      csname= my_os_charset_to_mysql_charset(csname);
+  }
+#endif
+
+  if (!(mysql->options.charset_name= my_strdup(csname, MYF(MY_WME))))
+    return 1;
+  return 0;
+}
+
+
+static void
+mysql_set_character_set_with_default_collation(MYSQL *mysql)
+{
+  const char *save= charsets_dir;
+  if (mysql->options.charset_dir)
+    charsets_dir=mysql->options.charset_dir;
+
+  if ((mysql->charset= get_charset_by_csname(mysql->options.charset_name,
+                                             MY_CS_PRIMARY, MYF(MY_WME))))
+  {
+    /* Try to set compiled default collation when it's possible. */
+    CHARSET_INFO *collation;
+    if ((collation= 
+         get_charset_by_name(MYSQL_DEFAULT_COLLATION_NAME, MYF(MY_WME))) &&
+         my_charset_same(mysql->charset, collation))
+    {
+      mysql->charset= collation;
+    }
+    else
+    {
+      /*
+        Default compiled collation not found, or is not applicable
+        to the requested character set.
+        Continue with the default collation of the character set.
+      */
+    }
+  }
+  charsets_dir= save;
+}
+
+
 C_MODE_START
 int mysql_init_character_set(MYSQL *mysql)
 {
-  const char *default_collation_name;
-  
   /* Set character set */
   if (!mysql->options.charset_name)
   {
-    default_collation_name= MYSQL_DEFAULT_COLLATION_NAME;
     if (!(mysql->options.charset_name= 
        my_strdup(MYSQL_DEFAULT_CHARSET_NAME,MYF(MY_WME))))
-    return 1;
-  }
-  else
-    default_collation_name= NULL;
-  
-  {
-    const char *save= charsets_dir;
-    if (mysql->options.charset_dir)
-      charsets_dir=mysql->options.charset_dir;
-    mysql->charset=get_charset_by_csname(mysql->options.charset_name,
-                                         MY_CS_PRIMARY, MYF(MY_WME));
-    if (mysql->charset && default_collation_name)
-    {
-      CHARSET_INFO *collation;
-      if ((collation= 
-           get_charset_by_name(default_collation_name, MYF(MY_WME))))
-      {
-        if (!my_charset_same(mysql->charset, collation))
-        {
-          my_printf_error(ER_UNKNOWN_ERROR, 
-                         "COLLATION %s is not valid for CHARACTER SET %s",
-                         MYF(0),
-                         default_collation_name, mysql->options.charset_name);
-          mysql->charset= NULL;
-        }
-        else
-        {
-          mysql->charset= collation;
-        }
-      }
-      else
-        mysql->charset= NULL;
-    }
-    charsets_dir= save;
+      return 1;
   }
+  else if (!strcmp(mysql->options.charset_name,
+                   MYSQL_AUTODETECT_CHARSET_NAME) &&
+            mysql_autodetect_character_set(mysql))
+    return 1;
+
+  mysql_set_character_set_with_default_collation(mysql);
 
   if (!mysql->charset)
   {

Attachment: [text/bzr-bundle] bzr/horst@mysql.com-20090429143838-ozn34ghm4evd31lk.bundle
Thread
bzr commit into mysql-6.0-bugteam branch (horst:3237) Horst Hunger29 Apr