diff options
author | Sergei Golubchik <sergii@pisem.net> | 2014-05-09 12:35:11 +0200 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2014-05-09 12:35:11 +0200 |
commit | d3e2e1243bb0dae95ce35b0380dd4f8f476b254d (patch) | |
tree | 8779ad6b2059f181770cc07e2437925d7d5d5d04 /libmysqld/lib_sql.cc | |
parent | 229dad1f9b12f8e9f64b6a605bdf8e31c339d018 (diff) | |
parent | 124428a9e28e59f98b25d8ee07b57d264f63cbe4 (diff) | |
download | mariadb-git-d3e2e1243bb0dae95ce35b0380dd4f8f476b254d.tar.gz |
5.5 merge
Diffstat (limited to 'libmysqld/lib_sql.cc')
-rw-r--r-- | libmysqld/lib_sql.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc index 1c043c6d03b..9024ae9321e 100644 --- a/libmysqld/lib_sql.cc +++ b/libmysqld/lib_sql.cc @@ -40,6 +40,7 @@ C_MODE_START extern unsigned int mysql_server_last_errno; extern char mysql_server_last_error[MYSQL_ERRMSG_SIZE]; static my_bool emb_read_query_result(MYSQL *mysql); +static void emb_free_embedded_thd(MYSQL *mysql); extern "C" void unireg_clear(int exit_code) @@ -107,6 +108,17 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command, NET *net= &mysql->net; my_bool stmt_skip= stmt ? stmt->state != MYSQL_STMT_INIT_DONE : FALSE; + if (thd->killed != NOT_KILLED) + { + if (thd->killed < KILL_CONNECTION) + thd->killed= NOT_KILLED; + else + { + emb_free_embedded_thd(mysql); + thd= 0; + } + } + if (!thd) { /* Do "reconnect" if possible */ @@ -1286,7 +1298,7 @@ bool Protocol::net_store_data(const uchar *from, size_t length) } -bool Protocol::net_store_data(const uchar *from, size_t length, +bool Protocol::net_store_data_cs(const uchar *from, size_t length, CHARSET_INFO *from_cs, CHARSET_INFO *to_cs) { uint conv_length= to_cs->mbmaxlen * length / from_cs->mbminlen; |