From d3a8e107acb4f729016b6d649bc83a888359fb7d Mon Sep 17 00:00:00 2001 From: Matteo Beccati Date: Thu, 4 Aug 2016 09:28:58 +0200 Subject: [PATCH] Clean up FR #72633 --- NEWS | 2 +- ext/pdo_pgsql/pgsql_driver.c | 7 ++++--- ext/pdo_pgsql/php_pdo_pgsql_int.h | 2 -- .../tests/{bug_last_insert_id.phpt => bug72633.phpt} | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) rename ext/pdo_pgsql/tests/{bug_last_insert_id.phpt => bug72633.phpt} (86%) diff --git a/NEWS b/NEWS index 51d59f4026a..21427cc9e5b 100644 --- a/NEWS +++ b/NEWS @@ -72,7 +72,7 @@ PHP NEWS - PDO_pgsql: . Fixed bug #70313 (PDO statement fails to throw exception). (Matteo) . Implemented FR #72633 (Postgres PDO lastInsertId() should work without - specifying a sequence). (Pablo Santiago Sánchez) + specifying a sequence). (Pablo Santiago Sánchez, Matteo) - Reflection: . Fixed bug #72222 (ReflectionClass::export doesn't handle array constants). diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index 52a77684923..5b78bcc4381 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -360,12 +360,13 @@ static char *pdo_pgsql_last_insert_id(pdo_dbh_t *dbh, const char *name, unsigned char *id = NULL; PGresult *res; ExecStatusType status; - const char *q[1]; - q[0] = name; - if (PHP_PDO_PGSQL_LASTVAL_PG_VERSION <= PQserverVersion(H->server) && name == NULL) { + if (name == NULL) { res = PQexec(H->server, "SELECT LASTVAL()"); } else { + const char *q[1]; + q[0] = name; + res = PQexecParams(H->server, "SELECT CURRVAL($1)", 1, NULL, q, NULL, NULL, 0); } status = PQresultStatus(res); diff --git a/ext/pdo_pgsql/php_pdo_pgsql_int.h b/ext/pdo_pgsql/php_pdo_pgsql_int.h index 2876b312b7f..eb645c58c4d 100644 --- a/ext/pdo_pgsql/php_pdo_pgsql_int.h +++ b/ext/pdo_pgsql/php_pdo_pgsql_int.h @@ -29,8 +29,6 @@ #define PHP_PDO_PGSQL_CONNECTION_FAILURE_SQLSTATE "08006" -#define PHP_PDO_PGSQL_LASTVAL_PG_VERSION 80100 - typedef struct { const char *file; int line; diff --git a/ext/pdo_pgsql/tests/bug_last_insert_id.phpt b/ext/pdo_pgsql/tests/bug72633.phpt similarity index 86% rename from ext/pdo_pgsql/tests/bug_last_insert_id.phpt rename to ext/pdo_pgsql/tests/bug72633.phpt index 30dd0f039a0..06bd25e6268 100644 --- a/ext/pdo_pgsql/tests/bug_last_insert_id.phpt +++ b/ext/pdo_pgsql/tests/bug72633.phpt @@ -1,5 +1,5 @@ --TEST-- -currval() vs lastval() - PDO PgSQL Bug #1134 [BUG] New record, PostgreSQL and the Primary key https://github.com/phalcon/cphalcon/issues/1134 +PDO PgSQL Bug #72633 (Postgres PDO lastInsertId() should work without specifying a sequence) --SKIPIF--