mirror of
				https://github.com/psycopg/psycopg2.git
				synced 2025-11-04 01:37:31 +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