diff --git a/NEWS b/NEWS index 4c4d4e3da0d..10961f2c977 100644 --- a/NEWS +++ b/NEWS @@ -202,7 +202,7 @@ PHP NEWS . Fixed bug #72570 (Segmentation fault when binding parameters on a query without placeholders). (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) - Pcntl . Implemented asynchronous signal handling without TICKS. (Dmitry) diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index 9b7e38c24e3..d33df7663b8 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -363,12 +363,13 @@ static char *pdo_pgsql_last_insert_id(pdo_dbh_t *dbh, const char *name, size_t * 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 86fc847633b..30c2cc2d522 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--