|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull Requests
Pull requests:
HistoryAllCommentsChangesGit/SVN commits
[2019-12-17 17:27 UTC] kentaro at ranvis dot com
[2019-12-20 10:46 UTC] nikic@php.net
[2019-12-20 10:46 UTC] nikic@php.net
-Status: Open
+Status: Closed
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 29 06:00:01 2025 UTC |
Description: ------------ pgsqlGetNotify() doesn't check the result of PQconsumeInput(), which returns 0 on error. If a caller is pooling by calling pgsqlGetNotify(), it will never have a chance to known when the connection is lost. (will add a PR) Test script: --------------- <?php $connArgs = ['pgsql:dbname=DB_NAME', 'USER', 'PASSWORD', [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ]]; $pdo = new PDO(...$connArgs); $pdo->exec('listen "test-event"'); var_dump($pdo->pgsqlGetNotify(PDO::FETCH_NUM, 1000)); sleep(15); // kill the DB connection here //system('sudo systemctl restart postgresql-12'); //system('net stop postgresql-x64-12 && net start postgresql-x64-12'); var_dump($pdo->pgsqlGetNotify(PDO::FETCH_NUM, 1000)); // should throw but doesn't var_dump($pdo->query('select 1')); // throws Expected result: ---------------- throws on $pdo->pgsqlGetNotify() Actual result: -------------- throws after $pdo->pgsqlGetNotify(), on $pdo->query('select 1')