Commit 56a01aca authored by hf@deer.(none)'s avatar hf@deer.(none)

Fix for bug #5066(Wrong result after subselect with an error)

In this case we have to clear thd->data after errorneous query.
So i just move thd->data cleanup to emb_advanced_command
parent f0fffbe2
...@@ -72,6 +72,11 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command, ...@@ -72,6 +72,11 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
THD *thd=(THD *) mysql->thd; THD *thd=(THD *) mysql->thd;
NET *net= &mysql->net; NET *net= &mysql->net;
if (thd->data)
{
free_rows(thd->data);
thd->data= 0;
}
/* Check that we are calling the client functions in right order */ /* Check that we are calling the client functions in right order */
if (mysql->status != MYSQL_STATUS_READY) if (mysql->status != MYSQL_STATUS_READY)
{ {
...@@ -217,11 +222,6 @@ static int emb_stmt_execute(MYSQL_STMT *stmt) ...@@ -217,11 +222,6 @@ static int emb_stmt_execute(MYSQL_STMT *stmt)
THD *thd= (THD*)stmt->mysql->thd; THD *thd= (THD*)stmt->mysql->thd;
thd->client_param_count= stmt->param_count; thd->client_param_count= stmt->param_count;
thd->client_params= stmt->params; thd->client_params= stmt->params;
if (thd->data)
{
free_rows(thd->data);
thd->data= 0;
}
if (emb_advanced_command(stmt->mysql, COM_EXECUTE,0,0, if (emb_advanced_command(stmt->mysql, COM_EXECUTE,0,0,
(const char*)&stmt->stmt_id,sizeof(stmt->stmt_id), (const char*)&stmt->stmt_id,sizeof(stmt->stmt_id),
1) || 1) ||
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment