mirror of
				https://github.com/psycopg/psycopg2.git
				synced 2025-11-04 09:47:30 +03:00 
			
		
		
		
	Merge branch 'fix-887'
This commit is contained in:
		
						commit
						7b31b39fed
					
				
							
								
								
									
										7
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								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
 | 
			
		||||
-------------------------
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								setup.py
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -47,7 +47,7 @@ except ImportError:
 | 
			
		|||
# Take a look at https://www.python.org/dev/peps/pep-0440/
 | 
			
		||||
# 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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -495,6 +495,31 @@ class AsyncTests(ConnectingTestCase):
 | 
			
		|||
 | 
			
		||||
        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():
 | 
			
		||||
    return unittest.TestLoader().loadTestsFromName(__name__)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user