1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00
This commit is contained in:
Georgi Kodinov
2010-10-04 15:42:16 +03:00
341 changed files with 10555 additions and 27999 deletions

View File

@ -18938,6 +18938,107 @@ static void test_bug54041()
}
/**
Bug#47485: mysql_store_result returns a result set for a prepared statement
*/
static void test_bug47485()
{
MYSQL_STMT *stmt;
MYSQL_RES *res;
MYSQL_BIND bind[2];
int rc;
const char* sql_select = "SELECT 1, 'a'";
int int_data;
char str_data[16];
my_bool is_null[2];
my_bool error[2];
unsigned long length[2];
DBUG_ENTER("test_bug47485");
myheader("test_bug47485");
stmt= mysql_stmt_init(mysql);
check_stmt(stmt);
rc= mysql_stmt_prepare(stmt, sql_select, strlen(sql_select));
check_execute(stmt, rc);
rc= mysql_stmt_execute(stmt);
check_execute(stmt, rc);
res = mysql_store_result(mysql);
DIE_UNLESS(res == NULL);
mysql_stmt_reset(stmt);
rc= mysql_stmt_execute(stmt);
check_execute(stmt, rc);
res = mysql_use_result(mysql);
DIE_UNLESS(res == NULL);
mysql_stmt_reset(stmt);
memset(bind, 0, sizeof(bind));
bind[0].buffer_type= MYSQL_TYPE_LONG;
bind[0].buffer= (char *)&int_data;
bind[0].is_null= &is_null[0];
bind[0].length= &length[0];
bind[0].error= &error[0];
bind[1].buffer_type= MYSQL_TYPE_STRING;
bind[1].buffer= (char *)str_data;
bind[1].buffer_length= sizeof(str_data);
bind[1].is_null= &is_null[1];
bind[1].length= &length[1];
bind[1].error= &error[1];
rc= mysql_stmt_bind_result(stmt, bind);
check_execute(stmt, rc);
rc= mysql_stmt_execute(stmt);
check_execute(stmt, rc);
rc= mysql_stmt_store_result(stmt);
check_execute(stmt, rc);
while (!(rc= mysql_stmt_fetch(stmt)))
;
DIE_UNLESS(rc == MYSQL_NO_DATA);
mysql_stmt_reset(stmt);
memset(bind, 0, sizeof(bind));
bind[0].buffer_type= MYSQL_TYPE_LONG;
bind[0].buffer= (char *)&int_data;
bind[0].is_null= &is_null[0];
bind[0].length= &length[0];
bind[0].error= &error[0];
bind[1].buffer_type= MYSQL_TYPE_STRING;
bind[1].buffer= (char *)str_data;
bind[1].buffer_length= sizeof(str_data);
bind[1].is_null= &is_null[1];
bind[1].length= &length[1];
bind[1].error= &error[1];
rc= mysql_stmt_bind_result(stmt, bind);
check_execute(stmt, rc);
rc= mysql_stmt_execute(stmt);
check_execute(stmt, rc);
while (!(rc= mysql_stmt_fetch(stmt)))
;
DIE_UNLESS(rc == MYSQL_NO_DATA);
mysql_stmt_close(stmt);
DBUG_VOID_RETURN;
}
/*
Bug#49972: Crash in prepared statements.
@ -19379,6 +19480,7 @@ static struct my_tests_st my_tests[]= {
{ "test_bug49972", test_bug49972 },
{ "test_bug42373", test_bug42373 },
{ "test_bug54041", test_bug54041 },
{ "test_bug47485", test_bug47485 },
{ 0, 0 }
};