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

Reply via email to