summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo van Kemenade <hugovk@users.noreply.github.com>2020-11-18 18:10:16 +0200
committerGitHub <noreply@github.com>2020-11-18 18:10:16 +0200
commit8830e30f73adebdcc0449981a864ffaf06b19444 (patch)
tree127d0bcaaac559c261ef63fdafa9ee4aa5e0d5bb
parentc3b65d63b6b5543024aee961ec33e1f456b75eab (diff)
parente85ef2298b2ecee5d21c4580abd51611cef8329e (diff)
downloadpsycopg2-8830e30f73adebdcc0449981a864ffaf06b19444.tar.gz
Merge branch 'master' into rm-2.7
-rw-r--r--.appveyor.yml2
-rw-r--r--NEWS4
-rw-r--r--psycopg/error_type.c2
-rw-r--r--scripts/appveyor.cache_rebuild2
-rwxr-xr-xscripts/appveyor.py19
-rwxr-xr-xtests/test_errors.py7
6 files changed, 18 insertions, 18 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
index a6c0777..d7edc0d 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -21,7 +21,7 @@ environment:
- {APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015, PY_VER: "36", PY_ARCH: "64"}
OPENSSL_VERSION: "1_1_1h"
- POSTGRES_VERSION: "11_4"
+ POSTGRES_VERSION: "13_0"
PSYCOPG2_TESTDB: psycopg2_test
PSYCOPG2_TESTDB_USER: postgres
diff --git a/NEWS b/NEWS
index 7df532a..f7e467b 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,10 @@ What's new in psycopg 2.9
-------------------------
- Dropped support for Python 2.7, 3.4, 3.5 (:tickets:#1198, #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/scripts/appveyor.cache_rebuild b/scripts/appveyor.cache_rebuild
index 432d68e..419eb94 100644
--- a/scripts/appveyor.cache_rebuild
+++ b/scripts/appveyor.cache_rebuild
@@ -12,7 +12,7 @@ OpenSSL
Version: 1.1.1h
PostgreSQL
- Version: 11.4
+ Version: 13.0
NOTE: to zap the cache manually you can also use:
diff --git a/scripts/appveyor.py b/scripts/appveyor.py
index 7c9d3ba..a554183 100755
--- a/scripts/appveyor.py
+++ b/scripts/appveyor.py
@@ -53,6 +53,7 @@ def setup_build_env():
str(opt.py_dir / 'Scripts'),
r'C:\Strawberry\Perl\bin',
r'C:\Program Files\Git\mingw64\bin',
+ str(opt.ssl_build_dir / 'bin'),
os.environ['PATH'],
]
setenv('PATH', os.pathsep.join(path))
@@ -212,7 +213,7 @@ def build_openssl():
+ ['no-shared', 'no-zlib', f'--prefix={top}', f'--openssldir={top}']
)
- run_command("nmake build_libs install_dev".split())
+ run_command("nmake build_libs install_sw".split())
assert (top / 'lib' / 'libssl.lib').exists()
@@ -249,20 +250,6 @@ def build_libpq():
pgbuild = opt.build_dir / f"postgres-REL_{ver}"
os.chdir(pgbuild)
- # Patch for OpenSSL 1.1 configuration. See:
- # https://www.postgresql-archive.org/Compile-psql-9-6-with-SSL-Version-1-1-0-td6054118.html
- assert Path("src/include/pg_config.h.win32").exists()
- with open("src/include/pg_config.h.win32", 'a') as f:
- print(
- """
-#define HAVE_ASN1_STRING_GET0_DATA 1
-#define HAVE_BIO_GET_DATA 1
-#define HAVE_BIO_METH_NEW 1
-#define HAVE_OPENSSL_INIT_SSL 1
-""",
- file=f,
- )
-
# Setup build config file (config.pl)
os.chdir("src/tools/msvc")
with open("config.pl", 'w') as f:
@@ -326,7 +313,7 @@ def build_psycopg():
add_pg_config_path()
run_python(
["setup.py", "build_ext", "--have-ssl"]
- + ["-l", "libpgcommon", "-l", "libpgport"]
+ + ["-l", "libpgcommon libpgport"]
+ ["-L", opt.ssl_build_dir / 'lib']
+ ['-I', opt.ssl_build_dir / 'include']
)
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):