mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
A fix of return value of mysql_stmt_bind_result() and cleanup.
This commit is contained in:
parent
a2a3d82e62
commit
91457448c2
4 changed files with 18 additions and 15 deletions
|
@ -90,3 +90,4 @@ extern const char *client_errors[]; /* Error messages */
|
|||
#define CR_SECURE_AUTH 2049
|
||||
#define CR_FETCH_CANCELED 2050
|
||||
#define CR_NO_DATA 2051
|
||||
#define CR_NO_STMT_METADATA 2052
|
||||
|
|
|
@ -78,7 +78,9 @@ const char *client_errors[]=
|
|||
"Invalid connection handle",
|
||||
"Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)",
|
||||
"Row retrieval was canceled by mysql_stmt_close() call",
|
||||
"Attempt to read column without prior row fetch"
|
||||
"Attempt to read column without prior row fetch",
|
||||
"Prepared statement contains no metadata",
|
||||
""
|
||||
};
|
||||
|
||||
/* Start of code added by Roberto M. Serqueira - martinsc@uol.com.br - 05.24.2001 */
|
||||
|
@ -137,7 +139,9 @@ const char *client_errors[]=
|
|||
"Invalid connection handle",
|
||||
"Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)",
|
||||
"Row retrieval was canceled by mysql_stmt_close() call",
|
||||
"Attempt to read column without prior row fetch"
|
||||
"Attempt to read column without prior row fetch",
|
||||
"Prepared statement contains no metadata",
|
||||
""
|
||||
};
|
||||
|
||||
#else /* ENGLISH */
|
||||
|
@ -194,7 +198,9 @@ const char *client_errors[]=
|
|||
"Invalid connection handle",
|
||||
"Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)",
|
||||
"Row retrieval was canceled by mysql_stmt_close() call",
|
||||
"Attempt to read column without prior row fetch"
|
||||
"Attempt to read column without prior row fetch",
|
||||
"Prepared statement contains no metadata",
|
||||
""
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2139,12 +2139,12 @@ static void update_stmt_fields(MYSQL_STMT *stmt)
|
|||
DESCRIPTION
|
||||
This function should be used after mysql_stmt_execute().
|
||||
You can safely check that prepared statement has a result set by calling
|
||||
mysql_stmt_num_fields(): if number of fields is not zero, you can call
|
||||
mysql_stmt_field_count(): if number of fields is not zero, you can call
|
||||
this function to get fields metadata.
|
||||
Next steps you may want to make:
|
||||
- find out number of columns in result set by calling
|
||||
mysql_num_fields(res) (the same value is returned by
|
||||
mysql_stmt_num_fields)
|
||||
mysql_stmt_field_count())
|
||||
- fetch metadata for any column with mysql_fetch_field,
|
||||
mysql_fetch_field_direct, mysql_fetch_fields, mysql_field_seek.
|
||||
- free returned MYSQL_RES structure with mysql_free_result.
|
||||
|
@ -3882,11 +3882,10 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
|
|||
|
||||
if (!bind_count)
|
||||
{
|
||||
if ((int) stmt->state < (int) MYSQL_STMT_PREPARE_DONE)
|
||||
{
|
||||
set_stmt_error(stmt, CR_NO_PREPARE_STMT, unknown_sqlstate);
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
int errorcode= (int) stmt->state < (int) MYSQL_STMT_PREPARE_DONE ?
|
||||
CR_NO_PREPARE_STMT : CR_NO_STMT_METADATA;
|
||||
set_stmt_error(stmt, errorcode, unknown_sqlstate);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -4278,7 +4277,7 @@ static void stmt_update_metadata(MYSQL_STMT *stmt, MYSQL_ROWS *data)
|
|||
row+= (stmt->field_count+9)/8; /* skip null bits */
|
||||
bit= 4; /* first 2 bits are reserved */
|
||||
|
||||
/* Go throw all fields and calculate metadata */
|
||||
/* Go through all fields and calculate metadata */
|
||||
for (bind= stmt->bind, end= bind + stmt->field_count, field= stmt->fields ;
|
||||
bind < end ;
|
||||
bind++, field++)
|
||||
|
|
|
@ -5636,9 +5636,6 @@ static void test_subselect()
|
|||
rc= mysql_stmt_bind_param(stmt, bind);
|
||||
check_execute(stmt, rc);
|
||||
|
||||
rc= mysql_stmt_bind_result(stmt, bind);
|
||||
check_execute(stmt, rc);
|
||||
|
||||
id= 2;
|
||||
rc= mysql_stmt_execute(stmt);
|
||||
check_execute(stmt, rc);
|
||||
|
@ -5982,7 +5979,7 @@ static void test_pure_coverage()
|
|||
check_execute(stmt, rc);
|
||||
|
||||
rc= mysql_stmt_bind_result(stmt, (MYSQL_BIND*)0);
|
||||
check_execute(stmt, rc);
|
||||
DIE_UNLESS(rc == 1);
|
||||
|
||||
mysql_stmt_close(stmt);
|
||||
|
||||
|
|
Loading…
Reference in a new issue