Loading client/mysqltest.c +25 −9 Original line number Diff line number Diff line Loading @@ -550,6 +550,17 @@ static int do_send_query(struct st_connection *cn, const char *q, int q_len, return 0; } static void wait_query_thread_end(struct st_connection *con) { if (!con->query_done) { pthread_mutex_lock(&con->mutex); while (!con->query_done) pthread_cond_wait(&con->cond, &con->mutex); pthread_mutex_unlock(&con->mutex); } } #else /*EMBEDDED_LIBRARY*/ #define do_send_query(cn,q,q_len,flags) mysql_send_query(&cn->mysql, q, q_len) Loading Loading @@ -4071,7 +4082,14 @@ void do_close_connection(struct st_command *command) con->mysql.net.vio = 0; } } #endif #else /* As query could be still executed in a separate theread we need to check if the query's thread was finished and probably wait (embedded-server specific) */ wait_query_thread_end(con); #endif /*EMBEDDED_LIBRARY*/ if (con->stmt) mysql_stmt_close(con->stmt); con->stmt= 0; Loading Loading @@ -4361,6 +4379,9 @@ void do_connect(struct st_command *command) (int) (sizeof(connections)/sizeof(struct st_connection))); } #ifdef EMBEDDED_LIBRARY con_slot->query_done= 1; #endif if (!mysql_init(&con_slot->mysql)) die("Failed on mysql_init()"); if (opt_compress || con_compress) Loading Loading @@ -5852,12 +5873,7 @@ void run_query_normal(struct st_connection *cn, struct st_command *command, query's thread was finished and probably wait */ else if (flags & QUERY_REAP_FLAG) { pthread_mutex_lock(&cn->mutex); while (!cn->query_done) pthread_cond_wait(&cn->cond, &cn->mutex); pthread_mutex_unlock(&cn->mutex); } wait_query_thread_end(cn); #endif /*EMBEDDED_LIBRARY*/ if (!(flags & QUERY_REAP_FLAG)) DBUG_VOID_RETURN; Loading mysql-test/r/flush.result +1 −0 Original line number Diff line number Diff line Loading @@ -72,3 +72,4 @@ flush tables with read lock; unlock tables; drop table t1, t2; set session low_priority_updates=default; select benchmark(200, (select sin(1))) > 1000; mysql-test/t/flush.test +9 −0 Original line number Diff line number Diff line Loading @@ -164,4 +164,13 @@ drop table t1, t2; set session low_priority_updates=default; # # Bug #33334 mysqltest_embedded crashes when disconnecting before reap # connect (con1,localhost,root,,); send select benchmark(200, (select sin(1))) > 1000; disconnect con1; connection default; # End of 5.0 tests Loading
client/mysqltest.c +25 −9 Original line number Diff line number Diff line Loading @@ -550,6 +550,17 @@ static int do_send_query(struct st_connection *cn, const char *q, int q_len, return 0; } static void wait_query_thread_end(struct st_connection *con) { if (!con->query_done) { pthread_mutex_lock(&con->mutex); while (!con->query_done) pthread_cond_wait(&con->cond, &con->mutex); pthread_mutex_unlock(&con->mutex); } } #else /*EMBEDDED_LIBRARY*/ #define do_send_query(cn,q,q_len,flags) mysql_send_query(&cn->mysql, q, q_len) Loading Loading @@ -4071,7 +4082,14 @@ void do_close_connection(struct st_command *command) con->mysql.net.vio = 0; } } #endif #else /* As query could be still executed in a separate theread we need to check if the query's thread was finished and probably wait (embedded-server specific) */ wait_query_thread_end(con); #endif /*EMBEDDED_LIBRARY*/ if (con->stmt) mysql_stmt_close(con->stmt); con->stmt= 0; Loading Loading @@ -4361,6 +4379,9 @@ void do_connect(struct st_command *command) (int) (sizeof(connections)/sizeof(struct st_connection))); } #ifdef EMBEDDED_LIBRARY con_slot->query_done= 1; #endif if (!mysql_init(&con_slot->mysql)) die("Failed on mysql_init()"); if (opt_compress || con_compress) Loading Loading @@ -5852,12 +5873,7 @@ void run_query_normal(struct st_connection *cn, struct st_command *command, query's thread was finished and probably wait */ else if (flags & QUERY_REAP_FLAG) { pthread_mutex_lock(&cn->mutex); while (!cn->query_done) pthread_cond_wait(&cn->cond, &cn->mutex); pthread_mutex_unlock(&cn->mutex); } wait_query_thread_end(cn); #endif /*EMBEDDED_LIBRARY*/ if (!(flags & QUERY_REAP_FLAG)) DBUG_VOID_RETURN; Loading
mysql-test/r/flush.result +1 −0 Original line number Diff line number Diff line Loading @@ -72,3 +72,4 @@ flush tables with read lock; unlock tables; drop table t1, t2; set session low_priority_updates=default; select benchmark(200, (select sin(1))) > 1000;
mysql-test/t/flush.test +9 −0 Original line number Diff line number Diff line Loading @@ -164,4 +164,13 @@ drop table t1, t2; set session low_priority_updates=default; # # Bug #33334 mysqltest_embedded crashes when disconnecting before reap # connect (con1,localhost,root,,); send select benchmark(200, (select sin(1))) > 1000; disconnect con1; connection default; # End of 5.0 tests