mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fix value returned by mysql_warning_count() after fetching a prepared
statement that generated a warning. (Bug #15510)
This commit is contained in:
@ -715,6 +715,7 @@ void free_old_query(MYSQL *mysql)
|
|||||||
init_alloc_root(&mysql->field_alloc,8192,0); /* Assume rowlength < 8192 */
|
init_alloc_root(&mysql->field_alloc,8192,0); /* Assume rowlength < 8192 */
|
||||||
mysql->fields= 0;
|
mysql->fields= 0;
|
||||||
mysql->field_count= 0; /* For API */
|
mysql->field_count= 0; /* For API */
|
||||||
|
mysql->warning_count= 0;
|
||||||
mysql->info= 0;
|
mysql->info= 0;
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
@ -2484,7 +2485,6 @@ get_info:
|
|||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
mysql->status= MYSQL_STATUS_GET_RESULT;
|
mysql->status= MYSQL_STATUS_GET_RESULT;
|
||||||
mysql->field_count= (uint) field_count;
|
mysql->field_count= (uint) field_count;
|
||||||
mysql->warning_count= 0;
|
|
||||||
DBUG_PRINT("exit",("ok"));
|
DBUG_PRINT("exit",("ok"));
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
@ -14590,6 +14590,40 @@ static void test_bug14845()
|
|||||||
myquery(rc);
|
myquery(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Bug #15510: mysql_warning_count returns 0 after mysql_stmt_fetch which
|
||||||
|
should warn
|
||||||
|
*/
|
||||||
|
static void test_bug15510()
|
||||||
|
{
|
||||||
|
MYSQL_STMT *stmt;
|
||||||
|
MYSQL_RES *res;
|
||||||
|
int rc;
|
||||||
|
const char *query= "select 1 from dual where 1/0";
|
||||||
|
|
||||||
|
myheader("test_bug15510");
|
||||||
|
|
||||||
|
rc= mysql_query(mysql, "set @@sql_mode='ERROR_FOR_DIVISION_BY_ZERO'");
|
||||||
|
myquery(rc);
|
||||||
|
|
||||||
|
stmt= mysql_stmt_init(mysql);
|
||||||
|
|
||||||
|
rc= mysql_stmt_prepare(stmt, query, strlen(query));
|
||||||
|
check_execute(stmt, rc);
|
||||||
|
|
||||||
|
rc= mysql_stmt_execute(stmt);
|
||||||
|
check_execute(stmt, rc);
|
||||||
|
|
||||||
|
rc= mysql_stmt_fetch(stmt);
|
||||||
|
DIE_UNLESS(mysql_warning_count(mysql));
|
||||||
|
|
||||||
|
/* Cleanup */
|
||||||
|
mysql_stmt_close(stmt);
|
||||||
|
rc= mysql_query(mysql, "set @@sql_mode=''");
|
||||||
|
myquery(rc);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Read and parse arguments and MySQL options from my.cnf
|
Read and parse arguments and MySQL options from my.cnf
|
||||||
*/
|
*/
|
||||||
@ -14849,6 +14883,7 @@ static struct my_tests_st my_tests[]= {
|
|||||||
{ "test_bug13488", test_bug13488 },
|
{ "test_bug13488", test_bug13488 },
|
||||||
{ "test_bug13524", test_bug13524 },
|
{ "test_bug13524", test_bug13524 },
|
||||||
{ "test_bug14845", test_bug14845 },
|
{ "test_bug14845", test_bug14845 },
|
||||||
|
{ "test_bug15510", test_bug15510},
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user