summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2006-09-19 15:45:22 +0000
committerIlia Alshanetsky <iliaa@php.net>2006-09-19 15:45:22 +0000
commit2332e4f9fc134b2ddec3779bcaf1ea237631b7c2 (patch)
tree8cb52e69a09ce1760b3c0e6bbf9b94022129e682
parentdb5dc9d5d8f8a5047a528239703552c94c75d702 (diff)
downloadphp-git-2332e4f9fc134b2ddec3779bcaf1ea237631b7c2.tar.gz
Fixed bug #37870 (pgo_pgsql tries to de-allocate unused statements).
Fixed bug #36681 (pdo_pgsql driver incorrectly ignored some errors). Fixed test for bug #38253 not to use faulty SQL that generates errors in PostgreSQL
-rw-r--r--NEWS4
-rw-r--r--ext/pdo/tests/bug_38253.phpt4
-rw-r--r--ext/pdo_pgsql/pgsql_driver.c1
-rw-r--r--ext/pdo_pgsql/pgsql_statement.c12
4 files changed, 15 insertions, 6 deletions
diff --git a/NEWS b/NEWS
index 5637b432ec..6f2be7ae6b 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,10 @@ PHP NEWS
(Tony)
- Fixed bug #38574 (missing curl constants and improper constant detection).
(Ilia)
+- Fixed bug #37870 (pgo_pgsql tries to de-allocate unused statements).
+ (Ilia, ce at netage dot bg)
+- Fixed bug #36681 (pdo_pgsql driver incorrectly ignored some errors). (Wez,
+ Ilia)
- Fixed bug #34066 (recursive array_walk causes segfault). (Tony)
14 Sep 2006, PHP 5.2.0RC4
diff --git a/ext/pdo/tests/bug_38253.phpt b/ext/pdo/tests/bug_38253.phpt
index 713eefb701..6dfdab8df1 100644
--- a/ext/pdo/tests/bug_38253.phpt
+++ b/ext/pdo/tests/bug_38253.phpt
@@ -15,7 +15,7 @@ require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
$pdo = PDOTest::factory();
$pdo->exec ("create table test (id integer primary key, n text)");
-$pdo->exec ("INSERT INTO test (n) VALUES ('hi')");
+$pdo->exec ("INSERT INTO test (id, n) VALUES (1, 'hi')");
$pdo->setAttribute (PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_CLASS);
$stmt = $pdo->prepare ("SELECT * FROM test");
@@ -25,7 +25,7 @@ var_dump($stmt->fetchAll());
$pdo = PDOTest::factory();
$pdo->exec ("create table test2 (id integer primary key, n text)");
-$pdo->exec ("INSERT INTO test2 (n) VALUES ('hi')");
+$pdo->exec ("INSERT INTO test2 (id, n) VALUES (1,'hi')");
$pdo->setAttribute (PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_FUNC);
$stmt = $pdo->prepare ("SELECT * FROM test2");
diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c
index ed28052d2c..11f320e416 100644
--- a/ext/pdo_pgsql/pgsql_driver.c
+++ b/ext/pdo_pgsql/pgsql_driver.c
@@ -472,6 +472,7 @@ static int pdo_pgsql_transaction_cmd(const char *cmd, pdo_dbh_t *dbh TSRMLS_DC)
res = PQexec(H->server, cmd);
if (PQresultStatus(res) != PGRES_COMMAND_OK) {
+ pdo_pgsql_error(dbh, PQresultStatus(res), pdo_pgsql_sqlstate(res));
ret = 0;
}
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c
index a1488b5a39..2821fe880b 100644
--- a/ext/pdo_pgsql/pgsql_statement.c
+++ b/ext/pdo_pgsql/pgsql_statement.c
@@ -60,10 +60,14 @@ static int pgsql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC)
char *q = NULL;
PGresult *res;
- spprintf(&q, 0, "DEALLOCATE %s", S->stmt_name);
- res = PQexec(H->server, q);
- efree(q);
- if (res) PQclear(res);
+ if (S->is_prepared) {
+ spprintf(&q, 0, "DEALLOCATE %s", S->stmt_name);
+ res = PQexec(H->server, q);
+ efree(q);
+ if (res) {
+ PQclear(res);
+ }
+ }
efree(S->stmt_name);
S->stmt_name = NULL;
}