diff options
author | Andrey Hristov <andrey@php.net> | 2015-04-07 20:45:17 +0200 |
---|---|---|
committer | Andrey Hristov <andrey@php.net> | 2015-04-07 20:45:17 +0200 |
commit | a970ae76e27618c81add2a92370280818a04ac16 (patch) | |
tree | 9df5c537aa5b0860f3a4d48322732d4354577dc2 /ext/mysqlnd | |
parent | 624552c3d70a8622b1dbad41dc67acf8ec197100 (diff) | |
download | php-git-a970ae76e27618c81add2a92370280818a04ac16.tar.gz |
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
Diffstat (limited to 'ext/mysqlnd')
-rw-r--r-- | ext/mysqlnd/mysqlnd.c | 13 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd.h | 4 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_enum_n_def.h | 12 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_structs.h | 4 |
4 files changed, 23 insertions, 10 deletions
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index b1a84217f2..37794cc8ee 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 2e284ca1a5..da8e39de22 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 526dce1728..e98bffc639 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 fc043754d5..73dfaa80c5 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); |