summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2016-08-16 21:23:57 +0200
committerOleksandr Byelkin <sanja@mariadb.com>2016-08-16 21:23:57 +0200
commit05f61ba46046ca835071a73b9255e787dcce9255 (patch)
treeeee5377759fd35c8f432771ea0636315945e5b57
parentdf09d5e724af93fea096fd841fad9e93d2615ad5 (diff)
downloadmariadb-git-05f61ba46046ca835071a73b9255e787dcce9255.tar.gz
MDEV-10559: main.mysql_client_test_nonblock crashes in buildbot on 10.0
fix for async operations
-rw-r--r--sql-common/client.c3
-rw-r--r--sql-common/mysql_async.c6
-rw-r--r--tests/mysql_client_test.c6
3 files changed, 10 insertions, 5 deletions
diff --git a/sql-common/client.c b/sql-common/client.c
index 184d7983a00..78c5426367c 100644
--- a/sql-common/client.c
+++ b/sql-common/client.c
@@ -3644,7 +3644,8 @@ error:
/* Free alloced memory */
end_server(mysql);
mysql_close_free(mysql);
- if (!(client_flag & CLIENT_REMEMBER_OPTIONS))
+ if (!(client_flag & CLIENT_REMEMBER_OPTIONS) &&
+ !mysql->options.extension->async_context)
mysql_close_free_options(mysql);
}
DBUG_RETURN(0);
diff --git a/sql-common/mysql_async.c b/sql-common/mysql_async.c
index 80b4f390641..decf48e0e69 100644
--- a/sql-common/mysql_async.c
+++ b/sql-common/mysql_async.c
@@ -455,7 +455,11 @@ MK_ASYNC_START_BODY(
parms.db= db;
parms.port= port;
parms.unix_socket= unix_socket;
- parms.client_flags= client_flags;
+ /*
+ async wrapper enforce the CLIENT_REMEMBER_OPTIONS flag to be
+ functional (otherwise it can't operate)
+ */
+ parms.client_flags= client_flags | CLIENT_REMEMBER_OPTIONS;
},
NULL,
r_ptr,
diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c
index 640ba298556..2acec60166e 100644
--- a/tests/mysql_client_test.c
+++ b/tests/mysql_client_test.c
@@ -18443,7 +18443,7 @@ static void test_bug58036()
if (mysql_real_connect(conn, opt_host, opt_user,
opt_password, opt_db ? opt_db : "test",
- opt_port, opt_unix_socket, CLIENT_REMEMBER_OPTIONS))
+ opt_port, opt_unix_socket, 0))
{
if (!opt_silent)
printf("mysql_real_connect() succeeded (failure expected)\n");
@@ -18469,7 +18469,7 @@ static void test_bug58036()
mysql_options(conn, MYSQL_SET_CHARSET_NAME, "latin1");
if (!mysql_real_connect(conn, opt_host, opt_user,
opt_password, opt_db ? opt_db : "test",
- opt_port, opt_unix_socket, CLIENT_REMEMBER_OPTIONS))
+ opt_port, opt_unix_socket, 0))
{
if (!opt_silent)
printf("mysql_real_connect() failed: %s (%d)\n",
@@ -19344,7 +19344,7 @@ static void test_big_packet()
if (!(mysql_real_connect(mysql_local, opt_host, opt_user,
opt_password, current_db, opt_port,
- opt_unix_socket, CLIENT_REMEMBER_OPTIONS)))
+ opt_unix_socket, 0)))
{
mysql_close(mysql_local);
fprintf(stderr, "\n connection failed(%s)", mysql_error(mysql_local));