]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
cherry-pick changelog from 2.0.28
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 4 Mar 2024 13:41:51 +0000 (08:41 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 4 Mar 2024 13:41:51 +0000 (08:41 -0500)
doc/build/changelog/changelog_20.rst
doc/build/changelog/unreleased_20/10974.rst [deleted file]
doc/build/changelog/unreleased_20/11010.rst [deleted file]
doc/build/changelog/unreleased_20/11085.rst [deleted file]
doc/build/changelog/unreleased_20/8771.rst [deleted file]
doc/build/changelog/unreleased_20/pytest81.rst [deleted file]

index 6d0dfaf8d4dd034b9189c038afe24f7db23ac55a..8a5b51d82821e956a2d7377f13d5d9781892c721 100644 (file)
 
 .. 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 (file)
index a5da624..0000000
+++ /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 (file)
index bd24772..0000000
+++ /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 (file)
index 74f877d..0000000
+++ /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 (file)
index 9f501fc..0000000
+++ /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 (file)
index 01b840e..0000000
+++ /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.