List:Commits« Previous MessageNext Message »
From:bar Date:February 14 2006 4:24am
Subject:bk commit into 5.0 tree (bar:1.2039)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of bar. When bar does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2039 06/02/14 08:24:01 bar@stripped +8 -0
  Many files:
    Backporting character_set_filesystem from 5.0 to 5.1.

  mysql-test/r/variables.result
    1.79 06/02/14 08:23:44 bar@stripped +18 -0
    Backporting character_set_filesystem from 5.0 to 5.1.

  mysql-test/t/variables.test
    1.54 06/02/14 08:23:40 bar@stripped +14 -0
    Backporting character_set_filesystem from 5.0 to 5.1.

  sql/sql_yacc.yy
    1.453 06/02/14 08:22:32 bar@stripped +16 -4
    Backporting character_set_filesystem from 5.0 to 5.1.

  sql/sql_class.h
    1.280 06/02/14 08:22:30 bar@stripped +2 -0
    Backporting character_set_filesystem from 5.0 to 5.1.

  sql/sql_class.cc
    1.227 06/02/14 08:22:28 bar@stripped +3 -0
    Backporting character_set_filesystem from 5.0 to 5.1.

  sql/set_var.h
    1.73 06/02/14 08:22:27 bar@stripped +9 -0
    Backporting character_set_filesystem from 5.0 to 5.1.

  sql/set_var.cc
    1.148 06/02/14 08:22:24 bar@stripped +29 -0
    Backporting character_set_filesystem from 5.0 to 5.1.

  sql/mysqld.cc
    1.533 06/02/14 08:22:02 bar@stripped +16 -0
    Backporting character_set_filesystem from 5.0 to 5.1.

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	bar
# Host:	bar.intranet.mysql.r18.ru
# Root:	/usr/home/bar/mysql-5.0.cs_fs

--- 1.532/sql/mysqld.cc	2006-01-19 18:36:12 +04:00
+++ 1.533/sql/mysqld.cc	2006-02-14 08:22:02 +04:00
@@ -321,6 +321,7 @@
 static char *mysqld_user, *mysqld_chroot, *log_error_file_ptr;
 static char *opt_init_slave, *language_ptr, *opt_init_connect;
 static char *default_character_set_name;
+static char *character_set_filesystem_name;
 static char *my_bind_addr_str;
 static char *default_collation_name;
 static char mysql_data_home_buff[2];
@@ -469,6 +470,7 @@
 
 CHARSET_INFO *system_charset_info, *files_charset_info ;
 CHARSET_INFO *national_charset_info, *table_alias_charset;
+CHARSET_INFO *character_set_filesystem;
 
 SHOW_COMP_OPTION have_berkeley_db, have_innodb, have_isam, have_ndbcluster, 
   have_example_db, have_archive_db, have_csv_db;
@@ -2677,6 +2679,12 @@
   global_system_variables.character_set_client= default_charset_info;
   global_system_variables.collation_connection= default_charset_info;
 
+  if (!(character_set_filesystem= 
+        get_charset_by_csname(character_set_filesystem_name,
+                              MY_CS_PRIMARY, MYF(MY_WME))))
+    return 1;
+  global_system_variables.character_set_filesystem= character_set_filesystem;
+
   sys_init_connect.value_length= 0;
   if ((sys_init_connect.value= opt_init_connect))
     sys_init_connect.value_length= strlen(opt_init_connect);
@@ -4563,6 +4571,7 @@
   OPT_GROUP_CONCAT_MAX_LEN,
   OPT_DEFAULT_COLLATION,
   OPT_CHARACTER_SET_CLIENT_HANDSHAKE,
+  OPT_CHARACTER_SET_FILESYSTEM,
   OPT_INIT_CONNECT,
   OPT_INIT_SLAVE,
   OPT_SECURE_AUTH,
@@ -4671,6 +4680,11 @@
    (gptr*) &opt_character_set_client_handshake,
    (gptr*) &opt_character_set_client_handshake,
     0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
+  {"character-set-filesystem", OPT_CHARACTER_SET_FILESYSTEM,
+   "Set the filesystem character set.",
+   (gptr*) &character_set_filesystem_name,
+   (gptr*) &character_set_filesystem_name,
+   0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
   {"character-set-server", 'C', "Set the default character set.",
    (gptr*) &default_character_set_name, (gptr*) &default_character_set_name,
    0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
@@ -6260,6 +6274,7 @@
   files_charset_info= &my_charset_utf8_general_ci;
   national_charset_info= &my_charset_utf8_general_ci;
   table_alias_charset= &my_charset_bin;
+  character_set_filesystem= &my_charset_bin;
 
   opt_date_time_formats[0]= opt_date_time_formats[1]= opt_date_time_formats[2]= 0;
 
@@ -6320,6 +6335,7 @@
   default_character_set_name= (char*) MYSQL_DEFAULT_CHARSET_NAME;
   default_collation_name= (char*) MYSQL_DEFAULT_COLLATION_NAME;
   sys_charset_system.value= (char*) system_charset_info->csname;
+  character_set_filesystem_name= (char*) "binary";
 
 
   /* Set default values for some option variables */

--- 1.226/sql/sql_class.cc	2006-02-02 19:17:12 +04:00
+++ 1.227/sql/sql_class.cc	2006-02-14 08:22:28 +04:00
@@ -648,6 +648,9 @@
   charset_is_collation_connection= 
     !String::needs_conversion(0,charset(),variables.collation_connection,
                               &not_used);
+  charset_is_character_set_filesystem= 
+    !String::needs_conversion(0, charset(),
+                              variables.character_set_filesystem, &not_used);
 }
 
 

--- 1.279/sql/sql_class.h	2005-12-14 16:50:23 +04:00
+++ 1.280/sql/sql_class.h	2006-02-14 08:22:30 +04:00
@@ -569,6 +569,7 @@
   my_bool old_passwords;
 
   /* Only charset part of these variables is sensible */
+  CHARSET_INFO  *character_set_filesystem;
   CHARSET_INFO  *character_set_client;
   CHARSET_INFO  *character_set_results;
 
@@ -1341,6 +1342,7 @@
   bool       query_error, bootstrap, cleanup_done;
   bool	     tmp_table_used;
   bool	     charset_is_system_charset, charset_is_collation_connection;
+  bool       charset_is_character_set_filesystem;
   bool       enable_slow_log;   /* enable slow log for current statement */
   bool	     no_trans_update, abort_on_warning;
   bool 	     got_warning;       /* Set on call to push_warning() */

--- 1.452/sql/sql_yacc.yy	2006-02-06 17:09:08 +04:00
+++ 1.453/sql/sql_yacc.yy	2006-02-14 08:22:32 +04:00
@@ -684,7 +684,7 @@
 	LEX_HOSTNAME ULONGLONG_NUM field_ident select_alias ident ident_or_text
         UNDERSCORE_CHARSET IDENT_sys TEXT_STRING_sys TEXT_STRING_literal
 	NCHAR_STRING opt_component key_cache_name
-        sp_opt_label BIN_NUM label_ident
+        sp_opt_label BIN_NUM label_ident TEXT_STRING_filesystem
 
 %type <lex_str_ptr>
 	opt_table_alias
@@ -5937,7 +5937,7 @@
            ;
 
 into:
-        INTO OUTFILE TEXT_STRING_sys
+        INTO OUTFILE TEXT_STRING_filesystem
 	{
           LEX *lex= Lex;
           lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
@@ -5946,7 +5946,7 @@
             YYABORT;
 	}
 	opt_field_term opt_line_term
-	| INTO DUMPFILE TEXT_STRING_sys
+	| INTO DUMPFILE TEXT_STRING_filesystem
 	{
 	  LEX *lex=Lex;
 	  if (!lex->describe)
@@ -6930,7 +6930,7 @@
         };
 
 load_data:
-	load_data_lock opt_local INFILE TEXT_STRING_sys
+	load_data_lock opt_local INFILE TEXT_STRING_filesystem
 	{
 	  LEX *lex=Lex;
 	  lex->sql_command= SQLCOM_LOAD;
@@ -7458,6 +7458,18 @@
 	}
 	;
 
+
+TEXT_STRING_filesystem:
+	TEXT_STRING
+	{
+	  THD *thd= YYTHD;
+	  if (thd->charset_is_character_set_filesystem)
+	    $$= $1;
+	  else
+	    thd->convert_string(&$$, thd->variables.character_set_filesystem,
+				$1.str, $1.length, thd->charset());
+	}
+	;
 
 ident:
 	IDENT_sys	    { $$=$1; }

--- 1.78/mysql-test/r/variables.result	2006-01-27 13:47:56 +04:00
+++ 1.79/mysql-test/r/variables.result	2006-02-14 08:23:44 +04:00
@@ -566,3 +566,21 @@
 ERROR HY000: Variable 'character_set_system' is a read only variable
 set @@global.version_compile_os='234';
 ERROR HY000: Variable 'version_compile_os' is a read only variable
+set character_set_filesystem=latin1;
+select @@character_set_filesystem;
+@@character_set_filesystem
+latin1
+set @@global.character_set_filesystem=latin2;
+set character_set_filesystem=latin1;
+select @@character_set_filesystem;
+@@character_set_filesystem
+latin1
+set @@global.character_set_filesystem=latin2;
+set character_set_filesystem=default;
+select @@character_set_filesystem;
+@@character_set_filesystem
+latin2
+set @@global.character_set_filesystem=default;
+select @@global.character_set_filesystem;
+@@global.character_set_filesystem
+binary

--- 1.53/mysql-test/t/variables.test	2006-02-01 18:02:30 +04:00
+++ 1.54/mysql-test/t/variables.test	2006-02-14 08:23:40 +04:00
@@ -456,4 +456,18 @@
 --error 1238
 set @@global.version_compile_os='234';
 
+#
+# Check character_set_filesystem variable
+#
+set character_set_filesystem=latin1;
+select @@character_set_filesystem;
+set @@global.character_set_filesystem=latin2;
+set character_set_filesystem=latin1;
+select @@character_set_filesystem;
+set @@global.character_set_filesystem=latin2;
+set character_set_filesystem=default;
+select @@character_set_filesystem;
+set @@global.character_set_filesystem=default;
+select @@global.character_set_filesystem;
+
 # End of 5.0 tests

--- 1.147/sql/set_var.cc	2006-01-18 16:01:54 +04:00
+++ 1.148/sql/set_var.cc	2006-02-14 08:22:24 +04:00
@@ -148,6 +148,7 @@
 sys_var_character_set_client  sys_character_set_client("character_set_client");
 sys_var_character_set_connection  sys_character_set_connection("character_set_connection");
 sys_var_character_set_results sys_character_set_results("character_set_results");
+sys_var_character_set_filesystem  sys_character_set_filesystem("character_set_filesystem");
 sys_var_thd_ulong	sys_completion_type("completion_type",
 					 &SV::completion_type,
 					 check_completion_type,
@@ -580,6 +581,7 @@
   &sys_character_set_client,
   &sys_character_set_connection,
   &sys_character_set_results,
+  &sys_character_set_filesystem,
   &sys_charset_system,
   &sys_collation_connection,
   &sys_collation_database,
@@ -771,6 +773,7 @@
   {sys_character_set_client.name,(char*) &sys_character_set_client, SHOW_SYS},
   {sys_character_set_connection.name,(char*) &sys_character_set_connection,SHOW_SYS},
   {sys_character_set_database.name, (char*) &sys_character_set_database,SHOW_SYS},
+  {sys_character_set_filesystem.name,(char*) &sys_character_set_filesystem, SHOW_SYS},
   {sys_character_set_results.name,(char*) &sys_character_set_results, SHOW_SYS},
   {sys_character_set_server.name, (char*) &sys_character_set_server,SHOW_SYS},
   {sys_charset_system.name,   (char*) &sys_charset_system,          SHOW_SYS},
@@ -2071,6 +2074,32 @@
  {
    thd->variables.character_set_client= (global_system_variables.
 					 character_set_client);
+   thd->update_charset();
+ }
+}
+
+
+CHARSET_INFO **
+sys_var_character_set_filesystem::ci_ptr(THD *thd, enum_var_type type)
+{
+  if (type == OPT_GLOBAL)
+    return &global_system_variables.character_set_filesystem;
+  else
+    return &thd->variables.character_set_filesystem;
+}
+
+
+extern CHARSET_INFO *character_set_filesystem;
+
+void
+sys_var_character_set_filesystem::set_default(THD *thd, enum_var_type type)
+{
+ if (type == OPT_GLOBAL)
+   global_system_variables.character_set_filesystem= character_set_filesystem;
+ else
+ {
+   thd->variables.character_set_filesystem= (global_system_variables.
+					     character_set_filesystem);
    thd->update_charset();
  }
 }

--- 1.72/sql/set_var.h	2005-11-10 20:50:43 +04:00
+++ 1.73/sql/set_var.h	2006-02-14 08:22:27 +04:00
@@ -540,6 +540,15 @@
   virtual CHARSET_INFO **ci_ptr(THD *thd, enum_var_type type)= 0;
 };
 
+class sys_var_character_set_filesystem :public sys_var_character_set
+{
+public:
+  sys_var_character_set_filesystem(const char *name_arg) :
+    sys_var_character_set(name_arg) {}
+  void set_default(THD *thd, enum_var_type type);
+  CHARSET_INFO **ci_ptr(THD *thd, enum_var_type type);
+};
+
 class sys_var_character_set_client :public sys_var_character_set
 {
 public:
Thread
bk commit into 5.0 tree (bar:1.2039)bar14 Feb