List:Commits« Previous MessageNext Message »
From:ahristov Date:March 3 2007 2:30am
Subject:PHP mysqlnd svn commit: r84 - trunk/ext/mysqli/mysqlnd
View as plain text  
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/mysqlndahristov3 Mar