diff --git a/include/maxscale/mysql_utils.h b/include/maxscale/mysql_utils.h index c9359620a..18c298926 100644 --- a/include/maxscale/mysql_utils.h +++ b/include/maxscale/mysql_utils.h @@ -158,10 +158,11 @@ void mxs_mysql_set_log_statements(bool enable); bool mxs_mysql_get_log_statements(); /** - * Get default server character set + * Update default server character set from @@global.character_set_server * - * @return The numeric identifier of `@@global.character_set_server` + * @param mysql The connection handle + * @param server The server to modify */ -uint8_t mxs_mysql_get_character_set(MYSQL* mysql); +void mxs_update_server_charset(MYSQL* mysql, SERVER* server); MXS_END_DECLS diff --git a/server/core/mysql_utils.cc b/server/core/mysql_utils.cc index fee9a5f67..37fca8bd7 100644 --- a/server/core/mysql_utils.cc +++ b/server/core/mysql_utils.cc @@ -208,7 +208,7 @@ MYSQL* mxs_mysql_real_connect(MYSQL* con, SERVER* server, const char* user, cons if (mysql) { /** Copy the server charset */ - server->charset = mxs_mysql_get_character_set(mysql); + mxs_update_server_charset(mysql, server); if (listener && mysql_get_ssl_cipher(con) == NULL) { @@ -437,16 +437,15 @@ bool mxs_mysql_get_log_statements() return this_unit.log_statements; } -uint8_t mxs_mysql_get_character_set(MYSQL* mysql) +void mxs_update_server_charset(MYSQL* mysql, SERVER* server) { - uint8_t charset = 8; // Default is latin1 with the ID 8 const char* CHARSET_QUERY = "SELECT co.id FROM information_schema.collations AS co " "JOIN information_schema.character_sets AS cs " "ON (co.collation_name = cs.default_collate_name) " "WHERE cs.character_set_name=@@global.character_set_server;"; - if (mysql_query(mysql, CHARSET_QUERY) == 0) + if (mxs_mysql_query(mysql, CHARSET_QUERY) == 0) { if (auto res = mysql_use_result(mysql)) { @@ -454,13 +453,11 @@ uint8_t mxs_mysql_get_character_set(MYSQL* mysql) { if (row[0]) { - charset = atoi(row[0]); + server->charset = atoi(row[0]); } } mysql_free_result(res); } } - - return charset; } diff --git a/server/modules/authenticator/MySQLAuth/dbusers.cc b/server/modules/authenticator/MySQLAuth/dbusers.cc index adfbd5d6b..610f89b1d 100644 --- a/server/modules/authenticator/MySQLAuth/dbusers.cc +++ b/server/modules/authenticator/MySQLAuth/dbusers.cc @@ -701,7 +701,7 @@ static bool check_server_permissions(SERVICE* service, } /** Copy the server charset */ - server->charset = mxs_mysql_get_character_set(mysql); + mxs_update_server_charset(mysql, server); if (server->version_string[0] == 0) {