Author: ahristov
Date: 2007-03-03 03:30:39 +0100 (Sat, 03 Mar 2007)
New Revision: 84
Modified:
trunk/ext/mysqli/mysqlnd/mysqlnd.h
trunk/ext/mysqli/mysqlnd/mysqlnd_ps.c
Log:
Cosmetics
Modified: trunk/ext/mysqli/mysqlnd/mysqlnd.h
===================================================================
--- trunk/ext/mysqli/mysqlnd/mysqlnd.h 2007-03-03 01:52:42 UTC (rev 83)
+++ trunk/ext/mysqli/mysqlnd/mysqlnd.h 2007-03-03 02:30:39 UTC (rev 84)
@@ -65,28 +65,28 @@
#define MYSQLND_NO_DATA 100
#define MYSQLND_DATA_TRUNCATED 101
-#define SHA1_MAX_LENGTH 20
+#define SHA1_MAX_LENGTH 20
#define SCRAMBLE_LENGTH 20
#define SCRAMBLE_LENGTH_323 8
-#define CLIENT_LONG_PASSWORD 1 /* new more secure passwords */
-#define CLIENT_FOUND_ROWS 2 /* Found instead of affected rows */
-#define CLIENT_LONG_FLAG 4 /* Get all column flags */
-#define CLIENT_CONNECT_WITH_DB 8 /* One can specify db on connect */
-#define CLIENT_NO_SCHEMA 16 /* Don't allow database.table.column */
-#define CLIENT_COMPRESS 32 /* Can use compression protocol */
-#define CLIENT_ODBC 64 /* Odbc client */
-#define CLIENT_LOCAL_FILES 128 /* Can use LOAD DATA LOCAL */
-#define CLIENT_IGNORE_SPACE 256 /* Ignore spaces before '(' */
-#define CLIENT_PROTOCOL_41 512 /* New 4.1 protocol */
-#define CLIENT_INTERACTIVE 1024 /* This is an interactive client */
-#define CLIENT_SSL 2048 /* Switch to SSL after handshake */
-#define CLIENT_IGNORE_SIGPIPE 4096 /* IGNORE sigpipes */
-#define CLIENT_TRANSACTIONS 8192 /* Client knows about transactions */
-#define CLIENT_RESERVED 16384 /* Old flag for 4.1 protocol */
-#define CLIENT_SECURE_CONNECTION 32768 /* New 4.1 authentication */
-#define CLIENT_MULTI_STATEMENTS (1UL << 16) /* Enable/disable multi-stmt support */
-#define CLIENT_MULTI_RESULTS (1UL << 17) /* Enable/disable multi-results */
+#define CLIENT_LONG_PASSWORD 1 /* new more secure passwords */
+#define CLIENT_FOUND_ROWS 2 /* Found instead of affected rows */
+#define CLIENT_LONG_FLAG 4 /* Get all column flags */
+#define CLIENT_CONNECT_WITH_DB 8 /* One can specify db on connect */
+#define CLIENT_NO_SCHEMA 16 /* Don't allow database.table.column */
+#define CLIENT_COMPRESS 32 /* Can use compression protocol */
+#define CLIENT_ODBC 64 /* Odbc client */
+#define CLIENT_LOCAL_FILES 128 /* Can use LOAD DATA LOCAL */
+#define CLIENT_IGNORE_SPACE 256 /* Ignore spaces before '(' */
+#define CLIENT_PROTOCOL_41 512 /* New 4.1 protocol */
+#define CLIENT_INTERACTIVE 1024 /* This is an interactive client */
+#define CLIENT_SSL 2048 /* Switch to SSL after handshake */
+#define CLIENT_IGNORE_SIGPIPE 4096 /* IGNORE sigpipes */
+#define CLIENT_TRANSACTIONS 8192 /* Client knows about transactions */
+#define CLIENT_RESERVED 16384 /* Old flag for 4.1 protocol */
+#define CLIENT_SECURE_CONNECTION 32768 /* New 4.1 authentication */
+#define CLIENT_MULTI_STATEMENTS (1UL << 16) /* Enable/disable multi-stmt support
*/
+#define CLIENT_MULTI_RESULTS (1UL << 17) /* Enable/disable multi-results */
enum
{
@@ -144,7 +144,7 @@
typedef enum mysqlnd_field_types
{
- MYSQL_TYPE_DECIMAL,
+ MYSQL_TYPE_DECIMAL,
MYSQL_TYPE_TINY,
MYSQL_TYPE_SHORT,
MYSQL_TYPE_LONG,
@@ -174,45 +174,44 @@
} enum_mysqlnd_field_types;
/* Please update this if there is a new type after MYSQL_TYPE_GEOMETRY */
-#define MYSQL_TYPE_LAST MYSQL_TYPE_GEOMETRY
+#define MYSQL_TYPE_LAST MYSQL_TYPE_GEOMETRY
typedef enum mysqlnd_server_option
{
MYSQL_OPTION_MULTI_STATEMENTS_ON,
MYSQL_OPTION_MULTI_STATEMENTS_OFF
-
} enum_mysqlnd_server_option;
-#define FIELD_TYPE_DECIMAL MYSQL_TYPE_DECIMAL
-#define FIELD_TYPE_NEWDECIMAL MYSQL_TYPE_NEWDECIMAL
-#define FIELD_TYPE_TINY MYSQL_TYPE_TINY
-#define FIELD_TYPE_SHORT MYSQL_TYPE_SHORT
-#define FIELD_TYPE_LONG MYSQL_TYPE_LONG
-#define FIELD_TYPE_FLOAT MYSQL_TYPE_FLOAT
-#define FIELD_TYPE_DOUBLE MYSQL_TYPE_DOUBLE
-#define FIELD_TYPE_NULL MYSQL_TYPE_NULL
-#define FIELD_TYPE_TIMESTAMP MYSQL_TYPE_TIMESTAMP
-#define FIELD_TYPE_LONGLONG MYSQL_TYPE_LONGLONG
-#define FIELD_TYPE_INT24 MYSQL_TYPE_INT24
-#define FIELD_TYPE_DATE MYSQL_TYPE_DATE
-#define FIELD_TYPE_TIME MYSQL_TYPE_TIME
-#define FIELD_TYPE_DATETIME MYSQL_TYPE_DATETIME
-#define FIELD_TYPE_YEAR MYSQL_TYPE_YEAR
-#define FIELD_TYPE_NEWDATE MYSQL_TYPE_NEWDATE
-#define FIELD_TYPE_ENUM MYSQL_TYPE_ENUM
-#define FIELD_TYPE_SET MYSQL_TYPE_SET
-#define FIELD_TYPE_TINY_BLOB MYSQL_TYPE_TINY_BLOB
-#define FIELD_TYPE_MEDIUM_BLOB MYSQL_TYPE_MEDIUM_BLOB
-#define FIELD_TYPE_LONG_BLOB MYSQL_TYPE_LONG_BLOB
-#define FIELD_TYPE_BLOB MYSQL_TYPE_BLOB
-#define FIELD_TYPE_VAR_STRING MYSQL_TYPE_VAR_STRING
-#define FIELD_TYPE_STRING MYSQL_TYPE_STRING
-#define FIELD_TYPE_CHAR MYSQL_TYPE_TINY
-#define FIELD_TYPE_INTERVAL MYSQL_TYPE_ENUM
-#define FIELD_TYPE_GEOMETRY MYSQL_TYPE_GEOMETRY
-#define FIELD_TYPE_BIT MYSQL_TYPE_BIT
+#define FIELD_TYPE_DECIMAL MYSQL_TYPE_DECIMAL
+#define FIELD_TYPE_NEWDECIMAL MYSQL_TYPE_NEWDECIMAL
+#define FIELD_TYPE_TINY MYSQL_TYPE_TINY
+#define FIELD_TYPE_SHORT MYSQL_TYPE_SHORT
+#define FIELD_TYPE_LONG MYSQL_TYPE_LONG
+#define FIELD_TYPE_FLOAT MYSQL_TYPE_FLOAT
+#define FIELD_TYPE_DOUBLE MYSQL_TYPE_DOUBLE
+#define FIELD_TYPE_NULL MYSQL_TYPE_NULL
+#define FIELD_TYPE_TIMESTAMP MYSQL_TYPE_TIMESTAMP
+#define FIELD_TYPE_LONGLONG MYSQL_TYPE_LONGLONG
+#define FIELD_TYPE_INT24 MYSQL_TYPE_INT24
+#define FIELD_TYPE_DATE MYSQL_TYPE_DATE
+#define FIELD_TYPE_TIME MYSQL_TYPE_TIME
+#define FIELD_TYPE_DATETIME MYSQL_TYPE_DATETIME
+#define FIELD_TYPE_YEAR MYSQL_TYPE_YEAR
+#define FIELD_TYPE_NEWDATE MYSQL_TYPE_NEWDATE
+#define FIELD_TYPE_ENUM MYSQL_TYPE_ENUM
+#define FIELD_TYPE_SET MYSQL_TYPE_SET
+#define FIELD_TYPE_TINY_BLOB MYSQL_TYPE_TINY_BLOB
+#define FIELD_TYPE_MEDIUM_BLOB MYSQL_TYPE_MEDIUM_BLOB
+#define FIELD_TYPE_LONG_BLOB MYSQL_TYPE_LONG_BLOB
+#define FIELD_TYPE_BLOB MYSQL_TYPE_BLOB
+#define FIELD_TYPE_VAR_STRING MYSQL_TYPE_VAR_STRING
+#define FIELD_TYPE_STRING MYSQL_TYPE_STRING
+#define FIELD_TYPE_CHAR MYSQL_TYPE_TINY
+#define FIELD_TYPE_INTERVAL MYSQL_TYPE_ENUM
+#define FIELD_TYPE_GEOMETRY MYSQL_TYPE_GEOMETRY
+#define FIELD_TYPE_BIT MYSQL_TYPE_BIT
#define NOT_NULL_FLAG 1
#define PRI_KEY_FLAG 2
@@ -221,7 +220,7 @@
#define BLOB_FLAG 16
#define UNSIGNED_FLAG 32
#define ZEROFILL_FLAG 64
-#define BINARY_FLAG 128
+#define BINARY_FLAG 128
#define ENUM_FLAG 256
#define AUTO_INCREMENT_FLAG 512
#define TIMESTAMP_FLAG 1024
@@ -241,7 +240,7 @@
/-----> CONN_CLOSE <---------------\
| ^ \
| | \
- CONN_READY -> CONN_QUERY_SENT -> CONN_FETCHING_DATA
+ CONN_READY -> CONN_QUERY_SENT -> CONN_FETCHING_DATA
^ |
\-------------------------------------/
*/
@@ -261,7 +260,7 @@
MYSQLND_STMT_PREPARED,
MYSQLND_STMT_EXECUTED,
MYSQLND_STMT_WAITING_USE_OR_STORE,
- MYSQLND_STMT_FETCH_FINISHED,
+ MYSQLND_STMT_USE_OR_STORE_CALLED,
MYSQLND_STMT_USER_FETCHING, /* fetch_row_buff or fetch_row_unbuf */
} enum_mysqlnd_stmt_state;
@@ -380,8 +379,8 @@
uint char_minlen;
uint char_maxlen;
uint dangerous_for_escape_backslash;
- uint (*mb_charlen)(uint c);
- uint (*mb_valid)(const char *start, const char *end);
+ uint (*mb_charlen)(uint c);
+ uint (*mb_valid)(const char *start, const char *end);
} MYSQLND_CHARSET;
@@ -427,9 +426,9 @@
typedef struct st_mysqlnd_connection MYSQLND;
typedef struct st_mysqlnd_res MYSQLND_RES;
-typedef char** MYSQLND_ROW; /* return data as array of strings */
+typedef char** MYSQLND_ROW; /* return data as array of strings */
typedef struct st_mysqlnd_stmt MYSQLND_STMT;
-typedef unsigned int MYSQLND_FIELD_OFFSET;
+typedef unsigned int MYSQLND_FIELD_OFFSET;
typedef struct st_mysqlnd_param_bind MYSQLND_PARAM_BIND;
@@ -440,7 +439,7 @@
typedef enum_func_status (*mysqlnd_fetch_row_func)(MYSQLND_RES *result,
void *param,
unsigned int flags,
- zend_bool *fetched_anything
+ zend_bool *fetched_anything
TSRMLS_DC);
typedef struct st_mysqlnd_stats {
@@ -468,43 +467,43 @@
MYSQLND_RES * (*use_result)(MYSQLND * const conn TSRMLS_DC);
MYSQLND_RES * (*store_result)(MYSQLND * const conn TSRMLS_DC);
enum_func_status (*next_result)(MYSQLND * const conn TSRMLS_DC);
- zend_bool (*more_results)(const MYSQLND * const conn);
+ zend_bool (*more_results)(const MYSQLND * const conn);
- MYSQLND_STMT * (*stmt_init)(MYSQLND * const conn);
+ MYSQLND_STMT * (*stmt_init)(MYSQLND * const conn);
- enum_func_status (*shutdown_server)(MYSQLND *conn, unsigned long level TSRMLS_DC);
- enum_func_status (*refresh_server)(MYSQLND *conn, unsigned long options TSRMLS_DC);
+ enum_func_status (*shutdown_server)(MYSQLND *conn, unsigned long level TSRMLS_DC);
+ enum_func_status (*refresh_server)(MYSQLND *conn, unsigned long options TSRMLS_DC);
- enum_func_status (*ping)(MYSQLND *conn TSRMLS_DC);
- enum_func_status (*kill_connection)(MYSQLND *conn, unsigned long pid TSRMLS_DC);
- enum_func_status (*select_db)(MYSQLND *conn, const char * const db, unsigned int db_len
TSRMLS_DC);
+ enum_func_status (*ping)(MYSQLND *conn TSRMLS_DC);
+ enum_func_status (*kill_connection)(MYSQLND *conn, unsigned long pid TSRMLS_DC);
+ enum_func_status (*select_db)(MYSQLND *conn, const char * const db, unsigned int db_len
TSRMLS_DC);
enum_func_status (*server_dump_debug_information)(MYSQLND *conn TSRMLS_DC);
- enum_func_status (*change_user)(MYSQLND *conn, const char * user, const char * passwd,
const char * db TSRMLS_DC);
+ enum_func_status (*change_user)(MYSQLND *conn, const char * user, const char * passwd,
const char * db TSRMLS_DC);
- unsigned int (*get_error_no)(const MYSQLND * const conn);
- const char * (*get_error_str)(const MYSQLND * const conn);
- const char * (*get_sqlstate)(const MYSQLND * const conn);
+ unsigned int (*get_error_no)(const MYSQLND * const conn);
+ const char * (*get_error_str)(const MYSQLND * const conn);
+ const char * (*get_sqlstate)(const MYSQLND * const conn);
mynd_ulonglong (*get_thread_id)(const MYSQLND * const conn);
void (*get_statistics)(MYSQLND *conn, zval *return_value TSRMLS_DC
ZEND_FILE_LINE_DC);
unsigned long (*get_server_version)(const MYSQLND * const conn);
const char * (*get_server_information)(const MYSQLND * const conn);
- enum_func_status (*get_server_statistics)(MYSQLND *conn, char **message, unsigned int *
message_len TSRMLS_DC);
+ enum_func_status (*get_server_statistics)(MYSQLND *conn, char **message, unsigned int *
message_len TSRMLS_DC);
const char * (*get_host_information)(const MYSQLND * const conn);
unsigned int (*get_protocol_information)(const MYSQLND * const conn);
const char * (*get_last_message)(const MYSQLND * const conn);
- mynd_ulonglong (*get_last_insert_id)(const MYSQLND * const conn);
+ mynd_ulonglong (*get_last_insert_id)(const MYSQLND * const conn);
mynd_ulonglong (*get_affected_rows)(const MYSQLND * const conn);
- unsigned int (*get_warning_count)(const MYSQLND * const conn);
+ unsigned int (*get_warning_count)(const MYSQLND * const conn);
- unsigned int (*get_field_count)(const MYSQLND * const conn);
+ unsigned int (*get_field_count)(const MYSQLND * const conn);
- enum_func_status (*set_server_option)(MYSQLND * const conn, enum_mysqlnd_server_option
option TSRMLS_DC);
+ enum_func_status (*set_server_option)(MYSQLND * const conn, enum_mysqlnd_server_option
option TSRMLS_DC);
enum_func_status (*set_client_option)(MYSQLND * const conn, enum_mysqlnd_option option,
const char * const value);
- void (*free_contents)(MYSQLND *conn TSRMLS_DC); /* private */
+ void (*free_contents)(MYSQLND *conn TSRMLS_DC); /* private */
enum_func_status (*close)(MYSQLND *conn TSRMLS_DC);
- void (*dtor)(MYSQLND *conn TSRMLS_DC); /* private */
+ void (*dtor)(MYSQLND *conn TSRMLS_DC); /* private */
};
@@ -576,7 +575,7 @@
char *host_info;
unsigned char *scramble;
const MYSQLND_CHARSET *charset;
- MYSQLND_INFILE infile;
+ MYSQLND_INFILE infile;
unsigned int protocol_version;
unsigned long max_packet_size;
unsigned int port;
@@ -769,7 +768,7 @@
#define mysqlnd_get_client_stats(values) _mysqlnd_get_client_stats((values) TSRMLS_CC
ZEND_FILE_LINE_CC)
#define mysqlnd_close(conn) (conn)->m->close(conn TSRMLS_CC)
-#define mysqlnd_query(conn, query_str, query_len) (conn)->m->query((conn),
(query_str), (query_len) TSRMLS_CC)
+#define mysqlnd_query(conn, query_str, query_len) (conn)->m->query((conn),
(query_str), (query_len) TSRMLS_CC)
#define mysqlnd_unbuffered_skip_result(result) (result)->m.skip_result((result)
TSRMLS_CC)
@@ -838,7 +837,7 @@
#define mysqlnd_insert_id(conn) (conn)->m->get_last_insert_id((conn))
#define mysqlnd_affected_rows(conn) (conn)->m->get_affected_rows((conn))
#define mysqlnd_warning_count(conn) (conn)->m->get_warning_count((conn))
-#define mysqlnd_info(conn) (conn)->m->get_last_message((conn))
+#define mysqlnd_info(conn) (conn)->m->get_last_message((conn))
#define mysqlnd_get_server_info(conn) (conn)->m->get_server_information((conn))
#define mysqlnd_get_host_info(conn) (conn)->m->get_host_information((conn))
#define mysqlnd_get_proto_info(conn) (conn)->m->get_protocol_information((conn))
@@ -888,14 +887,14 @@
#define mysqlnd_commit(conn) (conn)->m->query((conn), "COMMIT",
sizeof("COMMIT")-1 TSRMLS_CC)
#define mysqlnd_rollback(conn) (conn)->m->query((conn), "ROLLBACK",
sizeof("ROLLBACK")-1 TSRMLS_CC)
#define
mysqlnd_dump_debug_info(conn) (conn)->m->server_dump_debug_information((conn)
TSRMLS_CC)
-#define mysqlnd_select_db(conn, db, db_len) (conn)->m->select_db((conn), (db),
(db_len) TSRMLS_CC)
+#define mysqlnd_select_db(conn, db, db_len) (conn)->m->select_db((conn), (db),
(db_len) TSRMLS_CC)
#define mysqlnd_ping(conn) (conn)->m->ping((conn) TSRMLS_CC)
#define mysqlnd_kill(conn, pid) (conn)->m->kill_connection((conn), (pid)
TSRMLS_CC)
#define mysqlnd_refresh(conn, options) (conn)->m->refresh_server((conn), (options)
TSRMLS_CC)
#define mysqlnd_shutdown(conn, level) (conn)->m->shutdown_server((conn), (level)
TSRMLS_CC)
#define mysqlnd_get_server_version(conn) (conn)->m->get_server_version((conn))
-#define mysqlnd_set_charset(conn, charset) (conn)->m->set_charset((conn),
(charset) TSRMLS_CC)
-#define mysqlnd_stat(conn, msg, msg_len) (conn)->m->get_server_statistics((conn),
(msg), (msg_len) TSRMLS_CC)
+#define mysqlnd_set_charset(conn, charset) (conn)->m->set_charset((conn), (charset)
TSRMLS_CC)
+#define mysqlnd_stat(conn, msg, msg_len) (conn)->m->get_server_statistics((conn),
(msg), (msg_len) TSRMLS_CC)
#define mysqlnd_options(conn, opt, value) (conn)->m->set_client_option((conn),
(opt), (value))
#define mysqlnd_set_server_option(conn, op) (conn)->m->set_server_option((conn),
(op) TSRMLS_CC)
@@ -908,9 +907,9 @@
#define mysqlnd_stmt_init(conn) (conn)->m->stmt_init((conn))
#define mysqlnd_stmt_store_result(stmt) ((stmt)->m->store_result((stmt)
TSRMLS_CC)? PASS:FAIL)
#define mysqlnd_stmt_data_seek(stmt, row) (stmt)->m->seek_data((stmt), (row))
-#define mysqlnd_stmt_prepare(stmt, q, qlen) (stmt)->m->prepare((stmt), (q), (qlen)
TSRMLS_CC)
+#define mysqlnd_stmt_prepare(stmt, q, qlen) (stmt)->m->prepare((stmt), (q), (qlen)
TSRMLS_CC)
#define mysqlnd_stmt_execute(stmt) (stmt)->m->execute((stmt) TSRMLS_CC)
-#define mysqlnd_stmt_send_long_data(s,p,d,l) (s)->m->send_long_data((stmt), (p),
(d), (l) TSRMLS_CC)
+#define mysqlnd_stmt_send_long_data(s,p,d,l) (s)->m->send_long_data((s), (p), (d),
(l) TSRMLS_CC)
#define mysqlnd_stmt_bind_param(stmt,bind) (stmt)->m->bind_param((stmt), (bind))
#define mysqlnd_stmt_bind_result(stmt,bind) (stmt)->m->bind_result((stmt), (bind))
@@ -939,7 +938,7 @@
void * mysqlnd_palloc_get_zval(MYSQLND_ZVAL_PCACHE * const cache, zend_bool
*allocated);
void mysqlnd_palloc_zval_ptr_dtor(zval **zv, MYSQLND_ZVAL_PCACHE * const cache,
zend_bool ps,
- zend_bool *copy_ctor_called);
+ zend_bool *copy_ctor_called);
void mysqlnd_palloc_stats(const MYSQLND_ZVAL_PCACHE * const cache, zval
*return_value);
#endif /* MYSQLND_H */
Modified: trunk/ext/mysqli/mysqlnd/mysqlnd_ps.c
===================================================================
--- trunk/ext/mysqli/mysqlnd/mysqlnd_ps.c 2007-03-03 01:52:42 UTC (rev 83)
+++ trunk/ext/mysqli/mysqlnd/mysqlnd_ps.c 2007-03-03 02:30:39 UTC (rev 84)
@@ -155,7 +155,7 @@
if (PASS == ret) {
/* Position at the first row */
result->data_cursor = result->data;
- stmt->state = MYSQLND_STMT_FETCH_FINISHED;
+ stmt->state = MYSQLND_STMT_USE_OR_STORE_CALLED;
/* No multithreading issues as we don't share the connection :) */
} else {
mysqlnd_internal_free_result_contents(stmt->result);
@@ -258,8 +258,16 @@
SET_ERROR_AFF_ROWS(stmt->conn);
if (stmt->state > MYSQLND_STMT_INITTED) {
- /* close previously alloced resources and prepare the new statement */
- /* This should free param_bind and result_bind and set to NULL !!! */
+ /* See if we have to clean the wire */
+ if (stmt->state == MYSQLND_STMT_WAITING_USE_OR_STORE) {
+ /* Do implicit use_result and then flush the result */
+ stmt->default_rset_handler = _mysqlnd_stmt_use_result;
+ stmt->default_rset_handler(stmt TSRMLS_CC);
+ }
+ /* No 'else' here please :) */
+ if (stmt->state > MYSQLND_STMT_WAITING_USE_OR_STORE) {
+ stmt->result->m.skip_result(stmt->result TSRMLS_CC);
+ }
/*
Create a new test statement, which we will prepare, but if anything
fails, we will scrap it.
@@ -502,7 +510,7 @@
return FAIL;
}
/* Let the row packet fill our buffer and skip additional malloc + memcpy */
- row_packet->skip_extraction = stmt? TRUE:FALSE;
+ row_packet->skip_extraction = stmt? FALSE:TRUE;
/*
If we skip rows (row == NULL) we have to
@@ -583,7 +591,7 @@
MYSQLND_INC_CONN_STATISTIC(&stmt->conn->stats, STAT_PS_UNBUFFERED_SETS);
- result = stmt->result;
+ result = stmt->result;
result->type = MYSQLND_RES_PS;
result->m.fetch_row = stmt->cursor_exists? mysqlnd_fetch_stmt_row_cursor:
mysqlnd_stmt_fetch_row_unbuffered;
@@ -602,7 +610,7 @@
result->row_packet->fields_metadata = stmt->result->fields;
result->lengths = NULL;
- stmt->state = MYSQLND_STMT_FETCH_FINISHED;
+ stmt->state = MYSQLND_STMT_USE_OR_STORE_CALLED;
/* No multithreading issues as we don't share the connection :) */
@@ -656,7 +664,7 @@
stmt->result_bind[i].zv has been already destructed
in mysqlnd_unbuffered_free_last_data()
*/
-
+
if (IS_NULL != (Z_TYPE_P(stmt->result_bind[i].zv) = Z_TYPE_P(data)) ) {
stmt->result_bind[i].zv->value = data->value;
if ((Z_TYPE_P(data) == IS_STRING || Z_TYPE_P(data) == IS_UNICODE)
@@ -713,7 +721,7 @@
stmt->default_rset_handler(stmt TSRMLS_CC);
}
/* no else please */
- if (stmt->state == MYSQLND_STMT_FETCH_FINISHED) {
+ if (stmt->state == MYSQLND_STMT_USE_OR_STORE_CALLED) {
unsigned int i;
/*
mysqlnd_stmt_store_result() has been called free the bind
@@ -822,7 +830,7 @@
}
if (param_no >= stmt->param_count) {
SET_STMT_ERROR(stmt, CR_INVALID_PARAMETER_NO, UNKNOWN_SQLSTATE, "Invalid parameter
number");
- return FAIL;
+ return FAIL;
}
if (stmt->param_bind[param_no].type != MYSQL_TYPE_LONG_BLOB) {
SET_STMT_ERROR(stmt, CR_INVALID_BUFFER_USE, UNKNOWN_SQLSTATE,
mysqlnd_not_bound_as_blob);
@@ -830,22 +838,22 @@
}
/*
- XXX: Unfortunately we have to allocate additional buffer to be able the
- additional data, which is like a header inside the payload.
- This should be optimised, but it will be a pervasive change, so
- mysqlnd_simple_command() will accept not a buffer, but actually MYSQLND_STRING*
- terminated by NULL, to send. If the strings are not big, we can collapse them
- on the buffer every connection has, but otherwise we will just send them
- one by one to the wire.
+ XXX: Unfortunately we have to allocate additional buffer to be able the
+ additional data, which is like a header inside the payload.
+ This should be optimised, but it will be a pervasive change, so
+ mysqlnd_simple_command() will accept not a buffer, but actually MYSQLND_STRING*
+ terminated by NULL, to send. If the strings are not big, we can collapse them
+ on the buffer every connection has, but otherwise we will just send them
+ one by one to the wire.
*/
-
+
if (conn->state == CONN_READY) {
stmt->param_bind[param_no].flags |= MYSQLND_PARAM_BIND_BLOB_USED;
cmd_buf = emalloc(packet_len = STMT_ID_LENGTH + 2 + length);
-
+
int4store(cmd_buf, stmt->stmt_id);
int2store(cmd_buf + 4, param_no);
-
+
ret = mysqlnd_simple_command(conn, COM_STMT_SEND_LONG_DATA,
(char *)cmd_buf, packet_len,
PROT_LAST /* COM_STMT_SEND_LONG_DATA doesn't send an OK packet*/,
@@ -1109,7 +1117,7 @@
if (stmt->state == MYSQLND_STMT_WAITING_USE_OR_STORE) {
/* Do implicit use_result and then flush the result */
- stmt->default_rset_handler = _mysqlnd_stmt_store_result;
+ stmt->default_rset_handler = _mysqlnd_stmt_use_result;
stmt->default_rset_handler(stmt TSRMLS_CC);
}
| Thread |
|---|
| • PHP mysqlnd svn commit: r84 - trunk/ext/mysqli/mysqlnd | ahristov | 3 Mar |