From e9a267eb8f750889c247fe4c046805d80cf27a2b Mon Sep 17 00:00:00 2001 From: yuxianjiang Date: Tue, 11 Jan 2022 09:58:53 +0800 Subject: [PATCH] [bugfix]session track of collation_connection missing character_set_connectio Problem ======= After executing 'set collation_connection='utf8_general_ci'; ', system variable character_set_connection also changed. But server does not return character_set_connection's session track even if session_track_system_variables is enabled. Solution ======== Check collation_connection variable when set session variables and mark character_set_connection changed also. --- sql/set_var.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sql/set_var.cc b/sql/set_var.cc index c368891..d82a900 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -274,6 +274,15 @@ bool sys_var::update(THD *thd, set_var *var) if ((!ret) && thd->session_tracker.get_tracker(SESSION_STATE_CHANGE_TRACKER)->is_enabled()) thd->session_tracker.get_tracker(SESSION_STATE_CHANGE_TRACKER)->mark_as_changed(thd, &var->var->name); + + if ((!ret) && strcasecmp("collation_connection", var->var->name.str) == 0 + && thd->session_tracker.get_tracker( + SESSION_SYSVARS_TRACKER)->is_enabled()) + { + LEX_CSTRING character_set_connection = + {STRING_WITH_LEN("character_set_connection") }; + thd->session_tracker.get_tracker(SESSION_SYSVARS_TRACKER)->mark_as_changed(thd, &character_set_connection); + } } return ret; -- 1.8.3.1