From 18ed94bec6840280cc4e0681c4934df0b918e82c Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 4 Mar 2024 08:41:51 -0500 Subject: [PATCH] cherry-pick changelog from 2.0.28 --- doc/build/changelog/changelog_20.rst | 61 ++++++++++++++++++- doc/build/changelog/unreleased_20/10974.rst | 15 ----- doc/build/changelog/unreleased_20/11010.rst | 8 --- doc/build/changelog/unreleased_20/11085.rst | 12 ---- doc/build/changelog/unreleased_20/8771.rst | 15 ----- .../changelog/unreleased_20/pytest81.rst | 4 -- 6 files changed, 60 insertions(+), 55 deletions(-) delete mode 100644 doc/build/changelog/unreleased_20/10974.rst delete mode 100644 doc/build/changelog/unreleased_20/11010.rst delete mode 100644 doc/build/changelog/unreleased_20/11085.rst delete mode 100644 doc/build/changelog/unreleased_20/8771.rst delete mode 100644 doc/build/changelog/unreleased_20/pytest81.rst diff --git a/doc/build/changelog/changelog_20.rst b/doc/build/changelog/changelog_20.rst index 6d0dfaf8d4..8a5b51d828 100644 --- a/doc/build/changelog/changelog_20.rst +++ b/doc/build/changelog/changelog_20.rst @@ -10,7 +10,66 @@ .. changelog:: :version: 2.0.28 - :include_notes_from: unreleased_20 + :released: March 4, 2024 + + .. change:: + :tags: engine, usecase + :tickets: 10974 + + Added new core execution option + :paramref:`_engine.Connection.execution_options.preserve_rowcount`. When + set, the ``cursor.rowcount`` attribute from the DBAPI cursor will be + unconditionally memoized at statement execution time, so that whatever + value the DBAPI offers for any kind of statement will be available using + the :attr:`_engine.CursorResult.rowcount` attribute from the + :class:`_engine.CursorResult`. This allows the rowcount to be accessed for + statments such as INSERT and SELECT, to the degree supported by the DBAPI + in use. The :ref:`engine_insertmanyvalues` also supports this option and + will ensure :attr:`_engine.CursorResult.rowcount` is correctly set for a + bulk INSERT of rows when set. + + .. change:: + :tags: bug, orm, regression + :tickets: 11010 + + Fixed regression caused by :ticket:`9779` where using the "secondary" table + in a relationship ``and_()`` expression would fail to be aliased to match + how the "secondary" table normally renders within a + :meth:`_sql.Select.join` expression, leading to an invalid query. + + .. change:: + :tags: bug, orm, performance, regression + :tickets: 11085 + + Adjusted the fix made in :ticket:`10570`, released in 2.0.23, where new + logic was added to reconcile possibly changing bound parameter values + across cache key generations used within the :func:`_orm.with_expression` + construct. The new logic changes the approach by which the new bound + parameter values are associated with the statement, avoiding the need to + deep-copy the statement which can result in a significant performance + penalty for very deep / complex SQL constructs. The new approach no longer + requires this deep-copy step. + + .. change:: + :tags: bug, asyncio + :tickets: 8771 + + An error is raised if a :class:`.QueuePool` or other non-asyncio pool class + is passed to :func:`_asyncio.create_async_engine`. This engine only + accepts asyncio-compatible pool classes including + :class:`.AsyncAdaptedQueuePool`. Other pool classes such as + :class:`.NullPool` are compatible with both synchronous and asynchronous + engines as they do not perform any locking. + + .. seealso:: + + :ref:`pool_api` + + + .. change:: + :tags: change, tests + + pytest support in the tox.ini file has been updated to support pytest 8.1. .. changelog:: :version: 2.0.27 diff --git a/doc/build/changelog/unreleased_20/10974.rst b/doc/build/changelog/unreleased_20/10974.rst deleted file mode 100644 index a5da62475e..0000000000 --- a/doc/build/changelog/unreleased_20/10974.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. change:: - :tags: engine, usecase - :tickets: 10974 - - Added new core execution option - :paramref:`_engine.Connection.execution_options.preserve_rowcount`. When - set, the ``cursor.rowcount`` attribute from the DBAPI cursor will be - unconditionally memoized at statement execution time, so that whatever - value the DBAPI offers for any kind of statement will be available using - the :attr:`_engine.CursorResult.rowcount` attribute from the - :class:`_engine.CursorResult`. This allows the rowcount to be accessed for - statments such as INSERT and SELECT, to the degree supported by the DBAPI - in use. The :ref:`engine_insertmanyvalues` also supports this option and - will ensure :attr:`_engine.CursorResult.rowcount` is correctly set for a - bulk INSERT of rows when set. diff --git a/doc/build/changelog/unreleased_20/11010.rst b/doc/build/changelog/unreleased_20/11010.rst deleted file mode 100644 index bd24772dd6..0000000000 --- a/doc/build/changelog/unreleased_20/11010.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, orm, regression - :tickets: 11010 - - Fixed regression caused by :ticket:`9779` where using the "secondary" table - in a relationship ``and_()`` expression would fail to be aliased to match - how the "secondary" table normally renders within a - :meth:`_sql.Select.join` expression, leading to an invalid query. diff --git a/doc/build/changelog/unreleased_20/11085.rst b/doc/build/changelog/unreleased_20/11085.rst deleted file mode 100644 index 74f877dac7..0000000000 --- a/doc/build/changelog/unreleased_20/11085.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: bug, orm, performance, regression - :tickets: 11085 - - Adjusted the fix made in :ticket:`10570`, released in 2.0.23, where new - logic was added to reconcile possibly changing bound parameter values - across cache key generations used within the :func:`_orm.with_expression` - construct. The new logic changes the approach by which the new bound - parameter values are associated with the statement, avoiding the need to - deep-copy the statement which can result in a significant performance - penalty for very deep / complex SQL constructs. The new approach no longer - requires this deep-copy step. diff --git a/doc/build/changelog/unreleased_20/8771.rst b/doc/build/changelog/unreleased_20/8771.rst deleted file mode 100644 index 9f501fcb8d..0000000000 --- a/doc/build/changelog/unreleased_20/8771.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. change:: - :tags: bug, asyncio - :tickets: 8771 - - An error is raised if a :class:`.QueuePool` or other non-asyncio pool class - is passed to :func:`_asyncio.create_async_engine`. This engine only - accepts asyncio-compatible pool classes including - :class:`.AsyncAdaptedQueuePool`. Other pool classes such as - :class:`.NullPool` are compatible with both synchronous and asynchronous - engines as they do not perform any locking. - - .. seealso:: - - :ref:`pool_api` - diff --git a/doc/build/changelog/unreleased_20/pytest81.rst b/doc/build/changelog/unreleased_20/pytest81.rst deleted file mode 100644 index 01b840ee8c..0000000000 --- a/doc/build/changelog/unreleased_20/pytest81.rst +++ /dev/null @@ -1,4 +0,0 @@ -.. change:: - :tags: change, tests - - pytest support in the tox.ini file has been updated to support pytest 8.1. -- 2.47.2