From d1ccacd5a66c604792d0527ec6ffff68a5d59ed4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Gustavo=20Andr=C3=A9=20dos=20Santos=20Lopes?= Date: Thu, 8 Mar 2012 08:52:28 +0000 Subject: [PATCH] - Fixed bug #61267: pdo_pgsql's PDO::exec() returns the number of SELECTed rows on postgresql >= 9 --- ext/pdo_pgsql/pgsql_driver.c | 2 +- ext/pdo_pgsql/tests/bug61267.phpt | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 ext/pdo_pgsql/tests/bug61267.phpt diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index d96c3e8e35..23ea5e58a2 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -299,7 +299,7 @@ static long pgsql_handle_doer(pdo_dbh_t *dbh, const char *sql, long sql_len TSRM return -1; } H->pgoid = PQoidValue(res); - ret = atol(PQcmdTuples(res)); + ret = (qs == PGRES_COMMAND_OK) ? atol(PQcmdTuples(res)) : 0L; PQclear(res); return ret; diff --git a/ext/pdo_pgsql/tests/bug61267.phpt b/ext/pdo_pgsql/tests/bug61267.phpt new file mode 100644 index 0000000000..4214cd9be0 --- /dev/null +++ b/ext/pdo_pgsql/tests/bug61267.phpt @@ -0,0 +1,22 @@ +--TEST-- +PDO::exec() returns 0 when the statement is a SELECT. +--SKIPIF-- + +--FILE-- +exec('SELECT * from generate_series(1, 42);'); +var_dump($res); +echo "Done\n"; +?> +--EXPECTF-- +int(0) +Done -- 2.40.0