diff --git a/include/my_sys.h b/include/my_sys.h index 28e8d86583e..aa3a85717d2 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -265,6 +265,7 @@ extern int (*is_killed_hook)(const void *opaque_thd); /* charsets */ #define MY_ALL_CHARSETS_SIZE 2048 +extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *default_collation_for_utf8mb4; extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *default_charset_info; extern MYSQL_PLUGIN_IMPORT const CHARSET_INFO *all_charsets[MY_ALL_CHARSETS_SIZE]; diff --git a/mysys/charset.cc b/mysys/charset.cc index a73b4ff7b4b..6cf642f50d8 100644 --- a/mysys/charset.cc +++ b/mysys/charset.cc @@ -191,6 +191,7 @@ char *get_charsets_dir(char *buf) { const CHARSET_INFO *all_charsets[MY_ALL_CHARSETS_SIZE] = {nullptr}; CHARSET_INFO *default_charset_info = &my_charset_latin1; +CHARSET_INFO *default_collation_for_utf8mb4 = &my_charset_utf8mb4_0900_ai_ci; static std::once_flag charsets_initialized; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 1b2fabeebbb..a9613474d98 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -6967,6 +6967,7 @@ int init_common_variables() { global_system_variables.collation_database = default_charset_info; global_system_variables.default_collation_for_utf8mb4 = &my_charset_utf8mb4_0900_ai_ci; + default_collation_for_utf8mb4 = &my_charset_utf8mb4_0900_ai_ci; if (is_supported_parser_charset(default_charset_info)) { global_system_variables.collation_connection = default_charset_info; diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 65320b51bfd..3913ab03836 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -7035,9 +7035,6 @@ static bool check_default_collation_for_utf8mb4(sys_var *self, THD *thd, return true; } - if (!var->value) - var->save_result.ptr = reinterpret_cast(self->get_default()); - auto cs = static_cast(var->save_result.ptr); if (cs == &my_charset_utf8mb4_0900_ai_ci || cs == &my_charset_utf8mb4_general_ci) @@ -7052,7 +7049,7 @@ static Sys_var_struct Sys_default_collation_for_utf8mb4( "Controls default collation for utf8mb4 while replicating implicit " "utf8mb4 collations.", SESSION_VAR(default_collation_for_utf8mb4), NO_CMD_LINE, - DEFAULT(&my_charset_utf8mb4_0900_ai_ci), NO_MUTEX_GUARD, IN_BINLOG, + DEFAULT(&default_collation_for_utf8mb4), NO_MUTEX_GUARD, IN_BINLOG, ON_CHECK(check_default_collation_for_utf8mb4), ON_UPDATE(update_deprecated));