diff options
author | unknown <konstantin@mysql.com> | 2005-02-10 17:53:06 +0300 |
---|---|---|
committer | unknown <konstantin@mysql.com> | 2005-02-10 17:53:06 +0300 |
commit | 98bc23483098fb01df035f7947eb1a6509d0f82a (patch) | |
tree | 7bfba9f1adbfda2e33a18e54b581ca9e86fa2512 | |
parent | bebba9582f8c874018d19c73d28874915c3801bb (diff) | |
parent | a26ce94f7adf0fb992045dfdf9d9401a36a6c31c (diff) | |
download | mariadb-git-98bc23483098fb01df035f7947eb1a6509d0f82a.tar.gz |
Merge mysql.com:/home/kostja/work/mysql-4.1-root
into mysql.com:/home/kostja/work/mysql-5.0-root
libmysql/libmysql.c:
Auto merged
tests/mysql_client_test.c:
Auto merged
-rw-r--r-- | libmysql/libmysql.c | 17 | ||||
-rw-r--r-- | tests/mysql_client_test.c | 22 |
2 files changed, 38 insertions, 1 deletions
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 48af83f4de5..d0dee7976db 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -1809,6 +1809,18 @@ static my_bool my_realloc_str(NET *net, ulong length) } +/* Clear possible error statee of struct NET */ + +static void net_clear_error(NET *net) +{ + if (net->last_errno) + { + net->last_errno= 0; + net->last_error[0]= '\0'; + strmov(net->sqlstate, not_error_sqlstate); + } +} + /* Set statement error code, sqlstate, and error message from given errcode and sqlstate. @@ -4869,6 +4881,11 @@ my_bool STDCALL mysql_stmt_close(MYSQL_STMT *stmt) if (mysql->unbuffered_fetch_owner == &stmt->unbuffered_fetch_cancelled) mysql->unbuffered_fetch_owner= 0; + /* + Clear NET error state: if the following commands come through + successfully, connection will still be usable for other commands. + */ + net_clear_error(&mysql->net); if (mysql->status != MYSQL_STATUS_READY) { /* diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 018bc554093..8f76b7757dc 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -12513,7 +12513,7 @@ static void test_bug6761(void) } -/* Bug#8330 - Bug #8330 mysql_stmt_execute crashes (libmysql) */ +/* Bug#8330 - mysql_stmt_execute crashes (libmysql) */ static void test_bug8330() { @@ -12564,6 +12564,26 @@ static void test_bug8330() } +/* Bug#7990 - mysql_stmt_close doesn't reset mysql->net.last_error */ + +static void test_bug7990() +{ + MYSQL_STMT *stmt; + int rc; + myheader("test_bug7990"); + + stmt= mysql_stmt_init(mysql); + rc= mysql_stmt_prepare(stmt, "foo", 3); + /* + XXX: the fact that we store errno both in STMT and in + MYSQL is not documented and is subject to change in 5.0 + */ + DIE_UNLESS(rc && mysql_stmt_errno(stmt) && mysql_errno(mysql)); + mysql_stmt_close(stmt); + DIE_UNLESS(!mysql_errno(mysql)); +} + + /* Read and parse arguments and MySQL options from my.cnf */ |