andrey Tue Jun 24 11:01:38 2008 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/mysql php_mysql.c /php-src/ext/mysqli mysqli_nonapi.c /php-src/ext/mysqlnd mysqlnd.c mysqlnd.h Log: Fix possible bug with persistent connections and mysqlnd http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/php_mysql.c?r1=1.213.2.6.2.16.2.17&r2=1.213.2.6.2.16.2.18&diff_format=u Index: php-src/ext/mysql/php_mysql.c diff -u php-src/ext/mysql/php_mysql.c:1.213.2.6.2.16.2.17 php-src/ext/mysql/php_mysql.c:1.213.2.6.2.16.2.18 --- php-src/ext/mysql/php_mysql.c:1.213.2.6.2.16.2.17 Wed Apr 16 12:57:38 2008 +++ php-src/ext/mysql/php_mysql.c Tue Jun 24 11:01:38 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_mysql.c,v 1.213.2.6.2.16.2.17 2008/04/16 12:57:38 andrey Exp $ */ +/* $Id: php_mysql.c,v 1.213.2.6.2.16.2.18 2008/06/24 11:01:38 andrey Exp $ */ /* TODO: * @@ -791,7 +791,7 @@ } } else { #ifdef MYSQL_USE_MYSQLND - mysqlnd_restart_psession(mysql->conn); + mysqlnd_restart_psession(mysql->conn, MySG(mysqlnd_thd_zval_cache)); #endif } } http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/mysqli_nonapi.c?r1=1.54.2.7.2.5.2.12&r2=1.54.2.7.2.5.2.13&diff_format=u Index: php-src/ext/mysqli/mysqli_nonapi.c diff -u php-src/ext/mysqli/mysqli_nonapi.c:1.54.2.7.2.5.2.12 php-src/ext/mysqli/mysqli_nonapi.c:1.54.2.7.2.5.2.13 --- php-src/ext/mysqli/mysqli_nonapi.c:1.54.2.7.2.5.2.12 Tue May 6 17:05:14 2008 +++ php-src/ext/mysqli/mysqli_nonapi.c Tue Jun 24 11:01:38 2008 @@ -17,7 +17,7 @@ | Ulf Wendel <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - $Id: mysqli_nonapi.c,v 1.54.2.7.2.5.2.12 2008/05/06 17:05:14 andrey Exp $ + $Id: mysqli_nonapi.c,v 1.54.2.7.2.5.2.13 2008/06/24 11:01:38 andrey Exp $ */ #ifdef HAVE_CONFIG_H @@ -170,7 +170,7 @@ if (!mysql_ping(mysql->mysql)) { #endif #ifdef MYSQLI_USE_MYSQLND - mysqlnd_restart_psession(mysql->mysql); + mysqlnd_restart_psession(mysql->mysql, MyG(mysqlnd_thd_zval_cache)); #endif MyG(num_active_persistent)++; goto end; http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd.c?r1=1.5.2.20&r2=1.5.2.21&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd.c diff -u php-src/ext/mysqlnd/mysqlnd.c:1.5.2.20 php-src/ext/mysqlnd/mysqlnd.c:1.5.2.21 --- php-src/ext/mysqlnd/mysqlnd.c:1.5.2.20 Wed May 7 15:14:26 2008 +++ php-src/ext/mysqlnd/mysqlnd.c Tue Jun 24 11:01:38 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd.c,v 1.5.2.20 2008/05/07 15:14:26 andrey Exp $ */ +/* $Id: mysqlnd.c,v 1.5.2.21 2008/06/24 11:01:38 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" #include "mysqlnd_wireprotocol.h" @@ -442,7 +442,7 @@ /* {{{ _mysqlnd_restart_psession */ -PHPAPI void _mysqlnd_restart_psession(MYSQLND *conn TSRMLS_DC) +PHPAPI void _mysqlnd_restart_psession(MYSQLND *conn, MYSQLND_THD_ZVAL_PCACHE *cache TSRMLS_DC) { DBG_ENTER("_mysqlnd_restart_psession"); MYSQLND_INC_CONN_STATISTIC(&conn->stats, STAT_CONNECT_REUSED); @@ -451,15 +451,27 @@ mnd_pefree(conn->last_message, conn->persistent); conn->last_message = NULL; } + conn->zval_cache = cache; DBG_VOID_RETURN; } /* }}} */ -/* {{{ mysqlnd_end_psession */ -PHPAPI void mysqlnd_end_psession(MYSQLND *conn) +/* {{{ _mysqlnd_end_psession */ +PHPAPI void _mysqlnd_end_psession(MYSQLND *conn TSRMLS_DC) { - + DBG_ENTER("_mysqlnd_end_psession"); + /* + BEWARE!!!! This will have a problem with a query cache. + We need to move the data out of the zval cache before we end the psession. + Or we will use nirvana pointers!! + */ + if (conn->zval_cache) { + DBG_INF("Freeing zval cache reference"); + mysqlnd_palloc_free_thd_cache_reference(&conn->zval_cache); + conn->zval_cache = NULL; + } + DBG_VOID_RETURN; } /* }}} */ http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd.h?r1=1.3.2.15&r2=1.3.2.16&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd.h diff -u php-src/ext/mysqlnd/mysqlnd.h:1.3.2.15 php-src/ext/mysqlnd/mysqlnd.h:1.3.2.16 --- php-src/ext/mysqlnd/mysqlnd.h:1.3.2.15 Wed May 7 15:14:26 2008 +++ php-src/ext/mysqlnd/mysqlnd.h Tue Jun 24 11:01:38 2008 @@ -18,12 +18,12 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd.h,v 1.3.2.15 2008/05/07 15:14:26 andrey Exp $ */ +/* $Id: mysqlnd.h,v 1.3.2.16 2008/06/24 11:01:38 andrey Exp $ */ #ifndef MYSQLND_H #define MYSQLND_H -#define MYSQLND_VERSION "mysqlnd 5.0.4-dev - 080501 - $Revision: 1.3.2.15 $" +#define MYSQLND_VERSION "mysqlnd 5.0.4-dev - 080501 - $Revision: 1.3.2.16 $" #define MYSQLND_VERSION_ID 50004 /* This forces inlining of some accessor functions */ @@ -67,9 +67,10 @@ void mysqlnd_library_init(TSRMLS_D); void mysqlnd_library_end(TSRMLS_D); -#define mysqlnd_restart_psession(conn) _mysqlnd_restart_psession((conn) TSRMLS_CC) -PHPAPI void _mysqlnd_restart_psession(MYSQLND *conn TSRMLS_DC); -PHPAPI void mysqlnd_end_psession(MYSQLND *conn); +#define mysqlnd_restart_psession(conn, cache) _mysqlnd_restart_psession((conn), (cache) TSRMLS_CC) +PHPAPI void _mysqlnd_restart_psession(MYSQLND *conn, MYSQLND_THD_ZVAL_PCACHE *cache TSRMLS_DC); +#define mysqlnd_end_psession(conn) _mysqlnd_end_psession((conn) TSRMLS_CC) +PHPAPI void _mysqlnd_end_psession(MYSQLND *conn TSRMLS_DC); PHPAPI void mysqlnd_minfo_print_hash(zval *values); #define mysqlnd_thread_safe() TRUE
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php