diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 9b1578280e4..6a7e3e00f6f 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -965,6 +965,7 @@ void init_update_queries(void); void free_max_user_conn(void); pthread_handler_t handle_bootstrap(void *arg); bool mysql_execute_command(THD *thd); +bool do_command(THD *thd); bool dispatch_command(enum enum_server_command command, THD *thd, char* packet, uint packet_length); void log_slow_statement(THD *thd); diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc index 6bb0f62d843..9785b30ea00 100644 --- a/sql/sql_connect.cc +++ b/sql/sql_connect.cc @@ -973,21 +973,29 @@ void end_connection(THD *thd) plugin_thdvar_cleanup(thd); if (thd->user_connect) decrease_user_connections(thd->user_connect); + + if (thd->killed || + net->error && net->vio != 0 && net->report_error) + { + statistic_increment(aborted_threads,&LOCK_status); + } + if (net->error && net->vio != 0 && net->report_error) { - Security_context *sctx= thd->security_ctx; if (!thd->killed && thd->variables.log_warnings > 1) + { + Security_context *sctx= thd->security_ctx; + sql_print_warning(ER(ER_NEW_ABORTING_CONNECTION), thd->thread_id,(thd->db ? thd->db : "unconnected"), sctx->user ? sctx->user : "unauthenticated", sctx->host_or_ip, (net->last_errno ? ER(net->last_errno) : ER(ER_UNKNOWN_ERROR))); + } + net_send_error(thd, net->last_errno, NullS); - statistic_increment(aborted_threads,&LOCK_status); } - else if (thd->killed) - statistic_increment(aborted_threads,&LOCK_status); } diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 91eaadb0d9f..695e923e816 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -86,8 +86,6 @@ const char *xa_state_names[]={ "NON-EXISTING", "ACTIVE", "IDLE", "PREPARED" }; -static bool do_command(THD *thd); - static void unlock_locked_tables(THD *thd) { if (thd->locked_tables)