mirror of
https://github.com/psycopg/psycopg2.git
synced 2025-02-16 17:10:32 +03:00
Merge branch 'fix-887'
This commit is contained in:
commit
7b31b39fed
7
NEWS
7
NEWS
|
@ -1,6 +1,13 @@
|
||||||
Current release
|
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
|
What's new in psycopg 2.8
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
|
|
|
@ -1045,12 +1045,6 @@ static cursorObject *
|
||||||
_conn_get_async_cursor(connectionObject *self) {
|
_conn_get_async_cursor(connectionObject *self) {
|
||||||
PyObject *py_curs;
|
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))) {
|
if (!(py_curs = PyWeakref_GetObject(self->async_cursor))) {
|
||||||
PyErr_SetString(PyExc_SystemError,
|
PyErr_SetString(PyExc_SystemError,
|
||||||
"got null dereferencing cursor weakref");
|
"got null dereferencing cursor weakref");
|
||||||
|
@ -1108,7 +1102,7 @@ conn_poll(connectionObject *self)
|
||||||
Dprintf("conn_poll: status -> CONN_STATUS_*");
|
Dprintf("conn_poll: status -> CONN_STATUS_*");
|
||||||
res = _conn_poll_query(self);
|
res = _conn_poll_query(self);
|
||||||
|
|
||||||
if (res == PSYCO_POLL_OK && self->async) {
|
if (res == PSYCO_POLL_OK && self->async && self->async_cursor) {
|
||||||
cursorObject *curs;
|
cursorObject *curs;
|
||||||
|
|
||||||
/* An async query has just finished: parse the tuple in the
|
/* An async query has just finished: parse the tuple in the
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -47,7 +47,7 @@ except ImportError:
|
||||||
# Take a look at https://www.python.org/dev/peps/pep-0440/
|
# Take a look at https://www.python.org/dev/peps/pep-0440/
|
||||||
# for a consistent versioning pattern.
|
# for a consistent versioning pattern.
|
||||||
|
|
||||||
PSYCOPG_VERSION = '2.8'
|
PSYCOPG_VERSION = '2.8.1.dev0'
|
||||||
|
|
||||||
|
|
||||||
# note: if you are changing the list of supported Python version please fix
|
# note: if you are changing the list of supported Python version please fix
|
||||||
|
|
|
@ -495,6 +495,31 @@ class AsyncTests(ConnectingTestCase):
|
||||||
|
|
||||||
self.assert_(polls >= 8, polls)
|
self.assert_(polls >= 8, polls)
|
||||||
|
|
||||||
|
def test_poll_noop(self):
|
||||||
|
self.conn.poll()
|
||||||
|
|
||||||
|
@skip_before_postgres(9, 0)
|
||||||
|
def test_poll_conn_for_notification(self):
|
||||||
|
with self.conn.cursor() as cur:
|
||||||
|
cur.execute("listen test")
|
||||||
|
self.wait(cur)
|
||||||
|
|
||||||
|
with self.sync_conn.cursor() as cur:
|
||||||
|
cur.execute("notify test, 'hello'")
|
||||||
|
self.sync_conn.commit()
|
||||||
|
|
||||||
|
for i in range(10):
|
||||||
|
self.conn.poll()
|
||||||
|
|
||||||
|
if self.conn.notifies:
|
||||||
|
n = self.conn.notifies.pop()
|
||||||
|
self.assertEqual(n.channel, 'test')
|
||||||
|
self.assertEqual(n.payload, 'hello')
|
||||||
|
break
|
||||||
|
time.sleep(0.1)
|
||||||
|
else:
|
||||||
|
self.fail("No notification received")
|
||||||
|
|
||||||
|
|
||||||
def test_suite():
|
def test_suite():
|
||||||
return unittest.TestLoader().loadTestsFromName(__name__)
|
return unittest.TestLoader().loadTestsFromName(__name__)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user