diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 6a7e3e00f6f..9b1578280e4 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -965,7 +965,6 @@ 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_parse.cc b/sql/sql_parse.cc index 10c59d6a374..91eaadb0d9f 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -86,6 +86,7 @@ const char *xa_state_names[]={ "NON-EXISTING", "ACTIVE", "IDLE", "PREPARED" }; +static bool do_command(THD *thd); static void unlock_locked_tables(THD *thd) { @@ -681,12 +682,12 @@ bool do_command(THD *thd) DBUG_PRINT("info",("Got error %d reading command from socket %s", net->error, vio_description(net->vio))); + /* Check if we can continue without closing the connection */ + if (net->error != 3) - { - statistic_increment(aborted_threads,&LOCK_status); DBUG_RETURN(TRUE); // We have to close it. - } + net_send_error(thd, net->last_errno, NullS); net->error= 0; DBUG_RETURN(FALSE);