summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2022-06-30 19:10:06 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2022-07-01 12:14:02 -0400
commit741af02893a19c879ba4d929151b9358aeb48148 (patch)
tree7b408bb82033d90cff4ba9e78ead2c0cda27411f /lib/sqlalchemy/testing
parent286e5fb649f77367883800ba4ec3d536e8031ca8 (diff)
downloadsqlalchemy-741af02893a19c879ba4d929151b9358aeb48148.tar.gz
repair yield_per for non-SS dialects and add new options
Implemented new :paramref:`_engine.Connection.execution_options.yield_per` execution option for :class:`_engine.Connection` in Core, to mirror that of the same :ref:`yield_per <orm_queryguide_yield_per>` option available in the ORM. The option sets both the :paramref:`_engine.Connection.execution_options.stream_results` option at the same time as invoking :meth:`_engine.Result.yield_per`, to provide the most common streaming result configuration which also mirrors that of the ORM use case in its usage pattern. Fixed bug in :class:`_engine.Result` where the usage of a buffered result strategy would not be used if the dialect in use did not support an explicit "server side cursor" setting, when using :paramref:`_engine.Connection.execution_options.stream_results`. This is in error as DBAPIs such as that of SQLite and Oracle already use a non-buffered result fetching scheme, which still benefits from usage of partial result fetching. The "buffered" strategy is now used in all cases where :paramref:`_engine.Connection.execution_options.stream_results` is set. Added :meth:`.FilterResult.yield_per` so that result implementations such as :class:`.MappingResult`, :class:`.ScalarResult` and :class:`.AsyncResult` have access to this method. Fixes: #8199 Change-Id: I6dde3cbe483a1bf81e945561b60f4b7d1c434750
Diffstat (limited to 'lib/sqlalchemy/testing')
-rw-r--r--lib/sqlalchemy/testing/fixtures.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/sqlalchemy/testing/fixtures.py b/lib/sqlalchemy/testing/fixtures.py
index d0e7d8f3c..20dee5273 100644
--- a/lib/sqlalchemy/testing/fixtures.py
+++ b/lib/sqlalchemy/testing/fixtures.py
@@ -92,11 +92,19 @@ class TestBase:
@config.fixture()
def close_result_when_finished(self):
to_close = []
+ to_consume = []
- def go(result):
+ def go(result, consume=False):
to_close.append(result)
+ if consume:
+ to_consume.append(result)
yield go
+ for r in to_consume:
+ try:
+ r.all()
+ except:
+ pass
for r in to_close:
try:
r.close()