diff options
-rw-r--r-- | ext/mysqlnd/mysqlnd.c | 93 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd.h | 21 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_portability.h | 8 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_priv.h | 4 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_ps.c | 2 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_ps_codec.c | 13 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_result.c | 2 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_result_meta.c | 14 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_statistics.h | 116 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_wireprotocol.c | 7 | ||||
-rw-r--r-- | ext/mysqlnd/mysqlnd_wireprotocol.h | 2 |
11 files changed, 176 insertions, 106 deletions
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index b776339219..51abeafbb3 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -67,31 +67,37 @@ const char * mysqlnd_out_of_sync = "Commands out of sync; you can't run this com MYSQLND_STATS *mysqlnd_global_stats = NULL; static zend_bool mysqlnd_library_initted = FALSE; - /* {{{ mysqlnd_library_init */ -PHPAPI void mysqlnd_library_init() +static +void mysqlnd_library_init(zend_bool collect_statistics) { if (mysqlnd_library_initted == FALSE) { mysqlnd_library_initted = TRUE; _mysqlnd_init_ps_subsystem(); - mysqlnd_global_stats = calloc(1, sizeof(MYSQLND_STATS)); + if (collect_statistics) { + mysqlnd_global_stats = calloc(1, sizeof(MYSQLND_STATS)); + #ifdef ZTS - mysqlnd_global_stats->LOCK_access = tsrm_mutex_alloc(); + mysqlnd_global_stats->LOCK_access = tsrm_mutex_alloc(); #endif + } } } /* }}} */ /* {{{ mysqlnd_library_end */ -PHPAPI void mysqlnd_library_end() +static +void mysqlnd_library_end() { if (mysqlnd_library_initted == TRUE) { + if (mysqlnd_global_stats) { #ifdef ZTS - tsrm_mutex_free(mysqlnd_global_stats->LOCK_access); + tsrm_mutex_free(mysqlnd_global_stats->LOCK_access); #endif - free(mysqlnd_global_stats); - mysqlnd_global_stats = NULL; + free(mysqlnd_global_stats); + mysqlnd_global_stats = NULL; + } mysqlnd_library_initted = FALSE; } } @@ -1554,26 +1560,6 @@ static zend_function_entry mysqlnd_functions[] = { /* }}} */ -/* {{{ PHP_MINIT_FUNCTION - */ -PHP_MINIT_FUNCTION(mysqlnd) -{ - mysqlnd_library_init(); - return SUCCESS; -} -/* }}} */ - - -/* {{{ PHP_MSHUTDOWN_FUNCTION - */ -PHP_MSHUTDOWN_FUNCTION(mysqlnd) -{ - mysqlnd_library_end(); - return SUCCESS; -} -/* }}} */ - - /* {{{ mysqlnd_minfo_print_hash */ #if PHP_MAJOR_VERSION >= 6 PHPAPI void mysqlnd_minfo_print_hash(zval *values) @@ -1654,10 +1640,53 @@ PHP_MINFO_FUNCTION(mysqlnd) /* }}} */ +ZEND_DECLARE_MODULE_GLOBALS(mysqlnd) + +/* {{{ PHP_GINIT_FUNCTION + */ +static PHP_GINIT_FUNCTION(mysqlnd) +{ + mysqlnd_globals->collect_statistics = FALSE; +} +/* }}} */ + + +/* {{{ PHP_INI_BEGIN +*/ +PHP_INI_BEGIN() + STD_PHP_INI_BOOLEAN("mysqlnd.collect_statistics", "1", PHP_INI_SYSTEM, OnUpdateBool, collect_statistics, zend_mysqlnd_globals, mysqlnd_globals) +PHP_INI_END() +/* }}} */ + + +/* {{{ PHP_MINIT_FUNCTION + */ +PHP_MINIT_FUNCTION(mysqlnd) +{ + REGISTER_INI_ENTRIES(); + + mysqlnd_library_init(MYSQLND_G(collect_statistics)); + return SUCCESS; +} +/* }}} */ + + +/* {{{ PHP_MSHUTDOWN_FUNCTION + */ +PHP_MSHUTDOWN_FUNCTION(mysqlnd) +{ + mysqlnd_library_end(); + + UNREGISTER_INI_ENTRIES(); + return SUCCESS; +} +/* }}} */ + + /* {{{ mysqlnd_module_entry */ zend_module_entry mysqlnd_module_entry = { - STANDARD_MODULE_HEADER, + STANDARD_MODULE_HEADER, "mysqlnd", mysqlnd_functions, PHP_MINIT(mysqlnd), @@ -1666,7 +1695,11 @@ zend_module_entry mysqlnd_module_entry = { NULL, PHP_MINFO(mysqlnd), MYSQLND_VERSION, - STANDARD_MODULE_PROPERTIES + PHP_MODULE_GLOBALS(mysqlnd), + PHP_GINIT(mysqlnd), + NULL, + NULL, + STANDARD_MODULE_PROPERTIES_EX }; /* }}} */ diff --git a/ext/mysqlnd/mysqlnd.h b/ext/mysqlnd/mysqlnd.h index df75c62190..b6ca05454b 100644 --- a/ext/mysqlnd/mysqlnd.h +++ b/ext/mysqlnd/mysqlnd.h @@ -45,7 +45,9 @@ extern zend_module_entry mysqlnd_module_entry; on production systems, if of course measured performance degradation is not minimal. */ +#if PHP_DEBUG #define MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND 1 +#endif #include "mysqlnd_portability.h" @@ -400,6 +402,7 @@ struct st_mysqlnd_res_methods { struct st_mysqlnd_res_meta_methods { MYSQLND_FIELD * (*fetch_field)(MYSQLND_RES_METADATA * const meta); + MYSQLND_FIELD * (*fetch_field_direct)(const MYSQLND_RES_METADATA * const meta, MYSQLND_FIELD_OFFSET fieldnr); MYSQLND_FIELD_OFFSET (*field_tell)(const MYSQLND_RES_METADATA * const meta); enum_func_status (*read_metadata)(MYSQLND_RES_METADATA * const meta, MYSQLND *conn TSRMLS_DC); MYSQLND_RES_METADATA * (*clone_metadata)(const MYSQLND_RES_METADATA * const meta, zend_bool persistent); @@ -510,7 +513,7 @@ struct st_mysqlnd_connection { MYSQLND_THD_ZVAL_PCACHE *zval_cache; /* qcache */ - MYSQLND_QCACHE *qcache; + MYSQLND_QCACHE *qcache; /* stats */ MYSQLND_STATS stats; @@ -594,7 +597,6 @@ struct st_mysqlnd_res { /* zval cache */ MYSQLND_THD_ZVAL_PCACHE *zval_cache; - }; @@ -647,8 +649,6 @@ struct st_mysqlnd_stmt { /* Library related */ -PHPAPI void mysqlnd_library_init(); -PHPAPI void mysqlnd_library_end(); PHPAPI void mysqlnd_restart_psession(MYSQLND *conn); PHPAPI void mysqlnd_end_psession(MYSQLND *conn); PHPAPI void mysqlnd_minfo_print_hash(zval *values); @@ -904,6 +904,19 @@ MYSQLND_RES * mysqlnd_qcache_get(MYSQLND_QCACHE * const cache, const char * qu void mysqlnd_qcache_put(MYSQLND_QCACHE * const cache, char * query, size_t query_len, MYSQLND_RES_BUFFERED * const result, MYSQLND_RES_METADATA * const meta); + + +ZEND_BEGIN_MODULE_GLOBALS(mysqlnd) + zend_bool collect_statistics; +ZEND_END_MODULE_GLOBALS(mysqlnd) + +#ifdef ZTS +#define MYSQLND_G(v) TSRMG(mysqlnd_globals_id, zend_mysqlnd_globals *, v) +#else +#define MYSQLND_G(v) (mysqlnd_globals.v) +#endif + + #endif /* MYSQLND_H */ diff --git a/ext/mysqlnd/mysqlnd_portability.h b/ext/mysqlnd/mysqlnd_portability.h index 42e47897b2..37aeb67e21 100644 --- a/ext/mysqlnd/mysqlnd_portability.h +++ b/ext/mysqlnd/mysqlnd_portability.h @@ -153,11 +153,11 @@ typedef long longlong; (((uint32) (((uchar*) (A))[1])) << 16) +\ (((uint32) (((uchar*) (A))[0])) << 24))) -#define bit_uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\ - (((uint32) ((uchar) (A)[1])) << 8) +\ +#define bit_uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[4])) +\ + (((uint32) ((uchar) (A)[3])) << 8) +\ (((uint32) ((uchar) (A)[2])) << 16) +\ - (((uint32) ((uchar) (A)[3])) << 24)) +\ - (((ulonglong) ((uchar) (A)[4])) << 32)) + (((uint32) ((uchar) (A)[1])) << 24)) +\ + (((ulonglong) ((uchar) (A)[0])) << 32)) #define bit_uint6korr(A) ((ulonglong)(((uint32) (((uchar*) (A))[5])) +\ (((uint32) (((uchar*) (A))[4])) << 8) +\ diff --git a/ext/mysqlnd/mysqlnd_priv.h b/ext/mysqlnd/mysqlnd_priv.h index cea3887796..35a2e9b59b 100644 --- a/ext/mysqlnd/mysqlnd_priv.h +++ b/ext/mysqlnd/mysqlnd_priv.h @@ -134,7 +134,7 @@ { \ error_info.error_no = 0; \ error_info.error[0] = '\0'; \ - strcpy(error_info.sqlstate, "00000"); \ + strncpy(error_info.sqlstate, "00000", sizeof("00000") - 1); \ } #define SET_CLIENT_ERROR(error_info, a, b, c) \ @@ -176,7 +176,7 @@ void mysqlnd_stmt_execute_store_params(MYSQLND_STMT *stmt, zend_uchar **buf, zen void ps_fetch_from_1_to_8_bytes(zval *zv, const MYSQLND_FIELD * const field, uint pack_len, zend_uchar **row, zend_bool as_unicode, - unsigned int byte_count, zend_bool is_bit TSRMLS_DC); + unsigned int byte_count TSRMLS_DC); diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index 46d2435831..fad3f9fefe 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -992,6 +992,7 @@ MYSQLND_METHOD(mysqlnd_stmt, send_long_data)(MYSQLND_STMT * const stmt, unsigned Maybe we can make it automatic by checking what's the value of max_allowed_packet_size on the server and resending the data. */ +#ifdef MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND #if HAVE_USLEEP && !defined(PHP_WIN32) usleep(120000); #endif @@ -1004,6 +1005,7 @@ MYSQLND_METHOD(mysqlnd_stmt, send_long_data)(MYSQLND_STMT * const stmt, unsigned "Server responded to COM_STMT_SEND_LONG_DATA."); ret = FAIL; } +#endif } return ret; diff --git a/ext/mysqlnd/mysqlnd_ps_codec.c b/ext/mysqlnd/mysqlnd_ps_codec.c index 85676adbd5..993873f4b2 100644 --- a/ext/mysqlnd/mysqlnd_ps_codec.c +++ b/ext/mysqlnd/mysqlnd_ps_codec.c @@ -67,10 +67,11 @@ struct st_mysqlnd_perm_bind mysqlnd_ps_fetch_functions[MYSQL_TYPE_LAST + 1]; /* {{{ ps_fetch_from_1_to_8_bytes */ void ps_fetch_from_1_to_8_bytes(zval *zv, const MYSQLND_FIELD * const field, uint pack_len, zend_uchar **row, zend_bool as_unicode, - unsigned int byte_count, zend_bool is_bit TSRMLS_DC) + unsigned int byte_count TSRMLS_DC) { char tmp[22]; size_t tmp_len = 0; + zend_bool is_bit = field->type == MYSQL_TYPE_BIT; if (field->flags & UNSIGNED_FLAG) { my_uint64 uval = 0; @@ -154,7 +155,7 @@ void ps_fetch_int8(zval *zv, const MYSQLND_FIELD * const field, uint pack_len, zend_uchar **row, zend_bool as_unicode TSRMLS_DC) { - ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, 1, FALSE TSRMLS_CC); + ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, 1 TSRMLS_CC); #if 0 if (field->flags & UNSIGNED_FLAG) { ZVAL_LONG(zv, *(my_uint8*)*row); @@ -173,7 +174,7 @@ void ps_fetch_int16(zval *zv, const MYSQLND_FIELD * const field, uint pack_len, zend_uchar **row, zend_bool as_unicode TSRMLS_DC) { - ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, 2, FALSE TSRMLS_CC); + ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, 2 TSRMLS_CC); #if 0 if (field->flags & UNSIGNED_FLAG) { ZVAL_LONG(zv, (my_uint16) sint2korr(*row)); @@ -192,7 +193,7 @@ void ps_fetch_int32(zval *zv, const MYSQLND_FIELD * const field, uint pack_len, zend_uchar **row, zend_bool as_unicode TSRMLS_DC) { - ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, 4, FALSE TSRMLS_CC); + ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, 4 TSRMLS_CC); #if 0 if (field->flags & UNSIGNED_FLAG) { @@ -241,7 +242,7 @@ void ps_fetch_int64(zval *zv, const MYSQLND_FIELD * const field, uint pack_len, zend_uchar **row, zend_bool as_unicode TSRMLS_DC) { - ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, 8, FALSE TSRMLS_CC); + ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, 8 TSRMLS_CC); #if 0 my_uint64 llval = (my_uint64) sint8korr(*row); @@ -501,7 +502,7 @@ void ps_fetch_bit(zval *zv, const MYSQLND_FIELD * const field, zend_bool as_unicode TSRMLS_DC) { unsigned long length= php_mysqlnd_net_field_length(row); - ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, length, TRUE TSRMLS_CC); + ps_fetch_from_1_to_8_bytes(zv, field, pack_len, row, as_unicode, length TSRMLS_CC); } /* }}} */ diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c index e1027e7ae8..d06190b453 100644 --- a/ext/mysqlnd/mysqlnd_result.c +++ b/ext/mysqlnd/mysqlnd_result.c @@ -905,7 +905,7 @@ static MYSQLND_FIELD * MYSQLND_METHOD(mysqlnd_res, fetch_field_direct)(const MYSQLND_RES * const result, MYSQLND_FIELD_OFFSET fieldnr) { - return result->meta? &result->meta->fields[fieldnr]:NULL; + return result->meta? result->meta->m->fetch_field_direct(result->meta, fieldnr):NULL; } /* }}} */ diff --git a/ext/mysqlnd/mysqlnd_result_meta.c b/ext/mysqlnd/mysqlnd_result_meta.c index ba0b55a5a3..e434d143ca 100644 --- a/ext/mysqlnd/mysqlnd_result_meta.c +++ b/ext/mysqlnd/mysqlnd_result_meta.c @@ -358,7 +358,18 @@ MYSQLND_METHOD(mysqlnd_res_meta, fetch_field)(MYSQLND_RES_METADATA * const meta) } /* }}} */ -/* {{{ mysqlnd_res::field_tell */ + +/* {{{ mysqlnd_res_meta::fetch_field_direct */ +static MYSQLND_FIELD * +MYSQLND_METHOD(mysqlnd_res_meta, fetch_field_direct)(const MYSQLND_RES_METADATA * const meta, + MYSQLND_FIELD_OFFSET fieldnr) +{ + return &meta->fields[fieldnr]; +} +/* }}} */ + + +/* {{{ mysqlnd_res_meta::field_tell */ static MYSQLND_FIELD_OFFSET MYSQLND_METHOD(mysqlnd_res_meta, field_tell)(const MYSQLND_RES_METADATA * const meta) { @@ -369,6 +380,7 @@ MYSQLND_METHOD(mysqlnd_res_meta, field_tell)(const MYSQLND_RES_METADATA * const MYSQLND_CLASS_METHODS_START(mysqlnd_res_meta) MYSQLND_METHOD(mysqlnd_res_meta, fetch_field), + MYSQLND_METHOD(mysqlnd_res_meta, fetch_field_direct), MYSQLND_METHOD(mysqlnd_res_meta, field_tell), MYSQLND_METHOD(mysqlnd_res_meta, read_metadata), MYSQLND_METHOD(mysqlnd_res_meta, clone_metadata), diff --git a/ext/mysqlnd/mysqlnd_statistics.h b/ext/mysqlnd/mysqlnd_statistics.h index 08b28f36ed..2ac4f28d9e 100644 --- a/ext/mysqlnd/mysqlnd_statistics.h +++ b/ext/mysqlnd/mysqlnd_statistics.h @@ -30,86 +30,92 @@ extern MYSQLND_STATS *mysqlnd_global_stats; #define MYSQLND_INC_CONN_STATISTIC(conn_stats, statistic) \ { \ - tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ - mysqlnd_global_stats->values[statistic]++; \ - tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ - \ - if ((conn_stats)) { \ - ((MYSQLND_STATS *) conn_stats)->values[statistic]++; \ - } \ + if (mysqlnd_global_stats) { \ + tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ + mysqlnd_global_stats->values[statistic]++; \ + tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ + if ((conn_stats)) { \ + ((MYSQLND_STATS *) conn_stats)->values[statistic]++; \ + } \ + }\ } #define MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn_stats, statistic, value) \ { \ - my_uint64 v = (value); \ - \ - tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ - mysqlnd_global_stats->values[statistic]+= v; \ - tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ - \ - if ((conn_stats)) { \ - ((MYSQLND_STATS *) conn_stats)->values[statistic]+= v; \ - } \ - } + if (mysqlnd_global_stats) {\ + my_uint64 v = (value); \ + \ + tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ + mysqlnd_global_stats->values[statistic] += v; \ + tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ + if ((conn_stats)) { \ + ((MYSQLND_STATS *) conn_stats)->values[statistic]+= v; \ + } \ + }\ + } #define MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, statistic1, value1, statistic2, value2, statistic3, value3) \ { \ - my_uint64 v1 = (value1); \ - my_uint64 v2 = (value2); \ - my_uint64 v3 = (value3); \ - \ - tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ - mysqlnd_global_stats->values[statistic1]+= v1; \ - mysqlnd_global_stats->values[statistic2]+= v2; \ - mysqlnd_global_stats->values[statistic3]+= v3; \ - tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ - \ - if ((conn_stats)) { \ - ((MYSQLND_STATS *) conn_stats)->values[statistic1]+= v1; \ - ((MYSQLND_STATS *) conn_stats)->values[statistic2]+= v2; \ - ((MYSQLND_STATS *) conn_stats)->values[statistic3]+= v3; \ + if (mysqlnd_global_stats) { \ + my_uint64 v1 = (value1); \ + my_uint64 v2 = (value2); \ + my_uint64 v3 = (value3); \ + \ + tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ + mysqlnd_global_stats->values[statistic1]+= v1; \ + mysqlnd_global_stats->values[statistic2]+= v2; \ + mysqlnd_global_stats->values[statistic3]+= v3; \ + tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ + if ((conn_stats)) { \ + ((MYSQLND_STATS *) conn_stats)->values[statistic1]+= v1; \ + ((MYSQLND_STATS *) conn_stats)->values[statistic2]+= v2; \ + ((MYSQLND_STATS *) conn_stats)->values[statistic3]+= v3; \ + } \ } \ - } + } #else /* NON-ZTS */ #define MYSQLND_INC_CONN_STATISTIC(conn_stats, statistic) \ { \ - mysqlnd_global_stats->values[statistic]++; \ - \ - if ((conn_stats)) { \ - ((MYSQLND_STATS *) conn_stats)->values[statistic]++; \ + if (mysqlnd_global_stats) { \ + mysqlnd_global_stats->values[statistic]++; \ + if ((conn_stats)) { \ + ((MYSQLND_STATS *) conn_stats)->values[statistic]++; \ + } \ } \ } #define MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn_stats, statistic, value) \ { \ - my_uint64 v = (value); \ + my_uint64 v = (value); \ \ - mysqlnd_global_stats->values[statistic]+= v; \ - \ - if ((conn_stats)) { \ - ((MYSQLND_STATS *) conn_stats)->values[statistic]+= v; \ + if (mysqlnd_global_stats) { \ + mysqlnd_global_stats->values[statistic]+= v; \ + if ((conn_stats)) { \ + ((MYSQLND_STATS *) conn_stats)->values[statistic]+= v; \ + } \ } \ } #define MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, statistic1, value1, statistic2, value2, statistic3, value3) \ - { \ - my_uint64 v1 = (value1); \ - my_uint64 v2 = (value2); \ - my_uint64 v3 = (value3); \ - \ - mysqlnd_global_stats->values[statistic1]+= v1; \ - mysqlnd_global_stats->values[statistic2]+= v2; \ - mysqlnd_global_stats->values[statistic3]+= v3; \ - \ - if ((conn_stats)) { \ - ((MYSQLND_STATS *) conn_stats)->values[statistic1]+= v1; \ - ((MYSQLND_STATS *) conn_stats)->values[statistic2]+= v2; \ - ((MYSQLND_STATS *) conn_stats)->values[statistic3]+= v3; \ + { \ \ + if (mysqlnd_global_stats) { \ + my_uint64 v1 = (value1); \ + my_uint64 v2 = (value2); \ + my_uint64 v3 = (value3); \ + \ + mysqlnd_global_stats->values[statistic1]+= v1; \ + mysqlnd_global_stats->values[statistic2]+= v2; \ + mysqlnd_global_stats->values[statistic3]+= v3; \ + if ((conn_stats)) { \ + ((MYSQLND_STATS *) conn_stats)->values[statistic1]+= v1; \ + ((MYSQLND_STATS *) conn_stats)->values[statistic2]+= v2; \ + ((MYSQLND_STATS *) conn_stats)->values[statistic3]+= v3; \ + } \ } \ - } + } #endif diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c index 77f757e6c9..cdc029ab23 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.c +++ b/ext/mysqlnd/mysqlnd_wireprotocol.c @@ -164,6 +164,7 @@ zend_uchar *php_mysqlnd_net_store_length(zend_uchar *packet, mynd_ulonglong leng /* {{{ php_mysqlnd_consume_uneaten_data */ +#ifdef MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND size_t php_mysqlnd_consume_uneaten_data(MYSQLND * const conn, enum php_mysqlnd_server_command cmd TSRMLS_DC) { @@ -202,9 +203,9 @@ size_t php_mysqlnd_consume_uneaten_data(MYSQLND * const conn, enum php_mysqlnd_s return skipped_bytes; } +#endif /* }}} */ - /* {{{ php_mysqlnd_read_error_from_line */ static enum_func_status php_mysqlnd_read_error_from_line(zend_uchar *buf, size_t buf_len, @@ -826,7 +827,7 @@ size_t php_mysqlnd_cmd_write(void *_packet, MYSQLND *conn TSRMLS_DC) */ net->packet_no = 0; -#if MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND +#ifdef MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND php_mysqlnd_consume_uneaten_data(conn, packet->command TSRMLS_CC); #endif @@ -1352,7 +1353,7 @@ void php_mysqlnd_rowp_read_text_protocol(php_mysql_packet_row *packet, MYSQLND * */ zend_uchar *start = bit_area; ps_fetch_from_1_to_8_bytes(*current_field, &(packet->fields_metadata[i]), - 0, &p, as_unicode, len, TRUE TSRMLS_CC); + 0, &p, as_unicode, len TSRMLS_CC); /* We have advanced in ps_fetch_from_1_to_8_bytes. We should go back because later in this function there will be an advancement. diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.h b/ext/mysqlnd/mysqlnd_wireprotocol.h index 4c3f80caaa..83411246c9 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.h +++ b/ext/mysqlnd/mysqlnd_wireprotocol.h @@ -307,7 +307,9 @@ typedef struct st_php_mysql_packet_chg_user_resp { size_t mysqlnd_stream_write(MYSQLND * const conn, char * const buf, size_t count TSRMLS_DC); size_t mysqlnd_stream_write_w_header(MYSQLND * const conn, char * const buf, size_t count TSRMLS_DC); +#ifdef MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND size_t php_mysqlnd_consume_uneaten_data(MYSQLND * const conn, enum php_mysqlnd_server_command cmd TSRMLS_DC); +#endif void php_mysqlnd_scramble(zend_uchar * const buffer, const zend_uchar * const scramble, const zend_uchar * const pass); |