andrey Fri Aug 3 16:32:27 2007 UTC Modified files: /php-src/ext/mysqlnd mysqlnd.c mysqlnd.h mysqlnd_portability.h mysqlnd_priv.h mysqlnd_ps.c mysqlnd_ps_codec.c mysqlnd_result.c mysqlnd_result_meta.c mysqlnd_statistics.h mysqlnd_wireprotocol.c mysqlnd_wireprotocol.h Log: Update CVS - Fix BIT problem for BIT values represented with 5 bytes. Typo. - Make it possible with an ini variable to switch off/on statistics collection. - Compile-out debug checking of uneaten data from the line, when the build is release. According to callgrind this was eating some percentage.
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd.c?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd.c diff -u php-src/ext/mysqlnd/mysqlnd.c:1.1 php-src/ext/mysqlnd/mysqlnd.c:1.2 --- php-src/ext/mysqlnd/mysqlnd.c:1.1 Wed Jul 25 23:47:32 2007 +++ php-src/ext/mysqlnd/mysqlnd.c Fri Aug 3 16:32:26 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd.c,v 1.1 2007/07/25 23:47:32 jani Exp $ */ +/* $Id: mysqlnd.c,v 1.2 2007/08/03 16:32:26 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" @@ -67,31 +67,37 @@ 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 @@ /* }}} */ -/* {{{ 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 @@ /* }}} */ +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 @@ NULL, PHP_MINFO(mysqlnd), MYSQLND_VERSION, - STANDARD_MODULE_PROPERTIES + PHP_MODULE_GLOBALS(mysqlnd), + PHP_GINIT(mysqlnd), + NULL, + NULL, + STANDARD_MODULE_PROPERTIES_EX }; /* }}} */ http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd.h?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd.h diff -u php-src/ext/mysqlnd/mysqlnd.h:1.1 php-src/ext/mysqlnd/mysqlnd.h:1.2 --- php-src/ext/mysqlnd/mysqlnd.h:1.1 Wed Jul 25 23:47:32 2007 +++ php-src/ext/mysqlnd/mysqlnd.h Fri Aug 3 16:32:26 2007 @@ -18,12 +18,12 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd.h,v 1.1 2007/07/25 23:47:32 jani Exp $ */ +/* $Id: mysqlnd.h,v 1.2 2007/08/03 16:32:26 andrey Exp $ */ #ifndef MYSQLND_H #define MYSQLND_H -#define MYSQLND_VERSION "mysqlnd 5.0.2-dev - 070702 - $Revision: 1.1 $" +#define MYSQLND_VERSION "mysqlnd 5.0.2-dev - 070702 - $Revision: 1.2 $" #define MYSQLND_VERSION_ID 50002 #define phpext_mysqlnd_ptr &mysqlnd_module_entry @@ -45,7 +45,9 @@ 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_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 @@ MYSQLND_THD_ZVAL_PCACHE *zval_cache; /* qcache */ - MYSQLND_QCACHE *qcache; + MYSQLND_QCACHE *qcache; /* stats */ MYSQLND_STATS stats; @@ -594,7 +597,6 @@ /* zval cache */ MYSQLND_THD_ZVAL_PCACHE *zval_cache; - }; @@ -647,8 +649,6 @@ /* 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 @@ 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 */ http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_portability.h?r1=1.3&r2=1.4&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_portability.h diff -u php-src/ext/mysqlnd/mysqlnd_portability.h:1.3 php-src/ext/mysqlnd/mysqlnd_portability.h:1.4 --- php-src/ext/mysqlnd/mysqlnd_portability.h:1.3 Thu Jul 26 14:40:18 2007 +++ php-src/ext/mysqlnd/mysqlnd_portability.h Fri Aug 3 16:32:26 2007 @@ -153,11 +153,11 @@ (((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) +\ http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_priv.h?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_priv.h diff -u php-src/ext/mysqlnd/mysqlnd_priv.h:1.1 php-src/ext/mysqlnd/mysqlnd_priv.h:1.2 --- php-src/ext/mysqlnd/mysqlnd_priv.h:1.1 Wed Jul 25 23:47:32 2007 +++ php-src/ext/mysqlnd/mysqlnd_priv.h Fri Aug 3 16:32:26 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_priv.h,v 1.1 2007/07/25 23:47:32 jani Exp $ */ +/* $Id: mysqlnd_priv.h,v 1.2 2007/08/03 16:32:26 andrey Exp $ */ #ifndef MYSQLND_PRIV_H #define 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 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); http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_ps.c?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_ps.c diff -u php-src/ext/mysqlnd/mysqlnd_ps.c:1.1 php-src/ext/mysqlnd/mysqlnd_ps.c:1.2 --- php-src/ext/mysqlnd/mysqlnd_ps.c:1.1 Wed Jul 25 23:47:32 2007 +++ php-src/ext/mysqlnd/mysqlnd_ps.c Fri Aug 3 16:32:26 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_ps.c,v 1.1 2007/07/25 23:47:32 jani Exp $ */ +/* $Id: mysqlnd_ps.c,v 1.2 2007/08/03 16:32:26 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" #include "mysqlnd_wireprotocol.h" @@ -992,6 +992,7 @@ 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 @@ "Server responded to COM_STMT_SEND_LONG_DATA."); ret = FAIL; } +#endif } return ret; http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_ps_codec.c?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_ps_codec.c diff -u php-src/ext/mysqlnd/mysqlnd_ps_codec.c:1.1 php-src/ext/mysqlnd/mysqlnd_ps_codec.c:1.2 --- php-src/ext/mysqlnd/mysqlnd_ps_codec.c:1.1 Wed Jul 25 23:47:32 2007 +++ php-src/ext/mysqlnd/mysqlnd_ps_codec.c Fri Aug 3 16:32:26 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_ps_codec.c,v 1.1 2007/07/25 23:47:32 jani Exp $ */ +/* $Id: mysqlnd_ps_codec.c,v 1.2 2007/08/03 16:32:26 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" #include "mysqlnd_wireprotocol.h" @@ -67,10 +67,11 @@ /* {{{ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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); } /* }}} */ http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_result.c?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_result.c diff -u php-src/ext/mysqlnd/mysqlnd_result.c:1.1 php-src/ext/mysqlnd/mysqlnd_result.c:1.2 --- php-src/ext/mysqlnd/mysqlnd_result.c:1.1 Wed Jul 25 23:47:32 2007 +++ php-src/ext/mysqlnd/mysqlnd_result.c Fri Aug 3 16:32:26 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_result.c,v 1.1 2007/07/25 23:47:32 jani Exp $ */ +/* $Id: mysqlnd_result.c,v 1.2 2007/08/03 16:32:26 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" #include "mysqlnd_wireprotocol.h" @@ -905,7 +905,7 @@ 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; } /* }}} */ http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_result_meta.c?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_result_meta.c diff -u php-src/ext/mysqlnd/mysqlnd_result_meta.c:1.1 php-src/ext/mysqlnd/mysqlnd_result_meta.c:1.2 --- php-src/ext/mysqlnd/mysqlnd_result_meta.c:1.1 Wed Jul 25 23:47:32 2007 +++ php-src/ext/mysqlnd/mysqlnd_result_meta.c Fri Aug 3 16:32:26 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_result_meta.c,v 1.1 2007/07/25 23:47:32 jani Exp $ */ +/* $Id: mysqlnd_result_meta.c,v 1.2 2007/08/03 16:32:26 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" #include "mysqlnd_priv.h" @@ -358,7 +358,18 @@ } /* }}} */ -/* {{{ 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_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), http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_statistics.h?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_statistics.h diff -u php-src/ext/mysqlnd/mysqlnd_statistics.h:1.1 php-src/ext/mysqlnd/mysqlnd_statistics.h:1.2 --- php-src/ext/mysqlnd/mysqlnd_statistics.h:1.1 Wed Jul 25 23:47:32 2007 +++ php-src/ext/mysqlnd/mysqlnd_statistics.h Fri Aug 3 16:32:26 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_statistics.h,v 1.1 2007/07/25 23:47:32 jani Exp $ */ +/* $Id: mysqlnd_statistics.h,v 1.2 2007/08/03 16:32:26 andrey Exp $ */ #ifndef MYSQLND_STATISTICS_H #define MYSQLND_STATISTICS_H @@ -30,86 +30,92 @@ #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 http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_wireprotocol.c?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_wireprotocol.c diff -u php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.1 php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.2 --- php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.1 Wed Jul 25 23:47:32 2007 +++ php-src/ext/mysqlnd/mysqlnd_wireprotocol.c Fri Aug 3 16:32:27 2007 @@ -164,6 +164,7 @@ /* {{{ 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 @@ 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 @@ */ 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 @@ */ 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. http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_wireprotocol.h?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_wireprotocol.h diff -u php-src/ext/mysqlnd/mysqlnd_wireprotocol.h:1.1 php-src/ext/mysqlnd/mysqlnd_wireprotocol.h:1.2 --- php-src/ext/mysqlnd/mysqlnd_wireprotocol.h:1.1 Wed Jul 25 23:47:33 2007 +++ php-src/ext/mysqlnd/mysqlnd_wireprotocol.h Fri Aug 3 16:32:27 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_wireprotocol.h,v 1.1 2007/07/25 23:47:33 jani Exp $ */ +/* $Id: mysqlnd_wireprotocol.h,v 1.2 2007/08/03 16:32:27 andrey Exp $ */ #ifndef MYSQLND_WIREPROTOCOL_H #define MYSQLND_WIREPROTOCOL_H @@ -307,7 +307,9 @@ 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);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php