diff options
author | unknown <davi@buzz.(none)> | 2008-03-17 16:13:59 -0300 |
---|---|---|
committer | unknown <davi@buzz.(none)> | 2008-03-17 16:13:59 -0300 |
commit | ce34828e075347de7d783d3b61ce579856ca72ad (patch) | |
tree | 278a06c5d7b0c6da3ee8bc65f506bf6a0480b385 /libmysql/libmysql.c | |
parent | c1e69a77a6f6563214b5f5e8813db423c4f3a04c (diff) | |
parent | 23d567aa7cb01811294a24ecda100d2a90fe8acf (diff) | |
download | mariadb-git-ce34828e075347de7d783d3b61ce579856ca72ad.tar.gz |
Merge buzz.(none):/home/davi/mysql-5.0-runtime
into buzz.(none):/home/davi/mysql-5.1-runtime
sql-common/client.c:
Auto merged
sql/sql_prepare.cc:
Manual merge
tests/mysql_client_test.c:
Manual merge
libmysql/libmysql.c:
Manual merge
Diffstat (limited to 'libmysql/libmysql.c')
-rw-r--r-- | libmysql/libmysql.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index d79910a2ef4..423068a6ba2 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -2467,7 +2467,7 @@ static my_bool execute(MYSQL_STMT *stmt, char *packet, ulong length) int4store(buff+5, 1); /* iteration count */ res= test(cli_advanced_command(mysql, COM_STMT_EXECUTE, buff, sizeof(buff), - (uchar*) packet, length, 1, NULL) || + (uchar*) packet, length, 1, stmt) || (*mysql->methods->read_query_result)(mysql)); stmt->affected_rows= mysql->affected_rows; stmt->server_status= mysql->server_status; @@ -2683,7 +2683,7 @@ stmt_read_row_from_cursor(MYSQL_STMT *stmt, unsigned char **row) int4store(buff + 4, stmt->prefetch_rows); /* number of rows to fetch */ if ((*mysql->methods->advanced_command)(mysql, COM_STMT_FETCH, buff, sizeof(buff), (uchar*) 0, 0, - 1, NULL)) + 1, stmt)) { set_stmt_errmsg(stmt, net); return 1; @@ -3350,7 +3350,7 @@ mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number, */ if ((*mysql->methods->advanced_command)(mysql, COM_STMT_SEND_LONG_DATA, buff, sizeof(buff), (uchar*) data, - length, 1, NULL)) + length, 1, stmt)) { set_stmt_errmsg(stmt, &mysql->net); DBUG_RETURN(1); @@ -4748,6 +4748,13 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt) MYSQL_DATA *result= &stmt->result; DBUG_ENTER("mysql_stmt_store_result"); + if (!mysql) + { + /* mysql can be reset in mysql_close called from mysql_reconnect */ + set_stmt_error(stmt, CR_SERVER_LOST, unknown_sqlstate); + DBUG_RETURN(1); + } + mysql= mysql->last_used_con; if (!stmt->field_count) @@ -4773,7 +4780,7 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt) int4store(buff, stmt->stmt_id); int4store(buff + 4, (int)~0); /* number of rows to fetch */ if (cli_advanced_command(mysql, COM_STMT_FETCH, buff, sizeof(buff), - (uchar*) 0, 0, 1, NULL)) + (uchar*) 0, 0, 1, stmt)) { set_stmt_errmsg(stmt, net); DBUG_RETURN(1); @@ -4960,7 +4967,7 @@ static my_bool reset_stmt_handle(MYSQL_STMT *stmt, uint flags) uchar buff[MYSQL_STMT_HEADER]; /* packet header: 4 bytes for stmt id */ int4store(buff, stmt->stmt_id); if ((*mysql->methods->advanced_command)(mysql, COM_STMT_RESET, buff, - sizeof(buff), 0, 0, 0, NULL)) + sizeof(buff), 0, 0, 0, stmt)) { set_stmt_errmsg(stmt, &mysql->net); stmt->state= MYSQL_STMT_INIT_DONE; |