]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
ensure exception raised for all stream w/ sync result
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 4 Feb 2022 14:04:49 +0000 (09:04 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 4 Feb 2022 17:49:24 +0000 (12:49 -0500)
commitfaa9ef2cff53bde291df5ac3b5c4ed8f665ecd8c
treee33df958d54550f88909793d8a4bdf9c3e655b3b
parentb93cef577d6471aa18a6b1cde8a97598fc837377
ensure exception raised for all stream w/ sync result

Fixed issue where the :meth:`_asyncio.AsyncSession.execute` method failed
to raise an informative exception if the ``stream_results`` execution
option were used, which is incompatible with a sync-style
:class:`_result.Result` object. An exception is now raised in this scenario
in the same way one is already raised when using ``stream_results`` in
conjunction with the :meth:`_asyncio.AsyncConnection.execute` method.
Additionally, for improved stability with state-sensitive dialects such as
asyncmy, the cursor is now closed when this error condition is raised;
previously with the asyncmy dialect, the connection would go into an
invalid state with unconsumed server side results remaining.

Fixes: #7667
Change-Id: I6eb7affe08584889b57423a90258295f8b7085dc
doc/build/changelog/unreleased_14/7667.rst [new file with mode: 0644]
lib/sqlalchemy/engine/cursor.py
lib/sqlalchemy/engine/result.py
lib/sqlalchemy/ext/asyncio/engine.py
lib/sqlalchemy/ext/asyncio/result.py
lib/sqlalchemy/ext/asyncio/session.py
test/ext/asyncio/test_engine_py3k.py
test/ext/asyncio/test_session_py3k.py