1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-02 14:22:51 +03:00

A fix and test case for Bug#7990 "mysql_stmt_close doesn't

reset mysql->net.last_error": the solution is to clear
MYSQL->net error before performing COM_CLOSE: if the call
succeeds, the connection is usable for other statements.
More comprehensive fix is to clear MYSQL->net for all
recoverable errors at the time they happen, it will be
implemented in 5.0 as it introduces incompatibility in behavior.


libmysql/libmysql.c:
  A simple fix for Bug#7990 "mysql_stmt_close doesn't reset 
  mysql->net.last_error"
tests/mysql_client_test.c:
  A test case for Bug#7990 " mysql_stmt_close doesn't reset 
  mysql->net.last_error"
This commit is contained in:
unknown
2005-02-10 17:41:54 +03:00
parent fca90750df
commit a26ce94f7a
2 changed files with 38 additions and 1 deletions

View File

@ -11534,7 +11534,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()
{
@ -11585,6 +11585,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
*/