diff --git a/client/mysqltest.cc b/client/mysqltest.cc index 01488126394..d77dfffb3ff 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -4669,7 +4669,11 @@ void do_change_user(struct st_command *command) handle_error(command, mysql_errno(mysql), mysql_error(mysql), mysql_sqlstate(mysql), &ds_res); else + { + if (display_session_track_info) + append_session_track_info(&ds_res, mysql); handle_no_error(command); + } dynstr_free(&ds_user); dynstr_free(&ds_passwd); diff --git a/mysql-test/main/change_user_notembedded.result b/mysql-test/main/change_user_notembedded.result index 41a154f8d3d..fbdd15377c7 100644 --- a/mysql-test/main/change_user_notembedded.result +++ b/mysql-test/main/change_user_notembedded.result @@ -7,4 +7,20 @@ ERROR 08S01: Unknown command ERROR 08S01: Unknown command disconnect test; connection default; -that's all +# End of 10.0 tests +# +# MDEV-36405 Session tracking does not report changes from COM_CHANGE_USER +# +change_user +-- Tracker : SESSION_TRACK_SYSTEM_VARIABLES +-- autocommit: ON +-- character_set_client: latin1 +-- character_set_connection: latin1 +-- character_set_results: latin1 +-- redirect_url: +-- time_zone: SYSTEM + +-- Tracker : SESSION_TRACK_SCHEMA +-- test + +# End of 12.0 tests diff --git a/mysql-test/main/change_user_notembedded.test b/mysql-test/main/change_user_notembedded.test index 19421c6dd33..ea270782175 100644 --- a/mysql-test/main/change_user_notembedded.test +++ b/mysql-test/main/change_user_notembedded.test @@ -22,5 +22,14 @@ change_user; disconnect test; connection default; ---echo that's all +--echo # End of 10.0 tests +--echo # +--echo # MDEV-36405 Session tracking does not report changes from COM_CHANGE_USER +--echo # +enable_session_track_info; +--echo change_user +change_user; +disable_session_track_info; + +--echo # End of 12.0 tests diff --git a/mysql-test/main/set_authorization.result b/mysql-test/main/set_authorization.result index 22484a01c03..71194c2271b 100644 --- a/mysql-test/main/set_authorization.result +++ b/mysql-test/main/set_authorization.result @@ -133,4 +133,19 @@ show global status like 'access_denied_errors'; Variable_name Value Access_denied_errors 2 drop user u1; -# End of 11.8 tests +# +# MDEV-36405 Session tracking does not report changes from COM_CHANGE_USER +# +set session authorization root@localhost; +-- Tracker : SESSION_TRACK_SYSTEM_VARIABLES +-- autocommit: ON +-- character_set_client: utf8mb4 +-- character_set_connection: utf8mb4 +-- character_set_results: utf8mb4 +-- redirect_url: +-- time_zone: SYSTEM + +-- Tracker : SESSION_TRACK_SCHEMA +-- + +# End of 12.0 tests diff --git a/mysql-test/main/set_authorization.test b/mysql-test/main/set_authorization.test index 9be6e6e2267..d13ee4aa9a7 100644 --- a/mysql-test/main/set_authorization.test +++ b/mysql-test/main/set_authorization.test @@ -136,4 +136,11 @@ connection default; show global status like 'access_denied_errors'; drop user u1; ---echo # End of 11.8 tests +--echo # +--echo # MDEV-36405 Session tracking does not report changes from COM_CHANGE_USER +--echo # +enable_session_track_info; +set session authorization root@localhost; +disable_session_track_info; + +--echo # End of 12.0 tests diff --git a/mysql-test/suite/sys_vars/r/session_track_system_variables_basic.result b/mysql-test/suite/sys_vars/r/session_track_system_variables_basic.result index 79b427b575b..d1a7c922fbd 100644 --- a/mysql-test/suite/sys_vars/r/session_track_system_variables_basic.result +++ b/mysql-test/suite/sys_vars/r/session_track_system_variables_basic.result @@ -163,6 +163,9 @@ connect foo,localhost,root; -- redirect_url: -- time_zone: SYSTEM +-- Tracker : SESSION_TRACK_SCHEMA +-- + connection default; disconnect foo; # End of tests 11.5 diff --git a/sql/session_tracker.h b/sql/session_tracker.h index a1494cf811a..1f0aa9908de 100644 --- a/sql/session_tracker.h +++ b/sql/session_tracker.h @@ -483,6 +483,7 @@ class Session_tracker { public: void mark_as_changed(THD *thd) {} + void mark_all_as_changed(THD *thd) {} void mark_as_changed(THD *thd, const sys_var *var) {} }; public: diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 7b8f50e1915..26905f0d415 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -12390,6 +12390,10 @@ static int set_privs_on_login(THD *thd, const ACL_USER *acl_user) thd->variables.max_statement_time= (ulonglong) (thd->variables.max_statement_time_double * 1e6 + 0.1); } + + thd->session_tracker.sysvars.mark_all_as_changed(thd); + thd->session_tracker.current_schema.mark_as_changed(thd); + thd->session_tracker.state_change.mark_as_changed(thd); return 0; } diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc index d63e00da078..e0cbbdc186d 100644 --- a/sql/sql_connect.cc +++ b/sql/sql_connect.cc @@ -1153,7 +1153,6 @@ static bool login_connection(THD *thd) my_net_set_write_timeout(net, connect_timeout); error= check_connection(thd); - thd->session_tracker.sysvars.mark_all_as_changed(thd); thd->protocol->end_statement(); if (unlikely(error))