svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/pdo_mysql/mysql_statement.c branches/PHP_5_3/ext/pdo_mysql/tests/bug53782.phpt
branches/PHP_5_4/ext/pdo_mysql/mysql_statement.c branches/PHP_5_4/ext/pdo_mysql/tests/bug53782.phpt trunk/ext/pdo_mysql/mysql_statement.c
trunk/ext/pdo_mysql/tests/bug53782.phpt
| From: | Johannes Schlüter | Date: | Mon, 16 May 2011 15:37:39 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/pdo_mysql/mysql_statement.c branches/PHP_5_3/ext/pdo_mysql/tests/bug53782.phpt branches/PHP_5_4/ext/pdo_mysql/mysql_statement.c branches/PHP_5_4/ext/pdo_mysql/tests/bug53782.phpt trunk/ext/pdo_mysql/mysql_statement.c trunk/ext/pdo_mysql/tests/bug53782.phpt |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-64938@lists.php.net to get a copy of this message | ||
johannes Mon, 16 May 2011 15:37:39 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=311088
Log:
- Fix Bug #53782 (foreach throws irrelevant exception)
Bug: http://bugs.php.net/53782 (Re-Opened) foreach throws
irrelevant exception
Changed paths:
U php/php-src/branches/PHP_5_3/NEWS
U php/php-src/branches/PHP_5_3/ext/pdo_mysql/mysql_statement.c
A php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/bug53782.phpt
U php/php-src/branches/PHP_5_4/ext/pdo_mysql/mysql_statement.c
A php/php-src/branches/PHP_5_4/ext/pdo_mysql/tests/bug53782.phpt
U php/php-src/trunk/ext/pdo_mysql/mysql_statement.c
A php/php-src/trunk/ext/pdo_mysql/tests/bug53782.phpt
Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS 2011-05-16 15:36:12 UTC (rev 311087)
+++ php/php-src/branches/PHP_5_3/NEWS 2011-05-16 15:37:39 UTC (rev 311088)
@@ -85,6 +85,7 @@
- PDO MySQL driver:
. Fixed bug #54644 (wrong pathes in php_pdo_mysql_int.h). (Tony, Johannes)
+ . Fixed bug #53782 (foreach throws irrelevant exception). (Johannes, Andrey)
. Implemented FR #48587 (MySQL PDO driver doesn't support SSL connections).
(Rob)
Modified: php/php-src/branches/PHP_5_3/ext/pdo_mysql/mysql_statement.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/pdo_mysql/mysql_statement.c 2011-05-16 15:36:12 UTC (rev
311087)
+++ php/php-src/branches/PHP_5_3/ext/pdo_mysql/mysql_statement.c 2011-05-16 15:37:39 UTC (rev
311088)
@@ -656,7 +656,11 @@
#endif /* PDO_USE_MYSQLND */
if ((S->current_data = mysql_fetch_row(S->result)) == NULL) {
- if (mysql_errno(S->H->server)) {
+#if PDO_USE_MYSQLND
+ if (S->result->unbuf && !S->result->unbuf->eof_reached &&
mysql_errno(S->H->server)) {
+#else
+ if (!S->result->eof && mysql_errno(S->H->server)) {
+#endif
pdo_mysql_error_stmt(stmt);
}
PDO_DBG_RETURN(0);
Added: php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/bug53782.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/bug53782.phpt (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/bug53782.phpt 2011-05-16 15:37:39 UTC (rev
311088)
@@ -0,0 +1,40 @@
+--TEST--
+PDO MySQL Bug #53782 (foreach throws irrelevant exception)
+--SKIPIF--
+<?php
+if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip
not loaded');
+require dirname(__FILE__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+require dirname(__FILE__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+$conn = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+
+$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+
+$res = $conn->query('SELECT 0');
+
+try {
+ $conn->query('ERROR');
+} catch (PDOException $e) {
+ echo "Caught: ".$e->getMessage()."\n";
+}
+
+foreach ($res as $k => $v) {
+ echo "Value: $v[0]\n";
+}
+
+echo "DONE";
+?>
+--CLEAN--
+<?php
+require dirname(__FILE__) . '/mysql_pdo_test.inc';
+MySQLPDOTest::dropTestTable();
+?>
+--EXPECTF--
+Caught: SQLSTATE[42000]: %s
+Value: 0
+DONE
Property changes on: php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/bug53782.phpt
___________________________________________________________________
Added: svn:keywords
+ Id Rev Revision
Added: svn:eol-style
+ native
Modified: php/php-src/branches/PHP_5_4/ext/pdo_mysql/mysql_statement.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/pdo_mysql/mysql_statement.c 2011-05-16 15:36:12 UTC (rev
311087)
+++ php/php-src/branches/PHP_5_4/ext/pdo_mysql/mysql_statement.c 2011-05-16 15:37:39 UTC (rev
311088)
@@ -640,7 +640,11 @@
#endif /* PDO_USE_MYSQLND */
if ((S->current_data = mysql_fetch_row(S->result)) == NULL) {
- if (mysql_errno(S->H->server)) {
+#if PDO_USE_MYSQLND
+ if (S->result->unbuf && !S->result->unbuf->eof_reached &&
mysql_errno(S->H->server)) {
+#else
+ if (!S->result->eof && mysql_errno(S->H->server)) {
+#endif
pdo_mysql_error_stmt(stmt);
}
PDO_DBG_RETURN(0);
Added: php/php-src/branches/PHP_5_4/ext/pdo_mysql/tests/bug53782.phpt
===================================================================
--- php/php-src/branches/PHP_5_4/ext/pdo_mysql/tests/bug53782.phpt (rev 0)
+++ php/php-src/branches/PHP_5_4/ext/pdo_mysql/tests/bug53782.phpt 2011-05-16 15:37:39 UTC (rev
311088)
@@ -0,0 +1,40 @@
+--TEST--
+PDO MySQL Bug #53782 (foreach throws irrelevant exception)
+--SKIPIF--
+<?php
+if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip
not loaded');
+require dirname(__FILE__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+require dirname(__FILE__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+$conn = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+
+$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+
+$res = $conn->query('SELECT 0');
+
+try {
+ $conn->query('ERROR');
+} catch (PDOException $e) {
+ echo "Caught: ".$e->getMessage()."\n";
+}
+
+foreach ($res as $k => $v) {
+ echo "Value: $v[0]\n";
+}
+
+echo "DONE";
+?>
+--CLEAN--
+<?php
+require dirname(__FILE__) . '/mysql_pdo_test.inc';
+MySQLPDOTest::dropTestTable();
+?>
+--EXPECTF--
+Caught: SQLSTATE[42000]: %s
+Value: 0
+DONE
Property changes on: php/php-src/branches/PHP_5_4/ext/pdo_mysql/tests/bug53782.phpt
___________________________________________________________________
Added: svn:keywords
+ Id Rev Revision
Added: svn:eol-style
+ native
Modified: php/php-src/trunk/ext/pdo_mysql/mysql_statement.c
===================================================================
--- php/php-src/trunk/ext/pdo_mysql/mysql_statement.c 2011-05-16 15:36:12 UTC (rev 311087)
+++ php/php-src/trunk/ext/pdo_mysql/mysql_statement.c 2011-05-16 15:37:39 UTC (rev 311088)
@@ -640,7 +640,11 @@
#endif /* PDO_USE_MYSQLND */
if ((S->current_data = mysql_fetch_row(S->result)) == NULL) {
- if (mysql_errno(S->H->server)) {
+#if PDO_USE_MYSQLND
+ if (S->result->unbuf && !S->result->unbuf->eof_reached &&
mysql_errno(S->H->server)) {
+#else
+ if (!S->result->eof && mysql_errno(S->H->server)) {
+#endif
pdo_mysql_error_stmt(stmt);
}
PDO_DBG_RETURN(0);
Added: php/php-src/trunk/ext/pdo_mysql/tests/bug53782.phpt
===================================================================
--- php/php-src/trunk/ext/pdo_mysql/tests/bug53782.phpt (rev 0)
+++ php/php-src/trunk/ext/pdo_mysql/tests/bug53782.phpt 2011-05-16 15:37:39 UTC (rev 311088)
@@ -0,0 +1,40 @@
+--TEST--
+PDO MySQL Bug #53782 (foreach throws irrelevant exception)
+--SKIPIF--
+<?php
+if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip
not loaded');
+require dirname(__FILE__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+require dirname(__FILE__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+$conn = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+
+$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+
+$res = $conn->query('SELECT 0');
+
+try {
+ $conn->query('ERROR');
+} catch (PDOException $e) {
+ echo "Caught: ".$e->getMessage()."\n";
+}
+
+foreach ($res as $k => $v) {
+ echo "Value: $v[0]\n";
+}
+
+echo "DONE";
+?>
+--CLEAN--
+<?php
+require dirname(__FILE__) . '/mysql_pdo_test.inc';
+MySQLPDOTest::dropTestTable();
+?>
+--EXPECTF--
+Caught: SQLSTATE[42000]: %s
+Value: 0
+DONE
Property changes on: php/php-src/trunk/ext/pdo_mysql/tests/bug53782.phpt
___________________________________________________________________
Added: svn:keywords
+ Id Rev Revision
Added: svn:eol-style
+ native