summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorVladislav Vaintroub <wlad@mariadb.com>2018-10-04 14:24:14 +0100
committerVladislav Vaintroub <wlad@mariadb.com>2018-10-05 16:48:51 +0100
commit7fefd53f94bdb5aeab352665ae0f208b858e88f8 (patch)
tree89f0bec6c00878e033dc77bc349e4226cafd4434 /sql
parent33fadbfefcc040f0b5ae589d385468e5ba26b1cd (diff)
downloadmariadb-git-7fefd53f94bdb5aeab352665ae0f208b858e88f8.tar.gz
MDEV-14581 Server does not clear diagnostics between sessions
Amend previous patch, so it works in all cases (also for "change user" command, and for RESET CONNECTION in 10.3)
Diffstat (limited to 'sql')
-rw-r--r--sql/mysqld.cc4
-rw-r--r--sql/sql_class.cc5
2 files changed, 5 insertions, 4 deletions
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index b8bb63c4259..784bfaa58b0 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -2962,10 +2962,6 @@ static bool cache_thread(THD *thd)
_db_pop_();
#endif
- /* Clear warnings. */
- if (!thd->get_stmt_da()->is_warning_info_empty())
- thd->get_stmt_da()->clear_warning_info(thd->query_id);
-
set_timespec(abstime, THREAD_CACHE_TIMEOUT);
while (!abort_loop && ! wake_thread && ! kill_cached_threads)
{
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index bd41a3729d6..e581ed0af25 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -1332,6 +1332,11 @@ void THD::change_user(void)
cleanup_done= 0;
reset_killed();
thd_clear_errors(this);
+
+ /* Clear warnings. */
+ if (!get_stmt_da()->is_warning_info_empty())
+ get_stmt_da()->clear_warning_info(0);
+
init();
stmt_map.reset();
my_hash_init(&user_vars, system_charset_info, USER_VARS_HASH_SIZE, 0, 0,