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