Post-merge fixes for Bug 35103
This commit is contained in:
parent
df5cf2b1de
commit
b7f7c7dc35
@ -4751,7 +4751,7 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
|
||||
if (!mysql)
|
||||
{
|
||||
/* mysql can be reset in mysql_close called from mysql_reconnect */
|
||||
set_stmt_error(stmt, CR_SERVER_LOST, unknown_sqlstate);
|
||||
set_stmt_error(stmt, CR_SERVER_LOST, unknown_sqlstate, NULL);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
|
@ -395,8 +395,11 @@ Diagnostics_area::set_ok_status(THD *thd, ha_rows affected_rows_arg,
|
||||
{
|
||||
DBUG_ASSERT(! is_set());
|
||||
#ifdef DBUG_OFF
|
||||
/* In production, refuse to overwrite an error with an OK packet. */
|
||||
if (is_error())
|
||||
/*
|
||||
In production, refuse to overwrite an error or a custom response
|
||||
with an OK packet.
|
||||
*/
|
||||
if (is_error() || is_disabled())
|
||||
return;
|
||||
#endif
|
||||
/** Only allowed to report success if has not yet reported an error */
|
||||
@ -424,8 +427,11 @@ Diagnostics_area::set_eof_status(THD *thd)
|
||||
|
||||
DBUG_ASSERT(! is_set());
|
||||
#ifdef DBUG_OFF
|
||||
/* In production, refuse to overwrite an error with an EOF packet. */
|
||||
if (is_error())
|
||||
/*
|
||||
In production, refuse to overwrite an error or a custom response
|
||||
with an EOF packet.
|
||||
*/
|
||||
if (is_error() || is_disabled())
|
||||
return;
|
||||
#endif
|
||||
|
||||
@ -454,6 +460,14 @@ Diagnostics_area::set_error_status(THD *thd, uint sql_errno_arg,
|
||||
an error can happen during the flush.
|
||||
*/
|
||||
DBUG_ASSERT(! is_set() || can_overwrite_status);
|
||||
#ifdef DBUG_OFF
|
||||
/*
|
||||
In production, refuse to overwrite a custom response with an
|
||||
ERROR packet.
|
||||
*/
|
||||
if (is_disabled())
|
||||
return;
|
||||
#endif
|
||||
|
||||
m_sql_errno= sql_errno_arg;
|
||||
strmake(m_message, message_arg, sizeof(m_message) - 1);
|
||||
|
@ -2555,6 +2555,8 @@ void mysql_stmt_close(THD *thd, char *packet)
|
||||
Prepared_statement *stmt;
|
||||
DBUG_ENTER("mysql_stmt_close");
|
||||
|
||||
thd->main_da.disable_status();
|
||||
|
||||
if (!(stmt= find_prepared_statement(thd, stmt_id, "mysql_stmt_close")))
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
@ -2566,8 +2568,6 @@ void mysql_stmt_close(THD *thd, char *packet)
|
||||
(void) stmt->deallocate();
|
||||
general_log_print(thd, thd->command, NullS);
|
||||
|
||||
thd->main_da.disable_status();
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
@ -12016,6 +12016,7 @@ static void test_bug5194()
|
||||
|
||||
rc= mysql_stmt_execute(stmt);
|
||||
check_execute(stmt, rc);
|
||||
mysql_stmt_reset(stmt);
|
||||
}
|
||||
|
||||
mysql_stmt_close(stmt);
|
||||
@ -16600,7 +16601,10 @@ static void test_bug27592()
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
/**
|
||||
Bug#29948 autoreconnect + prepared statements + kill seems unstable
|
||||
*/
|
||||
|
||||
static void test_bug29948()
|
||||
{
|
||||
@ -16614,7 +16618,10 @@ static void test_bug29948()
|
||||
const char *query;
|
||||
int buf;
|
||||
unsigned long length, cursor_type;
|
||||
|
||||
|
||||
DBUG_ENTER("test_bug29948");
|
||||
myheader("test_bug29948");
|
||||
|
||||
dbc = mysql_init(NULL);
|
||||
DIE_UNLESS(dbc);
|
||||
|
||||
@ -16650,7 +16657,7 @@ static void test_bug29948()
|
||||
res= mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void *)&cursor_type);
|
||||
myquery(res);
|
||||
|
||||
query= "SELECT * from t1 where a=?";
|
||||
query= "SELECT * FROM t1 WHERE a=?";
|
||||
res= mysql_stmt_prepare(stmt, query, strlen(query));
|
||||
myquery(res);
|
||||
|
||||
@ -16662,20 +16669,23 @@ static void test_bug29948()
|
||||
|
||||
res= mysql_stmt_bind_result(stmt,&bind);
|
||||
check_execute(stmt, res);
|
||||
|
||||
sprintf(kill_buf, "kill %ld", dbc->thread_id);
|
||||
mysql_query(dbc, kill_buf);
|
||||
|
||||
my_snprintf(kill_buf, sizeof(kill_buf), "KILL %ld", dbc->thread_id);
|
||||
res= mysql_query(dbc, kill_buf);
|
||||
myquery(res);
|
||||
|
||||
res= mysql_stmt_store_result(stmt);
|
||||
DIE_UNLESS(res);
|
||||
|
||||
mysql_stmt_free_result(stmt);
|
||||
mysql_stmt_close(stmt);
|
||||
mysql_query(dbc, "DROP TABLE t1");
|
||||
|
||||
res= mysql_query(dbc, "DROP TABLE t1");
|
||||
myquery(res);
|
||||
|
||||
mysql_close(dbc);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
Bug#29687 mysql_stmt_store_result memory leak in libmysqld
|
||||
@ -17715,7 +17725,7 @@ static struct my_tests_st my_tests[]= {
|
||||
{ "test_bug28505", test_bug28505 },
|
||||
{ "test_bug28934", test_bug28934 },
|
||||
{ "test_bug27592", test_bug27592 },
|
||||
/* { "test_bug29948", test_bug29948 }, */
|
||||
{ "test_bug29948", test_bug29948 },
|
||||
{ "test_bug29687", test_bug29687 },
|
||||
{ "test_bug29692", test_bug29692 },
|
||||
{ "test_bug29306", test_bug29306 },
|
||||
|
Loading…
x
Reference in New Issue
Block a user