cvs: php-src(PHP_5_2) / NEWS /ext/pdo/tests pdo_016.phpt pdo_016a.phpt pdo_021.phpt /ext/pdo_mysql mysql_statement.c
| From: | Ilia Alshanetsky | Date: | Sat, 02 Dec 2006 17:53:44 +0000 |
| Subject: | cvs: php-src(PHP_5_2) / NEWS /ext/pdo/tests pdo_016.phpt pdo_016a.phpt pdo_021.phpt /ext/pdo_mysql mysql_statement.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-41828@lists.php.net to get a copy of this message | ||
iliaa Sat Dec 2 17:53:44 2006 UTC
Modified files: (Branch: PHP_5_2)
/php-src/ext/pdo_mysql mysql_statement.c
/php-src/ext/pdo/tests pdo_016.phpt pdo_016a.phpt pdo_021.phpt
/php-src NEWS
Log:
Fixed bug #39527 (Failure to retrieve results when multiple unbuffered,
prepared statements are used in pdo_mysql).
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_mysql/mysql_statement.c?r1=1.48.2.14&r2=1.48.2.14.2.1&diff_format=u
Index: php-src/ext/pdo_mysql/mysql_statement.c
diff -u php-src/ext/pdo_mysql/mysql_statement.c:1.48.2.14
php-src/ext/pdo_mysql/mysql_statement.c:1.48.2.14.2.1
--- php-src/ext/pdo_mysql/mysql_statement.c:1.48.2.14 Sat Apr 22 16:35:18 2006
+++ php-src/ext/pdo_mysql/mysql_statement.c Sat Dec 2 17:53:43 2006
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mysql_statement.c,v 1.48.2.14 2006/04/22 16:35:18 wez Exp $ */
+/* $Id: mysql_statement.c,v 1.48.2.14.2.1 2006/12/02 17:53:43 iliaa Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -68,15 +68,17 @@
}
#endif
#if HAVE_MYSQL_NEXT_RESULT
- while (mysql_more_results(S->H->server)) {
- MYSQL_RES *res;
- if (mysql_next_result(S->H->server) != 0) {
- break;
- }
+ if (S->H->server) {
+ while (mysql_more_results(S->H->server)) {
+ MYSQL_RES *res;
+ if (mysql_next_result(S->H->server) != 0) {
+ break;
+ }
- res = mysql_store_result(S->H->server);
- if (res) {
- mysql_free_result(res);
+ res = mysql_store_result(S->H->server);
+ if (res) {
+ mysql_free_result(res);
+ }
}
}
#endif
@@ -593,16 +595,24 @@
static int pdo_mysql_stmt_cursor_closer(pdo_stmt_t *stmt TSRMLS_DC)
{
pdo_mysql_stmt *S = (pdo_mysql_stmt*)stmt->driver_data;
+
+ if (S->result) {
+ mysql_free_result(S->result);
+ S->result = NULL;
+ }
#if HAVE_MYSQL_STMT_PREPARE
if (S->stmt) {
- int retval = mysql_stmt_free_result(S->stmt);
+ int retval;
+ if (!S->H->buffered) {
+ retval = mysql_stmt_close(S->stmt);
+ S->stmt = NULL;
+ } else {
+ retval = mysql_stmt_free_result(S->stmt);
+ }
return retval ? 0 : 1;
}
#endif
- if (S->result) {
- mysql_free_result(S->result);
- S->result = NULL;
- }
+
#if HAVE_MYSQL_NEXT_RESULT
while (mysql_more_results(S->H->server)) {
MYSQL_RES *res;
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/pdo_016.phpt?r1=1.8.2.3&r2=1.8.2.3.2.1&diff_format=u
Index: php-src/ext/pdo/tests/pdo_016.phpt
diff -u php-src/ext/pdo/tests/pdo_016.phpt:1.8.2.3 php-src/ext/pdo/tests/pdo_016.phpt:1.8.2.3.2.1
--- php-src/ext/pdo/tests/pdo_016.phpt:1.8.2.3 Mon Oct 3 15:06:27 2005
+++ php-src/ext/pdo/tests/pdo_016.phpt Sat Dec 2 17:53:44 2006
@@ -14,6 +14,10 @@
require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
$db = PDOTest::factory();
+if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
+}
+
$db->exec('CREATE TABLE test(idx int NOT NULL PRIMARY KEY, txt VARCHAR(20))');
$db->exec('INSERT INTO test VALUES(0, \'String0\')');
$db->exec('INSERT INTO test VALUES(1, \'String1\')');
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/pdo_016a.phpt?r1=1.1.2.3&r2=1.1.2.3.2.1&diff_format=u
Index: php-src/ext/pdo/tests/pdo_016a.phpt
diff -u php-src/ext/pdo/tests/pdo_016a.phpt:1.1.2.3 php-src/ext/pdo/tests/pdo_016a.phpt:1.1.2.3.2.1
--- php-src/ext/pdo/tests/pdo_016a.phpt:1.1.2.3 Mon Oct 3 15:06:27 2005
+++ php-src/ext/pdo/tests/pdo_016a.phpt Sat Dec 2 17:53:44 2006
@@ -14,6 +14,10 @@
require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
$db = PDOTest::factory();
+if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
+}
+
$db->exec('CREATE TABLE test(idx int NOT NULL PRIMARY KEY, txt VARCHAR(20))');
$db->exec('INSERT INTO test VALUES(0, \'String0\')');
$db->exec('INSERT INTO test VALUES(1, \'String1\')');
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/pdo_021.phpt?r1=1.8.2.2&r2=1.8.2.2.2.1&diff_format=u
Index: php-src/ext/pdo/tests/pdo_021.phpt
diff -u php-src/ext/pdo/tests/pdo_021.phpt:1.8.2.2 php-src/ext/pdo/tests/pdo_021.phpt:1.8.2.2.2.1
--- php-src/ext/pdo/tests/pdo_021.phpt:1.8.2.2 Mon Oct 3 15:06:27 2005
+++ php-src/ext/pdo/tests/pdo_021.phpt Sat Dec 2 17:53:44 2006
@@ -14,6 +14,10 @@
require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
$db = PDOTest::factory();
+if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
+ $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
+}
+
$db->exec('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, val VARCHAR(10), val2
VARCHAR(16))');
$select = $db->prepare('SELECT COUNT(id) FROM test');
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.391&r2=1.2027.2.547.2.392&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.391 php-src/NEWS:1.2027.2.547.2.392
--- php-src/NEWS:1.2027.2.547.2.391 Fri Dec 1 20:10:35 2006
+++ php-src/NEWS Sat Dec 2 17:53:44 2006
@@ -77,6 +77,8 @@
number of backslashes). (David Soria Parra, Pierre)
- Fixed bug #39534 (Error in maths to calculate of
ZEND_MM_ALIGNED_MIN_HEADER_SIZE). (wharmby at uk dot ibm dot com, Dmitry)
+- Fixed bug #39527 (Failure to retrieve results when multiple unbuffered,
+ prepared statements are used in pdo_mysql). (Ilia)
- Fixed bug #39458 (ftp_nlist() returns false on empty dirs). (Nuno)
- Fixed bug #39454 (Returning a SOAP array segfaults PHP). (Dmitry)
- Fixed bug #39445 (Calling debug_backtrace() in the __toString() function