]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Added an additional libpq message to the list of "disconnect"
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 9 Feb 2011 15:58:16 +0000 (10:58 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 9 Feb 2011 15:58:16 +0000 (10:58 -0500)
exceptions, "could not receive data from server"
[ticket:2044]

CHANGES
lib/sqlalchemy/dialects/postgresql/psycopg2.py

diff --git a/CHANGES b/CHANGES
index 7a2a2f8847605bd21995fafb6655b3b002f7bec8..cf0c0eb0179dd051238e8145293396db5ada02ad 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -234,6 +234,10 @@ CHANGES
     than 63 characters using the same logic Postgresql uses.  
     [ticket:1083]
 
+  - Added an additional libpq message to the list of "disconnect"
+    exceptions, "could not receive data from server"
+    [ticket:2044]
+
 0.6.6
 =====
 - orm
index 21ce1211a144e4ba52560d6d5b76bb7a59a4cab2..50ea9d4371e427be9ddff1279f227d67eb2ca253 100644 (file)
@@ -297,11 +297,19 @@ class PGDialect_psycopg2(PGDialect):
 
     def is_disconnect(self, e):
         if isinstance(e, self.dbapi.OperationalError):
-            return 'closed the connection' in str(e) or 'connection not open' in str(e)
+            # these error messages from libpq: interfaces/libpq/fe-misc.c.
+            # TODO: these are sent through gettext in libpq and we can't 
+            # check within other locales - consider using connection.closed 
+            return 'closed the connection' in str(e) or \
+                    'connection not open' in str(e) or \
+                    'could not receive data from server' in str(e)
         elif isinstance(e, self.dbapi.InterfaceError):
-            return 'connection already closed' in str(e) or 'cursor already closed' in str(e)
+            # psycopg2 client errors, psycopg2/conenction.h, psycopg2/cursor.h
+            return 'connection already closed' in str(e) or \
+                    'cursor already closed' in str(e)
         elif isinstance(e, self.dbapi.ProgrammingError):
-            # yes, it really says "losed", not "closed"
+            # not sure where this path is originally from, it may 
+            # be obsolete.   It really says "losed", not "closed".
             return "losed the connection unexpectedly" in str(e)
         else:
             return False