diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-06-30 19:10:06 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-07-01 12:14:02 -0400 |
| commit | 741af02893a19c879ba4d929151b9358aeb48148 (patch) | |
| tree | 7b408bb82033d90cff4ba9e78ead2c0cda27411f /lib/sqlalchemy/testing | |
| parent | 286e5fb649f77367883800ba4ec3d536e8031ca8 (diff) | |
| download | sqlalchemy-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.py | 10 |
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() |
