diff --git a/NEWS b/NEWS index 87c5806d..da7950bd 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,13 @@ Current release --------------- +What's new in psycopg 2.8.1 +--------------------------- + +- Fixed "there's no async cursor" error polling a connection with no cursor + (:ticket:`#887`). + + What's new in psycopg 2.8 ------------------------- diff --git a/psycopg/connection_int.c b/psycopg/connection_int.c index 1f4115dd..cdc6f026 100644 --- a/psycopg/connection_int.c +++ b/psycopg/connection_int.c @@ -1045,12 +1045,6 @@ static cursorObject * _conn_get_async_cursor(connectionObject *self) { PyObject *py_curs; - if (!(self->async_cursor)) { - PyErr_SetString(PyExc_SystemError, - "unexpectedly, there's no async cursor here"); - goto error; - } - if (!(py_curs = PyWeakref_GetObject(self->async_cursor))) { PyErr_SetString(PyExc_SystemError, "got null dereferencing cursor weakref"); @@ -1108,7 +1102,7 @@ conn_poll(connectionObject *self) Dprintf("conn_poll: status -> CONN_STATUS_*"); res = _conn_poll_query(self); - if (res == PSYCO_POLL_OK && self->async) { + if (res == PSYCO_POLL_OK && self->async && self->async_cursor) { cursorObject *curs; /* An async query has just finished: parse the tuple in the diff --git a/tests/test_async.py b/tests/test_async.py index 21ef7fe5..618c1585 100755 --- a/tests/test_async.py +++ b/tests/test_async.py @@ -495,6 +495,10 @@ class AsyncTests(ConnectingTestCase): self.assert_(polls >= 8, polls) + def test_poll_noop(self): + self.conn.poll() + self.conn.poll() + def test_suite(): return unittest.TestLoader().loadTestsFromName(__name__)