diff options
author | Matteo Beccati <mbeccati@php.net> | 2016-07-10 14:34:59 +0200 |
---|---|---|
committer | Matteo Beccati <mbeccati@php.net> | 2016-07-10 14:34:59 +0200 |
commit | 11d74b5b7977394f4dd02a8d6af34de10722beda (patch) | |
tree | 480264910157a6c893e438f838875327a0255ce0 | |
parent | 6725863993b4ee94a9ba4404b89fbfd8e8a63146 (diff) | |
parent | 219ebcb68984a0af524336b165a849781ee65758 (diff) | |
download | php-git-11d74b5b7977394f4dd02a8d6af34de10722beda.tar.gz |
Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
Fixed bug #70313 PDO statement fails to throw exception
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | ext/pdo_pgsql/pgsql_statement.c | 2 | ||||
-rw-r--r-- | ext/pdo_pgsql/tests/bug70313.phpt | 37 |
3 files changed, 42 insertions, 2 deletions
@@ -7,10 +7,13 @@ PHP NEWS with parent private method). (Pedro Magalhães) . Fixed bug #72024 (microtime() leaks memory). (maroszek at gmx dot net) -- Filter +- Filter: . Fixed bug #71745 (FILTER_FLAG_NO_RES_RANGE does not cover whole 127.0.0.0/8 range). (bugs dot php dot net at majkl578 dot cz) +- PDO_pgsql: + . Fixed bug #70313 (PDO statement fails to throw exception). (Matteo) + - SPL: . Fixed bug #55701 (GlobIterator throws LogicException). (Valentin VĂLCIU) diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index ee06cfc439..517a59718a 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -304,7 +304,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data * case PDO_PARAM_EVT_EXEC_PRE: if (!stmt->bound_param_map) { - return 0; + return 1; } if (!S->param_values) { S->param_values = ecalloc( diff --git a/ext/pdo_pgsql/tests/bug70313.phpt b/ext/pdo_pgsql/tests/bug70313.phpt new file mode 100644 index 0000000000..14c3b7bfcc --- /dev/null +++ b/ext/pdo_pgsql/tests/bug70313.phpt @@ -0,0 +1,37 @@ +--TEST-- +PDO PgSQL Bug #70313 (PDO statement fails to throw exception) +--SKIPIF-- +<?php +if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) 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__) . '/../../../ext/pdo/tests/pdo_test.inc'; +$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt'); +$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + +$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); +try { + $stmt = $db->prepare(");"); + + $stmt->execute([1]); +} catch (PDOException $e) { + var_dump($e->getCode()); +} + +$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); +try { + $stmt = $db->prepare(");"); + + $stmt->execute([1]); +} catch (PDOException $e) { + var_dump($e->getCode()); +} + +?> +--EXPECT-- +string(5) "42601" +string(5) "42601" |