mirror of
https://github.com/psycopg/psycopg2.git
synced 2024-11-26 02:43:43 +03:00
Meaningful connection errors report a meaningful message
Fixes issue #173.
This commit is contained in:
parent
345077d5f7
commit
1e623a951c
2
NEWS
2
NEWS
|
@ -6,6 +6,8 @@ What's new in psycopg 2.5.2
|
||||||
|
|
||||||
- Fixed segfault pickling the exception raised on connection error
|
- Fixed segfault pickling the exception raised on connection error
|
||||||
(:ticket:`#170`).
|
(:ticket:`#170`).
|
||||||
|
- Meaningful connection errors report a meaningful message, thanks to
|
||||||
|
Alexey Borzenkov (:ticket:`#173`).
|
||||||
|
|
||||||
|
|
||||||
What's new in psycopg 2.5.1
|
What's new in psycopg 2.5.1
|
||||||
|
|
|
@ -642,6 +642,7 @@ static int
|
||||||
_conn_poll_connecting(connectionObject *self)
|
_conn_poll_connecting(connectionObject *self)
|
||||||
{
|
{
|
||||||
int res = PSYCO_POLL_ERROR;
|
int res = PSYCO_POLL_ERROR;
|
||||||
|
const char *msg;
|
||||||
|
|
||||||
Dprintf("conn_poll: poll connecting");
|
Dprintf("conn_poll: poll connecting");
|
||||||
switch (PQconnectPoll(self->pgconn)) {
|
switch (PQconnectPoll(self->pgconn)) {
|
||||||
|
@ -656,7 +657,11 @@ _conn_poll_connecting(connectionObject *self)
|
||||||
break;
|
break;
|
||||||
case PGRES_POLLING_FAILED:
|
case PGRES_POLLING_FAILED:
|
||||||
case PGRES_POLLING_ACTIVE:
|
case PGRES_POLLING_ACTIVE:
|
||||||
PyErr_SetString(OperationalError, "asynchronous connection failed");
|
msg = PQerrorMessage(self->pgconn);
|
||||||
|
if (!(msg && *msg)) {
|
||||||
|
msg = "asynchronous connection failed";
|
||||||
|
}
|
||||||
|
PyErr_SetString(OperationalError, msg);
|
||||||
res = PSYCO_POLL_ERROR;
|
res = PSYCO_POLL_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -449,6 +449,16 @@ class AsyncTests(ConnectingTestCase):
|
||||||
self.wait(self.conn)
|
self.wait(self.conn)
|
||||||
self.assertEqual(cur.fetchone(), (42,))
|
self.assertEqual(cur.fetchone(), (42,))
|
||||||
|
|
||||||
|
def test_async_connection_error_message(self):
|
||||||
|
try:
|
||||||
|
cnn = psycopg2.connect('dbname=thisdatabasedoesntexist', async=True)
|
||||||
|
self.wait(cnn)
|
||||||
|
except psycopg2.Error, e:
|
||||||
|
self.assertNotEqual(str(e), "asynchronous connection failed",
|
||||||
|
"connection error reason lost")
|
||||||
|
else:
|
||||||
|
self.fail("no exception raised")
|
||||||
|
|
||||||
|
|
||||||
def test_suite():
|
def test_suite():
|
||||||
return unittest.TestLoader().loadTestsFromName(__name__)
|
return unittest.TestLoader().loadTestsFromName(__name__)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user