diff options
author | unknown <konstantin@mysql.com> | 2004-03-16 01:04:04 +0300 |
---|---|---|
committer | unknown <konstantin@mysql.com> | 2004-03-16 01:04:04 +0300 |
commit | 321422c86e29199d1d2fb0337640fa819550baa0 (patch) | |
tree | 752a7c190fcf0f92940319d09105b114f3e76d52 /libmysql/errmsg.c | |
parent | 4c0d915652466b8f6c7f1bb5b397f59cb5cea8d3 (diff) | |
download | mariadb-git-321422c86e29199d1d2fb0337640fa819550baa0.tar.gz |
Intermediate commit of client library (cleanups + fixes of 3 items from
flaws list)
TODO:
* verify that no sequence of API calls produces SIGSEGV.
That is, verify that mysql_stmt_init -> mysql_stmt_fetch is OK,
or mysql_stmt_prepare -> mysql_stmt_fetch_column is OK and sets
meaningful error.
* remove alloc_stmt_fields call
* revise stmt->state codes and statement states.
* there are other items in prepared statements 'to fix' document.
Done:
- cleanups and comments
- revision of prepared statement error codes.
- mysql_stmt_prepare is now can always be called (that is, you can reprepare
a statement)
- new implementation of mysql_stmt_close and fetch cancellation
include/errmsg.h:
- CR_NOT_ALL_PARAMS_BOUND - this error code wasn't used until now.
Apparently it was added in advance, but then interface of
mysql_stmt_bind_param changed. Now it's not possible to bind only some
parameters - either all or none of parameters are bound.
This error code is renamed to CR_PARAMS_NOT_BOUND
- CR_FETCH_CANCELLED - error code set on server side when fetch from
MYSQL_RES or MYSQL_STMT (in blocking mode) was cancelled because of
intercepting call to mysql_stmt_close
- CR_NO_DATA - this is proposed error code to return from
mysql_stmt_fetch_column if no row was fetched (by any type of fetch).
We always can fall back to CR_COMMANDS_OUT_OF_SYNC though.
Need reviewer's opinion on this one.
include/mysql.h:
- added unbuffered_fetch_owner member to MYSQL to point to MYSQL_RES
or MYSQL_STMT which is used to fetch result at the moment.
This is to be able to set CR_FETCH_CANCELLED error without fantoms.
- added unbuffered_fetch_cancelled boolean variable to MYSQL_STMT and
MYSQL_RES structures
- rename PREP_STMT_STATE -> enum enum_mysql_stmt_state
- members of MYSQL_STMT ordered by size.
- removed members of MYSQL_STMT: current_row, result_buffered,
last_fetched_column, last_fetched_buffer, query
- renamed members of MYSQL_STMT: param_buffers -> bind_param_done,
res_buffers -> bind_result_done
- now mysql_stmt_fetch calls stmt->read_row_func to read row either from
buffer or from network.
include/sql_common.h:
declaration for flush_use_result
libmysql/client_settings.h:
stmt_close declaration removed
libmysql/errmsg.c:
Error messages for changed and added error codes.
libmysql/libmysql.c:
Many changes:
- some unused variables removed
- cleanups
- better error reporting
- some function calls commented
- alloc_stmt_fields is now called right after execute, to not read
mysql->fields of some other statement
- new implementation of mysql_stmt_fetch - this is also with cursor
fetch in mind (to implement cursor fetch I'll just need to write
special read_row function for it, so this change will be local)
- implementation of fetch cancellation, including complete rewrite of
mysql_stmt_close
- now mysql_stmt_free_result doesn't free results of other statements.
sql-common/client.c:
- implementation of flush_use_result
- implementation of fetch cancellation
- changed behaviour of mysql_close in regard to mysql_stmt_close - now
mysql_close just set stmt->mysql to 0
Diffstat (limited to 'libmysql/errmsg.c')
-rw-r--r-- | libmysql/errmsg.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/libmysql/errmsg.c b/libmysql/errmsg.c index 569267ddb37..e651c13897f 100644 --- a/libmysql/errmsg.c +++ b/libmysql/errmsg.c @@ -54,7 +54,7 @@ const char *client_errors[]= "Malformed packet", "Invalid use of null pointer", "Statement not prepared", - "Not all parameters data supplied", + "Parameters data was not supplied", "Data truncated", "No parameters exists in the statement", "Invalid parameter number", @@ -72,7 +72,9 @@ const char *client_errors[]= "Can't open shared memory. Can't send the request event to server (%lu)", "Wrong or unknown protocol", "Invalid connection handle", - "Connection using old (pre 4.1.1) authentication protocol refused (client option 'secure_auth' enabled)" + "Connection using old (pre 4.1.1) authentication protocol refused (client option 'secure_auth' enabled)", + "Row retrieval was cancelled by mysql_stmt_close() call", + "Attempt to read column without prior row fetch" }; /* Start of code added by Roberto M. Serqueira - martinsc@uol.com.br - 05.24.2001 */ @@ -110,7 +112,7 @@ const char *client_errors[]= "Malformed packet", "Invalid use of null pointer", "Statement not prepared", - "Not all parameters data supplied", + "Parameters data was not supplied", "Data truncated", "No parameters exists in the statement", "Invalid parameter number", @@ -128,7 +130,9 @@ const char *client_errors[]= "Can't open shared memory. Can't send the request event to server (%lu)", "Wrong or unknown protocol", "Invalid connection handle", - "Connection using old (pre 4.1.1) authentication protocol refused (client option 'secure_auth' enabled)" + "Connection using old (pre 4.1.1) authentication protocol refused (client option 'secure_auth' enabled)", + "Row retrieval was cancelled by mysql_stmt_close() call", + "Attempt to read column without prior row fetch" }; #else /* ENGLISH */ @@ -182,7 +186,9 @@ const char *client_errors[]= "Can't open shared memory. Can't send the request event to server (%lu)", "Wrong or unknown protocol", "Invalid connection handle", - "Connection using old (pre 4.1.1) authentication protocol refused (client option 'secure_auth' enabled)" + "Connection using old (pre 4.1.1) authentication protocol refused (client option 'secure_auth' enabled)", + "Row retrieval was cancelled by mysql_stmt_close() call", + "Attempt to read column without prior row fetch" }; #endif |