From 2c513fab1320d888654d4dc66a3c38b0cdbd1897 Mon Sep 17 00:00:00 2001 From: hcduan Date: Tue, 7 Jun 2022 19:07:54 +0800 Subject: [PATCH] [bugfix] Setting default-character-set does not take effect Problem: ======== The specified character set of the MySQL client (--default-character-set) does not take effect when it is the same as the default server character set (character_set_server). Solution: ======== use client specified character set --- sql/sql_connect.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc index adc334a..27efcb9 100644 --- a/sql/sql_connect.cc +++ b/sql/sql_connect.cc @@ -453,14 +453,14 @@ bool thd_init_client_charset(THD *thd, uint cs_number) Use server character set and collation if - opt_character_set_client_handshake is not set - client has not specified a character set - - client character set is the same as the servers - client character set doesn't exists in server */ if (!opt_character_set_client_handshake || - !(cs= get_charset(cs_number, MYF(0))) || - !my_strcasecmp(&my_charset_latin1, - global_system_variables.character_set_client->name, - cs->name)) + ((!(cs = get_charset(cs_number, MYF(0))) || + !my_strcasecmp(&my_charset_latin1, + global_system_variables.character_set_client->name, + cs->name)) && + (cs_number != default_charset_info->number))) { if (!is_supported_parser_charset( global_system_variables.character_set_client)) -- 1.8.3.1