Commit 0dc8504b authored by Bjorn Munch's avatar Bjorn Munch

upmerge 55426(55546), 56647

parents 4e453648 64ae6d4a
...@@ -252,7 +252,9 @@ struct st_connection ...@@ -252,7 +252,9 @@ struct st_connection
int cur_query_len; int cur_query_len;
pthread_mutex_t mutex; pthread_mutex_t mutex;
pthread_cond_t cond; pthread_cond_t cond;
pthread_t tid;
int query_done; int query_done;
my_bool has_thread;
#endif /*EMBEDDED_LIBRARY*/ #endif /*EMBEDDED_LIBRARY*/
}; };
...@@ -732,8 +734,6 @@ pthread_handler_t send_one_query(void *arg) ...@@ -732,8 +734,6 @@ pthread_handler_t send_one_query(void *arg)
static int do_send_query(struct st_connection *cn, const char *q, int q_len, static int do_send_query(struct st_connection *cn, const char *q, int q_len,
int flags) int flags)
{ {
pthread_t tid;
if (flags & QUERY_REAP_FLAG) if (flags & QUERY_REAP_FLAG)
return mysql_send_query(&cn->mysql, q, q_len); return mysql_send_query(&cn->mysql, q, q_len);
...@@ -744,9 +744,10 @@ static int do_send_query(struct st_connection *cn, const char *q, int q_len, ...@@ -744,9 +744,10 @@ static int do_send_query(struct st_connection *cn, const char *q, int q_len,
cn->cur_query= q; cn->cur_query= q;
cn->cur_query_len= q_len; cn->cur_query_len= q_len;
cn->query_done= 0; cn->query_done= 0;
if (pthread_create(&tid, &cn_thd_attrib, send_one_query, (void*)cn)) if (pthread_create(&cn->tid, &cn_thd_attrib, send_one_query, (void*)cn))
die("Cannot start new thread for query"); die("Cannot start new thread for query");
cn->has_thread= TRUE;
return 0; return 0;
} }
...@@ -759,6 +760,11 @@ static void wait_query_thread_end(struct st_connection *con) ...@@ -759,6 +760,11 @@ static void wait_query_thread_end(struct st_connection *con)
pthread_cond_wait(&con->cond, &con->mutex); pthread_cond_wait(&con->cond, &con->mutex);
pthread_mutex_unlock(&con->mutex); pthread_mutex_unlock(&con->mutex);
} }
if (con->has_thread)
{
pthread_join(con->tid, NULL);
con->has_thread= FALSE;
}
} }
#else /*EMBEDDED_LIBRARY*/ #else /*EMBEDDED_LIBRARY*/
...@@ -5217,6 +5223,7 @@ void do_connect(struct st_command *command) ...@@ -5217,6 +5223,7 @@ void do_connect(struct st_command *command)
#ifdef EMBEDDED_LIBRARY #ifdef EMBEDDED_LIBRARY
con_slot->query_done= 1; con_slot->query_done= 1;
con_slot->has_thread= FALSE;
#endif #endif
if (!mysql_init(&con_slot->mysql)) if (!mysql_init(&con_slot->mysql))
die("Failed on mysql_init()"); die("Failed on mysql_init()");
...@@ -7353,11 +7360,10 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags) ...@@ -7353,11 +7360,10 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
(flags & QUERY_REAP_FLAG)); (flags & QUERY_REAP_FLAG));
DBUG_ENTER("run_query"); DBUG_ENTER("run_query");
init_dynamic_string(&ds_warnings, NULL, 0, 256);
if (cn->pending && (flags & QUERY_SEND_FLAG)) if (cn->pending && (flags & QUERY_SEND_FLAG))
die ("Cannot run query on connection between send and reap"); die ("Cannot run query on connection between send and reap");
init_dynamic_string(&ds_warnings, NULL, 0, 256);
/* /*
Evaluate query if this is an eval command Evaluate query if this is an eval command
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment