andrey Tue Jun 24 11:19:07 2008 UTC
Modified files:
/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
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/php_mysql.c?r1=1.258&r2=1.259&diff_format=u
Index: php-src/ext/mysql/php_mysql.c
diff -u php-src/ext/mysql/php_mysql.c:1.258 php-src/ext/mysql/php_mysql.c:1.259
--- php-src/ext/mysql/php_mysql.c:1.258 Wed Apr 16 12:53:18 2008
+++ php-src/ext/mysql/php_mysql.c Tue Jun 24 11:19:07 2008
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_mysql.c,v 1.258 2008/04/16 12:53:18 andrey Exp $ */
+/* $Id: php_mysql.c,v 1.259 2008/06/24 11:19:07 andrey Exp $ */
/* TODO:
*
@@ -813,7 +813,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.83&r2=1.84&diff_format=u
Index: php-src/ext/mysqli/mysqli_nonapi.c
diff -u php-src/ext/mysqli/mysqli_nonapi.c:1.83
php-src/ext/mysqli/mysqli_nonapi.c:1.84
--- php-src/ext/mysqli/mysqli_nonapi.c:1.83 Tue Mar 25 18:28:12 2008
+++ php-src/ext/mysqli/mysqli_nonapi.c Tue Jun 24 11:19:07 2008
@@ -17,7 +17,7 @@
| Ulf Wendel <[EMAIL PROTECTED]>
|
+----------------------------------------------------------------------+
- $Id: mysqli_nonapi.c,v 1.83 2008/03/25 18:28:12 andrey Exp $
+ $Id: mysqli_nonapi.c,v 1.84 2008/06/24 11:19:07 andrey Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -165,7 +165,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.23&r2=1.24&diff_format=u
Index: php-src/ext/mysqlnd/mysqlnd.c
diff -u php-src/ext/mysqlnd/mysqlnd.c:1.23 php-src/ext/mysqlnd/mysqlnd.c:1.24
--- php-src/ext/mysqlnd/mysqlnd.c:1.23 Wed May 7 15:16:27 2008
+++ php-src/ext/mysqlnd/mysqlnd.c Tue Jun 24 11:19:07 2008
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd.c,v 1.23 2008/05/07 15:16:27 andrey Exp $ */
+/* $Id: mysqlnd.c,v 1.24 2008/06/24 11:19:07 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.17&r2=1.18&diff_format=u
Index: php-src/ext/mysqlnd/mysqlnd.h
diff -u php-src/ext/mysqlnd/mysqlnd.h:1.17 php-src/ext/mysqlnd/mysqlnd.h:1.18
--- php-src/ext/mysqlnd/mysqlnd.h:1.17 Wed May 7 15:16:27 2008
+++ php-src/ext/mysqlnd/mysqlnd.h Tue Jun 24 11:19:07 2008
@@ -18,12 +18,12 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysqlnd.h,v 1.17 2008/05/07 15:16:27 andrey Exp $ */
+/* $Id: mysqlnd.h,v 1.18 2008/06/24 11:19:07 andrey Exp $ */
#ifndef MYSQLND_H
#define MYSQLND_H
-#define MYSQLND_VERSION "mysqlnd 5.0.4-dev - 080501 - $Revision: 1.17 $"
+#define MYSQLND_VERSION "mysqlnd 5.0.4-dev - 080501 - $Revision: 1.18 $"
#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