diff options
author | unknown <hf@deer.(none)> | 2003-09-17 20:48:53 +0500 |
---|---|---|
committer | unknown <hf@deer.(none)> | 2003-09-17 20:48:53 +0500 |
commit | 194f6725d42a111e31fbdff2707095abd7cd1b05 (patch) | |
tree | 883748d65cbe22427001e2d6bd03ea8386ee3593 /libmysql | |
parent | 11d36fa83101f6490f22da74f1a2b81588683f4b (diff) | |
download | mariadb-git-194f6725d42a111e31fbdff2707095abd7cd1b05.tar.gz |
SCRUM:
prepared statements in embedded library
include/mysql.h:
Another 'virtual' method
libmysql/client_settings.h:
client implementation declared
libmysql/libmysql.c:
mysql_execute edited to work with embedded implementation
libmysqld/lib_sql.cc:
one error fixed (we do need parameter's buffer in embedded library)
embedded recordset transfer methods implementations added
sql-common/client.c:
method added to the table
sql/client_settings.h:
no prepared statements in mimiclient
sql/mysql_priv.h:
these functions became global
sql/protocol.cc:
the stub added
sql/protocol.h:
had to change Protocol's interface for embedded library
sql/sql_class.h:
i changed this only for embedded case, but i think it's better to do the
same for remote server also
sql/sql_prepare.cc:
parts of code #ifndef-ed
Diffstat (limited to 'libmysql')
-rw-r--r-- | libmysql/client_settings.h | 1 | ||||
-rw-r--r-- | libmysql/libmysql.c | 22 |
2 files changed, 12 insertions, 11 deletions
diff --git a/libmysql/client_settings.h b/libmysql/client_settings.h index 9866c772d3a..4fdbab08969 100644 --- a/libmysql/client_settings.h +++ b/libmysql/client_settings.h @@ -55,3 +55,4 @@ my_bool STDCALL cli_read_prepare_result(MYSQL *mysql, MYSQL_STMT *stmt); MYSQL_DATA *cli_read_rows(MYSQL *mysql,MYSQL_FIELD *mysql_fields, uint fields); int STDCALL cli_stmt_execute(MYSQL_STMT *stmt); +MYSQL_DATA *cli_read_binary_rows(MYSQL_STMT *stmt); diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index bfa7e4e9357..954eae89a2b 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -1601,15 +1601,6 @@ my_bool STDCALL cli_read_prepare_result(MYSQL *mysql, MYSQL_STMT *stmt) } stmt->field_count= (uint) field_count; stmt->param_count= (ulong) param_count; - if (!(stmt->params= (MYSQL_BIND *) alloc_root(&stmt->mem_root, - sizeof(MYSQL_BIND)* - (stmt->param_count + - stmt->field_count)))) - { - set_stmt_error(stmt, CR_OUT_OF_MEMORY, unknown_sqlstate); - DBUG_RETURN(1); - } - stmt->bind= stmt->params + stmt->param_count; DBUG_RETURN(0); } @@ -1660,6 +1651,15 @@ mysql_prepare(MYSQL *mysql, const char *query, ulong length) DBUG_RETURN(0); } + if (!(stmt->params= (MYSQL_BIND *) alloc_root(&stmt->mem_root, + sizeof(MYSQL_BIND)* + (stmt->param_count + + stmt->field_count)))) + { + set_stmt_error(stmt, CR_OUT_OF_MEMORY, unknown_sqlstate); + DBUG_RETURN(0); + } + stmt->bind= stmt->params + stmt->param_count; stmt->state= MY_ST_PREPARE; stmt->mysql= mysql; mysql->stmts= list_add(mysql->stmts, &stmt->list); @@ -3080,7 +3080,7 @@ no_data: Read all rows of data from server (binary format) */ -static MYSQL_DATA *read_binary_rows(MYSQL_STMT *stmt) +MYSQL_DATA *cli_read_binary_rows(MYSQL_STMT *stmt) { ulong pkt_len; uchar *cp; @@ -3176,7 +3176,7 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt) } result->methods= mysql->methods; stmt->result_buffered= 1; - if (!(result->data= read_binary_rows(stmt))) + if (!(result->data= (*stmt->mysql->methods->read_binary_rows)(stmt))) { my_free((gptr) result,MYF(0)); DBUG_RETURN(0); |