summaryrefslogtreecommitdiff
path: root/ext/pdo_pgsql
diff options
context:
space:
mode:
authorMatteo Beccati <mbeccati@php.net>2016-07-10 14:34:59 +0200
committerMatteo Beccati <mbeccati@php.net>2016-07-10 14:34:59 +0200
commit11d74b5b7977394f4dd02a8d6af34de10722beda (patch)
tree480264910157a6c893e438f838875327a0255ce0 /ext/pdo_pgsql
parent6725863993b4ee94a9ba4404b89fbfd8e8a63146 (diff)
parent219ebcb68984a0af524336b165a849781ee65758 (diff)
downloadphp-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
Diffstat (limited to 'ext/pdo_pgsql')
-rw-r--r--ext/pdo_pgsql/pgsql_statement.c2
-rw-r--r--ext/pdo_pgsql/tests/bug70313.phpt37
2 files changed, 38 insertions, 1 deletions
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"