diff options
author | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2020-11-17 22:45:52 +0000 |
---|---|---|
committer | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2020-11-17 22:45:52 +0000 |
commit | e85ef2298b2ecee5d21c4580abd51611cef8329e (patch) | |
tree | 3e6fb104db838e9fed2f93c72ef8d3a90383c9f0 | |
parent | 8449844af3cb8c93ce6493ef775db8296d529eed (diff) | |
parent | cdca0a20e04853b3ea3e70524feef4c43992073e (diff) | |
download | psycopg2-e85ef2298b2ecee5d21c4580abd51611cef8329e.tar.gz |
Merge branch 'connection_exception'
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | psycopg/error_type.c | 2 | ||||
-rwxr-xr-x | tests/test_errors.py | 7 |
3 files changed, 13 insertions, 0 deletions
@@ -5,6 +5,10 @@ What's new in psycopg 2.9 ------------------------- - Dropped support for Python 3.4, 3.5 (:tickets:#1000, #1197). +- Reclassified SQLSTATE connection exceptions (08XXX) as + `~psycopg2.errors.OperationalError` (subclass of previously used + `~psycopg2.errors.DatabaseError`) (:ticket:`#1148`). + What's new in psycopg 2.8.6 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/psycopg/error_type.c b/psycopg/error_type.c index 37b4d4a..60b2c48 100644 --- a/psycopg/error_type.c +++ b/psycopg/error_type.c @@ -65,6 +65,8 @@ base_exception_from_sqlstate(const char *sqlstate) switch (sqlstate[0]) { case '0': switch (sqlstate[1]) { + case '8': /* Class 08 - Connection Exception */ + return OperationalError; case 'A': /* Class 0A - Feature Not Supported */ return NotSupportedError; } diff --git a/tests/test_errors.py b/tests/test_errors.py index bd3e7fd..ec2950c 100755 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -62,6 +62,13 @@ class ErrorsTests(ConnectingTestCase): with self.assertRaises(KeyError): errors.lookup('XXXXX') + def test_connection_exceptions_backwards_compatibility(self): + err = errors.lookup('08000') + # connection exceptions are classified as operational errors + self.assert_(issubclass(err, errors.OperationalError)) + # previously these errors were classified only as DatabaseError + self.assert_(issubclass(err, errors.DatabaseError)) + def test_has_base_exceptions(self): excs = [] for n in dir(psycopg2): |