com php-src: Add more info to the calls: - let the callee knows whether it was called directly or indirectly - two NULL zval * parameters for future
extension in a pecl plugin: ext/mysqlnd/mysqlnd.c ext/mysqlnd/mysqlnd.h ext/mysqlnd/mysqlnd_enum_n_def.h ext/mysqlnd/mysqlnd _structs.h
| From: | Andrey Hristov | Date: | Tue, 07 Apr 2015 18:45:17 +0000 |
| Subject: | com php-src: Add more info to the calls: - let the callee knows whether it was called directly or indirectly - two NULL zval * parameters for future extension in a pecl plugin: ext/mysqlnd/mysqlnd.c ext/mysqlnd/mysqlnd.h ext/mysqlnd/mysqlnd_enum_n_def.h ext/mysqlnd/mysqlnd _structs.h |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-86117@lists.php.net to get a copy of this message | ||
Commit: a970ae76e27618c81add2a92370280818a04ac16
Author: Andrey Hristov <andrey@php.net> Tue, 7 Apr 2015 20:45:17 +0200
Parents: 624552c3d70a8622b1dbad41dc67acf8ec197100
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=a970ae76e27618c81add2a92370280818a04ac16
Log:
Add more info to the calls:
- let the callee knows whether it was called directly or indirectly
- two NULL zval * parameters for future extension in a pecl plugin
Changed paths:
M ext/mysqlnd/mysqlnd.c
M ext/mysqlnd/mysqlnd.h
M ext/mysqlnd/mysqlnd_enum_n_def.h
M ext/mysqlnd/mysqlnd_structs.h
Diff:
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c
index b1a8421..37794cc 100644
--- a/ext/mysqlnd/mysqlnd.c
+++ b/ext/mysqlnd/mysqlnd.c
@@ -1183,8 +1183,8 @@ MYSQLND_METHOD(mysqlnd_conn_data, query)(MYSQLND_CONN_DATA * conn, const char
*
DBG_INF_FMT("conn=%p conn=%llu query=%s", conn, conn->thread_id, query);
if (PASS == conn->m->local_tx_start(conn, this_func)) {
- if (PASS == conn->m->send_query(conn, query, query_len) &&
- PASS == conn->m->reap_query(conn))
+ if (PASS == conn->m->send_query(conn, query, query_len, MYSQLND_SEND_QUERY_IMPLICIT, NULL,
NULL) &&
+ PASS == conn->m->reap_query(conn, MYSQLND_REAP_RESULT_IMPLICIT))
{
ret = PASS;
if (conn->last_query_type == QUERY_UPSERT &&
conn->upsert_status->affected_rows) {
@@ -1200,7 +1200,8 @@ MYSQLND_METHOD(mysqlnd_conn_data, query)(MYSQLND_CONN_DATA * conn, const char
*
/* {{{ mysqlnd_conn_data::send_query */
static enum_func_status
-MYSQLND_METHOD(mysqlnd_conn_data, send_query)(MYSQLND_CONN_DATA * conn, const char * query,
unsigned int query_len)
+MYSQLND_METHOD(mysqlnd_conn_data, send_query)(MYSQLND_CONN_DATA * conn, const char * query,
unsigned int query_len,
+ enum_mysqlnd_send_query_type type, zval *read_cb, zval *err_cb)
{
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_data_methods, send_query);
enum_func_status ret = FAIL;
@@ -1210,8 +1211,8 @@ MYSQLND_METHOD(mysqlnd_conn_data, send_query)(MYSQLND_CONN_DATA * conn, const
ch
if (PASS == conn->m->local_tx_start(conn, this_func)) {
ret = conn->m->simple_command(conn, COM_QUERY, (zend_uchar *) query, query_len,
- PROT_LAST /* we will handle the OK packet*/,
- FALSE, FALSE);
+ PROT_LAST /* we will handle the OK packet*/,
+ FALSE, FALSE);
if (PASS == ret) {
CONN_SET_STATE(conn, CONN_QUERY_SENT);
}
@@ -1225,7 +1226,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, send_query)(MYSQLND_CONN_DATA * conn, const
ch
/* {{{ mysqlnd_conn_data::reap_query */
static enum_func_status
-MYSQLND_METHOD(mysqlnd_conn_data, reap_query)(MYSQLND_CONN_DATA * conn)
+MYSQLND_METHOD(mysqlnd_conn_data, reap_query)(MYSQLND_CONN_DATA * conn,
enum_mysqlnd_reap_result_type type)
{
size_t this_func = STRUCT_OFFSET(struct st_mysqlnd_conn_data_methods, reap_query);
enum_mysqlnd_connection_state state = CONN_GET_STATE(conn);
diff --git a/ext/mysqlnd/mysqlnd.h b/ext/mysqlnd/mysqlnd.h
index 2e284ca..da8e39d 100644
--- a/ext/mysqlnd/mysqlnd.h
+++ b/ext/mysqlnd/mysqlnd.h
@@ -113,9 +113,9 @@ PHPAPI void _mysqlnd_debug(const char *mode);
#define mysqlnd_close(conn,is_forced) (conn)->m->close((conn), (is_forced))
#define mysqlnd_query(conn, query_str,
query_len) ((conn)->data)->m->query((conn)->data, (query_str), (query_len))
-#define mysqlnd_async_query(conn, query_str,
query_len) ((conn)->data)->m->send_query((conn)->data, (query_str), (query_len))
+#define mysqlnd_async_query(conn, query_str,
query_len) ((conn)->data)->m->send_query((conn)->data, (query_str), (query_len),
MYSQLND_SEND_QUERY_EXPLICIT, NULL, NULL)
#define mysqlnd_poll(r, err, d_pull,sec,usec,desc_num) _mysqlnd_poll((r), (err), (d_pull), (sec),
(usec), (desc_num))
-#define mysqlnd_reap_async_query(conn) ((conn)->data)->m->reap_query((conn)->data)
+#define mysqlnd_reap_async_query(conn) ((conn)->data)->m->reap_query((conn)->data,
MYSQLND_REAP_RESULT_EXPLICIT)
#define mysqlnd_unbuffered_skip_result(result) (result)->m.skip_result((result))
PHPAPI enum_func_status _mysqlnd_poll(MYSQLND **r_array, MYSQLND **e_array, MYSQLND ***dont_poll,
long sec, long usec, int * desc_num);
diff --git a/ext/mysqlnd/mysqlnd_enum_n_def.h b/ext/mysqlnd/mysqlnd_enum_n_def.h
index 526dce1..e98bffc 100644
--- a/ext/mysqlnd/mysqlnd_enum_n_def.h
+++ b/ext/mysqlnd/mysqlnd_enum_n_def.h
@@ -156,6 +156,18 @@ typedef enum mysqlnd_res_type
MYSQLND_RES_PS_UNBUF
} enum_mysqlnd_res_type;
+typedef enum mysqlnd_send_query_type
+{
+ MYSQLND_SEND_QUERY_IMPLICIT = 0,
+ MYSQLND_SEND_QUERY_EXPLICIT
+} enum_mysqlnd_send_query_type;
+
+typedef enum mysqlnd_reap_result_type
+{
+ MYSQLND_REAP_RESULT_IMPLICIT = 0,
+ MYSQLND_REAP_RESULT_EXPLICIT
+} enum_mysqlnd_reap_result_type;
+
typedef enum mysqlnd_option
{
MYSQL_OPT_CONNECT_TIMEOUT,
diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h
index fc04375..73dfaa8 100644
--- a/ext/mysqlnd/mysqlnd_structs.h
+++ b/ext/mysqlnd/mysqlnd_structs.h
@@ -417,8 +417,8 @@ typedef enum_func_status (*func_mysqlnd_conn_data__connect)(MYSQLND_CONN_DATA *
typedef zend_ulong (*func_mysqlnd_conn_data__escape_string)(MYSQLND_CONN_DATA * const conn, char
*newstr, const char *escapestr, size_t escapestr_len);
typedef enum_func_status (*func_mysqlnd_conn_data__set_charset)(MYSQLND_CONN_DATA * const conn,
const char * const charset);
typedef enum_func_status (*func_mysqlnd_conn_data__query)(MYSQLND_CONN_DATA * conn, const char *
query, unsigned int query_len);
-typedef enum_func_status (*func_mysqlnd_conn_data__send_query)(MYSQLND_CONN_DATA * conn, const char
*query, unsigned int query_len);
-typedef enum_func_status (*func_mysqlnd_conn_data__reap_query)(MYSQLND_CONN_DATA * conn);
+typedef enum_func_status (*func_mysqlnd_conn_data__send_query)(MYSQLND_CONN_DATA * conn, const char
*query, unsigned int query_len, enum_mysqlnd_send_query_type type, zval *read_cb, zval *err_cb);
+typedef enum_func_status (*func_mysqlnd_conn_data__reap_query)(MYSQLND_CONN_DATA * conn,
enum_mysqlnd_reap_result_type type);
typedef MYSQLND_RES * (*func_mysqlnd_conn_data__use_result)(MYSQLND_CONN_DATA * const conn, const
unsigned int flags);
typedef MYSQLND_RES * (*func_mysqlnd_conn_data__store_result)(MYSQLND_CONN_DATA * const conn,
const unsigned int flags);
typedef enum_func_status (*func_mysqlnd_conn_data__next_result)(MYSQLND_CONN_DATA * const conn);