diff options
author | unknown <cmiller@zippy.cornsilk.net> | 2008-03-13 14:01:11 -0400 |
---|---|---|
committer | unknown <cmiller@zippy.cornsilk.net> | 2008-03-13 14:01:11 -0400 |
commit | b6bfbc3a021e75dad5706678dcb3343cba57d50c (patch) | |
tree | 5bb8efaa185e75d93d7ffe1d844e0af6687dd9de /client | |
parent | 2f0ea1685a80e7757440a8c9a43aa0f16c5af3f6 (diff) | |
parent | 5018c0a97b47816cfba86d7c1c04433de5296463 (diff) | |
download | mariadb-git-b6bfbc3a021e75dad5706678dcb3343cba57d50c.tar.gz |
Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug34192/my50-bug34192
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-build
Diffstat (limited to 'client')
-rw-r--r-- | client/mysqldump.c | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/client/mysqldump.c b/client/mysqldump.c index 980013d539a..fdaf8a9727b 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -109,6 +109,8 @@ static char *opt_password=0,*current_user=0, *log_error_file= NULL; static char **defaults_argv= 0; static char compatible_mode_normal_str[255]; +/* Server supports character_set_results session variable? */ +static my_bool server_supports_switching_charsets= TRUE; static ulong opt_compatible_mode= 0; #define MYSQL_OPT_MASTER_DATA_EFFECTIVE_SQL 1 #define MYSQL_OPT_MASTER_DATA_COMMENTED_SQL 2 @@ -1011,11 +1013,27 @@ static int mysql_query_with_error_report(MYSQL *mysql_con, MYSQL_RES **res, } +/** + Switch charset for results to some specified charset. If the server does not + support character_set_results variable, nothing can be done here. As for + whether something should be done here, future new callers of this function + should be aware that the server lacking the facility of switching charsets is + treated as success. + + @note If the server lacks support, then nothing is changed and no error + condition is returned. + + @returns whether there was an error or not +*/ static int switch_character_set_results(MYSQL *mysql, const char *cs_name) { char query_buffer[QUERY_LENGTH]; size_t query_length; + /* Server lacks facility. This is not an error, by arbitrary decision . */ + if (!server_supports_switching_charsets) + return FALSE; + query_length= my_snprintf(query_buffer, sizeof (query_buffer), "SET SESSION character_set_results = '%s'", @@ -1111,11 +1129,14 @@ static int connect_to_db(char *host, char *user,char *passwd) DB_error(&mysql_connection, "when trying to connect"); DBUG_RETURN(1); } - /* - Don't dump SET NAMES with a pre-4.1 server (bug#7997). - */ if (mysql_get_server_version(&mysql_connection) < 40100) + { + /* Don't dump SET NAMES with a pre-4.1 server (bug#7997). */ opt_set_charset= 0; + + /* Don't switch charsets for 4.1 and earlier. (bug#34192). */ + server_supports_switching_charsets= FALSE; + } /* As we're going to set SQL_MODE, it would be lost on reconnect, so we cannot reconnect. |