From e8de152ddd30e85ef2352b8c227c3a60aaa727d0 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Wed, 27 Jun 2007 02:00:46 +0000 Subject: Added persistent connection status checker to pdo_pgsql --- ext/pdo_pgsql/pgsql_driver.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'ext/pdo_pgsql') diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index 92ee788f3c..6727c6b8de 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -476,6 +476,17 @@ static int pdo_pgsql_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value return 1; } +/* {{{ */ +static int pdo_pgsql_check_liveness(pdo_dbh_t *dbh TSRMLS_DC) +{ + pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data; + if (PQstatus(H->server) == CONNECTION_BAD) { + PQreset(H->server); + } + return (PQstatus(H->server) == CONNECTION_OK) ? SUCCESS : FAILURE; +} +/* }}} */ + static int pdo_pgsql_transaction_cmd(const char *cmd, pdo_dbh_t *dbh TSRMLS_DC) { pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data; @@ -650,7 +661,7 @@ static struct pdo_dbh_methods pgsql_methods = { pdo_pgsql_last_insert_id, pdo_pgsql_fetch_error_func, pdo_pgsql_get_attribute, - NULL, /* check_liveness */ + pdo_pgsql_check_liveness, /* check_liveness */ pdo_pgsql_get_driver_methods /* get_driver_methods */ }; -- cgit v1.2.1