mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 10:31:54 +01:00
upmerge 55426(55546), 56647
This commit is contained in:
commit
45ec20594f
1 changed files with 11 additions and 5 deletions
|
@ -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)
|
||||||
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,
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
#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)
|
||||||
(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
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue