From: Mike Bayer Date: Fri, 15 Oct 2021 13:48:41 +0000 (-0400) Subject: repair fetch after session close for mssql+pyodbc X-Git-Tag: rel_1_4_26~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e2c82ab3ab12b5a45994dceb180c824a06304a15;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git repair fetch after session close for mssql+pyodbc this test relies upon a cursor that can do fetchall() after connection.rollback() was called. Change-Id: I8c19a67bad97019375671c69d6ed7fa4f4e6872f --- diff --git a/test/orm/test_session.py b/test/orm/test_session.py index afd9ca8159..94b35c5b3f 100644 --- a/test/orm/test_session.py +++ b/test/orm/test_session.py @@ -2187,7 +2187,10 @@ class NewStyleExecutionTest(_fixtures.FixtureTest): def setup_mappers(cls): cls._setup_stock_mapping() - @testing.combinations(("close",), ("expunge_all",)) + @testing.combinations( + ("close", testing.requires.cursor_works_post_rollback), + ("expunge_all",), + ) def test_unbuffered_result_session_is_closed(self, meth): """test #7128""" User = self.classes.User diff --git a/test/requirements.py b/test/requirements.py index 7efd6cbd50..72129a2d5d 100644 --- a/test/requirements.py +++ b/test/requirements.py @@ -350,6 +350,18 @@ class DefaultRequirements(SuiteRequirements): return skip_if(["mssql", "mysql", "mariadb"], "no driver support") + @property + def cursor_works_post_rollback(self): + """Driver quirk where the cursor.fetchall() will work even if + the connection has been rolled back. + + This generally refers to buffered cursors but also seems to work + with cx_oracle, for example. + + """ + + return skip_if(["+pyodbc"], "no driver support") + @property def independent_connections(self): """