Details
-
Bug
-
Status: Closed (View Workflow)
-
Minor
-
Resolution: Fixed
-
10.0.5, 5.5.33a
-
all platforms
-
10.1.11
Description
According to the documentation metadata for a prepared statement should be available after preparing the statement: "mysql_stmt_field_count() can be called after you have prepared a statement by invoking mysql_stmt_prepare().".
This doesn't work with all kind pf prepared statements.
How to repeat:
static int test_metadata(MYSQL *mysql)
|
{
|
int rc;
|
char *query1= "SELECT 1,2 FROM DUAL";
|
char *query2= "SHOW CREATE TABLE test_metadata";
|
MYSQL_STMT *stmt= mysql_stmt_init(mysql);
|
|
rc= mysql_query(mysql, "DROP TABLE IF EXISTS test_metadata");
|
check_mysql_rc(rc, mysql);
|
|
rc= mysql_query(mysql, "CREATE TABLE test_metadata (a int)");
|
check_mysql_rc(rc, mysql);
|
|
rc= mysql_stmt_prepare(stmt, query1, strlen(query1));
|
check_stmt_rc(rc, stmt);
|
diag("Fields in result set after prepare: %u", mysql_stmt_field_count(stmt));
|
|
rc= mysql_stmt_prepare(stmt, query2, strlen(query2));
|
check_stmt_rc(rc, stmt);
|
diag("Fields in result set after prepare: %u", mysql_stmt_field_count(stmt));
|
|
rc= mysql_stmt_execute(stmt);
|
diag("Fields in result set after execute: %u", mysql_stmt_field_count(stmt));
|
|
mysql_stmt_close(stmt);
|
}
|
Output:
# Fields in result set after prepare: 2
|
# Fields in result set after prepare: 0
|
# Fields in result set after execute: 2
|