Permalink
Browse files

Properly discover a connection is closed in postgresql_adapter

PQstatus doesn't properly test if future operations will succeed. A
PQping function is added to libpq in PostgreSQL 9.1, but if we rely
on it, everyone on earlier versions of Postgres is out of luck,
and the pg gem wouldn't have the 'fix' until the next release.

Thanks to @cbrecabarren and @ged for handling all the dirty details.

Closes #3392.
  • Loading branch information...
1 parent abccf82 commit 4dacac3baa271597e6bcf3527c557182d64a6a95 @steveklabnik steveklabnik committed May 24, 2012
Showing with 2 additions and 1 deletion.
  1. +2 −1 activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
View
3 activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
@@ -457,7 +457,8 @@ def clear_cache!
# Is this connection alive and ready for queries?
def active?
- @connection.status == PGconn::CONNECTION_OK
+ @connection.query 'SELECT 1'
+ true
rescue PGError
false
end

1 comment on commit 4dacac3

@ghazel

Why @connection.query instead of @connection.async_exec?

Please sign in to comment.