]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- 1.4.24 rel_1_4_24
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 22 Sep 2021 15:18:00 +0000 (11:18 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 22 Sep 2021 15:18:00 +0000 (11:18 -0400)
29 files changed:
doc/build/changelog/changelog_14.rst
doc/build/changelog/unreleased_14/4123.rst [deleted file]
doc/build/changelog/unreleased_14/4486.rst [deleted file]
doc/build/changelog/unreleased_14/6106.rst [deleted file]
doc/build/changelog/unreleased_14/6689.rst [deleted file]
doc/build/changelog/unreleased_14/6746.rst [deleted file]
doc/build/changelog/unreleased_14/6832.rst [deleted file]
doc/build/changelog/unreleased_14/6910.rst [deleted file]
doc/build/changelog/unreleased_14/6912.rst [deleted file]
doc/build/changelog/unreleased_14/6913.rst [deleted file]
doc/build/changelog/unreleased_14/6924.rst [deleted file]
doc/build/changelog/unreleased_14/6937.rst [deleted file]
doc/build/changelog/unreleased_14/6943.rst [deleted file]
doc/build/changelog/unreleased_14/6950.rst [deleted file]
doc/build/changelog/unreleased_14/6955.rst [deleted file]
doc/build/changelog/unreleased_14/6958.rst [deleted file]
doc/build/changelog/unreleased_14/6963.rst [deleted file]
doc/build/changelog/unreleased_14/6979.rst [deleted file]
doc/build/changelog/unreleased_14/6983.rst [deleted file]
doc/build/changelog/unreleased_14/6990.rst [deleted file]
doc/build/changelog/unreleased_14/6993.rst [deleted file]
doc/build/changelog/unreleased_14/7024.rst [deleted file]
doc/build/changelog/unreleased_14/7036.rst [deleted file]
doc/build/changelog/unreleased_14/7052.rst [deleted file]
doc/build/changelog/unreleased_14/7055.rst [deleted file]
doc/build/changelog/unreleased_14/7060.rst [deleted file]
doc/build/changelog/unreleased_14/async_conn.rst [deleted file]
doc/build/changelog/unreleased_14/sqlite_autocommit.rst [deleted file]
doc/build/conf.py

index 06aa978fbd6d3b49ae954e62fa692cfd6036d7e8..6d5ff4ce30ced9cbb88aac99736cab3ed776bafb 100644 (file)
@@ -15,7 +15,299 @@ This document details individual issue-level changes made throughout
 
 .. changelog::
     :version: 1.4.24
-    :include_notes_from: unreleased_14
+    :released: September 22, 2021
+
+    .. change::
+        :tags: bug, asyncio
+        :tickets: 6943
+
+        Fixed a bug in :meth:`_asyncio.AsyncSession.execute` and
+        :meth:`_asyncio.AsyncSession.stream` that required ``execution_options``
+        to be an instance of ``immutabledict`` when defined. It now
+        correctly accepts any mapping.
+
+    .. change::
+        :tags: engine, asyncio, usecase
+        :tickets: 6832
+
+        Improve the interface used by adapted drivers, like the asyncio ones,
+        to access the actual connection object returned by the driver.
+
+        The :class:`._ConnectionFairy` object has two new attributes:
+
+        * :attr:`._ConnectionFairy.dbapi_connection` always represents a DBAPI
+          compatible object. For pep-249 drivers, this is the DBAPI connection as
+          it always has been, previously accessed under the ``.connection``
+          attribute. For asyncio drivers that SQLAlchemy adapts into a pep-249
+          interface, the returned object will normally be a SQLAlchemy adaption
+          object called :class:`_engine.AdaptedConnection`.
+        * :attr:`._ConnectionFairy.driver_connection` always represents the actual
+          connection object maintained by the third party pep-249 DBAPI or async
+          driver in use. For standard pep-249 DBAPIs, this will always be the same
+          object as that of the ``dbapi_connection``. For an asyncio driver, it
+          will be the underlying asyncio-only connection object.
+
+        The ``.connection`` attribute remains available and is now a legacy alias
+        of ``.dbapi_connection``.
+
+        .. seealso::
+
+            :ref:`faq_dbapi_connection`
+
+
+    .. change::
+        :tags: bug, sql
+        :tickets: 7052
+
+        Implemented missing methods in :class:`_functions.FunctionElement` which,
+        while unused, would lead pylint to report them as unimplemented abstract
+        methods.
+
+    .. change::
+        :tags: bug, mssql, reflection
+        :tickets: 6910
+
+        Fixed an issue where :meth:`_reflection.has_table` returned
+        ``True`` for local temporary tables that actually belonged to a
+        different SQL Server session (connection). An extra check is now
+        performed to ensure that the temp table detected is in fact owned
+        by the current session.
+
+    .. change::
+        :tags: bug, engine, regression
+        :tickets: 6913
+
+        Fixed issue where the ability of the
+        :meth:`_events.ConnectionEvents.before_execute` method to alter the SQL
+        statement object passed, returning the new object to be invoked, was
+        inadvertently removed. This behavior has been restored.
+
+
+    .. change::
+        :tags: bug, engine
+        :tickets: 6958
+
+        Ensure that ``str()`` is called on the an
+        :paramref:`_url.URL.create.password` argument, allowing usage of objects
+        that implement the ``__str__()`` method as password attributes. Also
+        clarified that one such object is not appropriate to dynamically change the
+        password for each database connection; the approaches at
+        :ref:`engines_dynamic_tokens` should be used instead.
+
+    .. change::
+        :tags: bug, orm, regression
+        :tickets: 6979
+
+        Fixed ORM issue where column expressions passed to ``query()`` or
+        ORM-enabled ``select()`` would be deduplicated on the identity of the
+        object, such as a phrase like ``select(A.id, null(), null())`` would
+        produce only one "NULL" expression, which previously was not the case in
+        1.3. However, the change also allows for ORM expressions to render as given
+        as well, such as ``select(A.data, A.data)`` will produce a result row with
+        two columns.
+
+    .. change::
+        :tags: bug, engine
+        :tickets: 6983
+
+        Fixed issue in :class:`_engine.URL` where validation of "drivername" would
+        not appropriately respond to the ``None`` value where a string were
+        expected.
+
+    .. change::
+        :tags: bug, mypy
+        :tickets: 6950
+
+        Fixed issue where mypy plugin would crash when interpreting a
+        ``query_expression()`` construct.
+
+    .. change::
+        :tags: usecase, sql
+        :tickets: 4123
+
+        Added new parameter :paramref:`_sql.HasCTE.cte.nesting` to the
+        :class:`_sql.CTE` constructor and :meth:`_sql.HasCTE.cte` method, which
+        flags the CTE as one which should remain nested within an enclosing CTE,
+        rather than being moved to the top level of the outermost SELECT. While in
+        the vast majority of cases there is no difference in SQL functionality,
+        users have identified various edge-cases where true nesting of CTE
+        constructs is desirable. Much thanks to Eric Masseran for lots of work on
+        this intricate feature.
+
+    .. change::
+        :tags: usecase, engine, orm
+        :tickets: 6990
+
+        Added new methods :meth:`_orm.Session.scalars`,
+        :meth:`_engine.Connection.scalars`, :meth:`_asyncio.AsyncSession.scalars`
+        and :meth:`_asyncio.AsyncSession.stream_scalars`, which provide a short cut
+        to the use case of receiving a row-oriented :class:`_result.Result` object
+        and converting it to a :class:`_result.ScalarResult` object via the
+        :meth:`_engine.Result.scalars` method, to return a list of values rather
+        than a list of rows. The new methods are analogous to the long existing
+        :meth:`_orm.Session.scalar` and :meth:`_engine.Connection.scalar` methods
+        used to return a single value from the first row only. Pull request
+        courtesy Miguel Grinberg.
+
+    .. change::
+        :tags: usecase, orm
+        :tickets: 6955
+
+        Added loader options to :meth:`_orm.Session.merge` and
+        :meth:`_asyncio.AsyncSession.merge` via a new
+        :paramref:`_orm.Session.merge.options` parameter, which will apply the
+        given loader options to the ``get()`` used internally by merge, allowing
+        eager loading of relationships etc. to be applied when the merge process
+        loads a new object. Pull request courtesy Daniel Stone.
+
+    .. change::
+        :tags: feature, asyncio, mysql
+        :tickets: 6993
+
+        Added initial support for the ``asyncmy`` asyncio database driver for MySQL
+        and MariaDB. This driver is very new, however appears to be the only
+        current alternative to the ``aiomysql`` driver which currently appears to
+        be unmaintained and is not working with current Python versions. Much
+        thanks to long2ice for the pull request for this dialect.
+
+        .. seealso::
+
+            :ref:`asyncmy`
+
+    .. change::
+        :tags: bug, asyncio
+
+        Added missing ``**kw`` arguments to the
+        :meth:`_asyncio.AsyncSession.connection` method.
+
+    .. change::
+        :tags: bug, sql
+        :tickets: 7055
+
+        Fixed a two issues where combinations of ``select()`` and ``join()`` when
+        adapted to form a copy of the element would not completely copy the state
+        of all column objects associated with subqueries. A key problem this caused
+        is that usage of the :meth:`_sql.ClauseElement.params` method (which should
+        probably be moved into a legacy category as it is inefficient and error
+        prone) would leave copies of the old :class:`_sql.BindParameter` objects
+        around, leading to issues in correctly setting the parameters at execution
+        time.
+
+
+
+    .. change::
+        :tags: bug, orm, regression
+        :tickets: 6924
+
+        Fixed issue in recently repaired ``Query.with_entities()`` method where the
+        flag that determines automatic uniquing for legacy ORM ``Query`` objects
+        only would be set to ``True`` inappropriately in cases where the
+        ``with_entities()`` call would be setting the ``Query`` to return
+        column-only rows, which are not uniqued.
+
+    .. change::
+        :tags: bug, postgresql
+        :tickets: 6912
+
+        Qualify ``version()`` call to avoid shadowing issues if a different
+        search path is configured by the user.
+
+    .. change::
+        :tags: bug, engine, postgresql
+        :tickets: 6963
+
+        Fixed issue where an engine that had
+        :paramref:`_sa.create_engine.implicit_returning` set to False would fail to
+        function when PostgreSQL's "fast insertmany" feature were used in
+        conjunction with a ``Sequence``, as well as if any kind of "executemany"
+        with "return_defaults()" were used in conjunction with a ``Sequence``. Note
+        that PostgreSQL "fast insertmany" uses "RETURNING" by definition, when the
+        SQL statement is passed to the driver; overall, the
+        :paramref:`_sa.create_engine.implicit_returning` flag is legacy and has no
+        real use in modern SQLAlchemy, and will be deprecated in a separate change.
+
+    .. change::
+        :tags: bug, mypy
+        :tickets: 6937
+
+        Fixed issue in mypy plugin where columns on a mixin would not be correctly
+        interpreted if the mapped class relied upon a ``__tablename__`` routine
+        that came from a superclass.
+
+    .. change::
+        :tags: bug, postgresql
+        :tickets: 6106
+
+        The :class:`_postgresql.ENUM` datatype is PostgreSQL-native and therefore
+        should not be used with the ``native_enum=False`` flag. This flag is now
+        ignored if passed to the :class:`_postgresql.ENUM` datatype and a warning
+        is emitted; previously the flag would cause the type object to fail to
+        function correctly.
+
+
+    .. change::
+        :tags: bug, sql
+        :tickets: 7036
+
+        Fixed issue related to new :meth:`_sql.HasCTE.add_cte` feature where
+        pairing two "INSERT..FROM SELECT" statements simultaneously would lose
+        track of the two independent SELECT statements, leading to the wrong SQL.
+
+    .. change::
+        :tags: asyncio, bug
+        :tickets: 6746
+
+        Deprecate usage of :class:`_orm.scoped_session` with asyncio drivers. When
+        using Asyncio the :class:`_asyncio.async_scoped_session` should be used
+        instead.
+
+    .. change::
+        :tags: bug, platform
+        :tickets: 7024
+
+        Further adjusted the "greenlet" package specifier in setup.cfg to use a
+        long chain of "or" expressions, so that the comparison of
+        ``platform_machine`` to a specific identifier matches only the complete
+        string.
+
+    .. change::
+        :tags: bug, sqlite
+
+        Fixed bug where the error message for SQLite invalid isolation level on the
+        pysqlite driver would fail to indicate that "AUTOCOMMIT" is one of the
+        valid isolation levels.
+
+    .. change::
+        :tags: bug, sql
+        :tickets: 7060
+
+        Fixed issue where using ORM column expressions as keys in the list of
+        dictionaries passed to :meth:`_sql.Insert.values` for "multi-valued insert"
+        would not be processed correctly into the correct column expressions.
+
+    .. change::
+        :tags: asyncio, usecase
+        :tickets: 6746
+
+        The :class:`_asyncio.AsyncSession` now supports overriding which
+        :class:`_orm.Session` it uses as the proxied instance. A custom ``Session``
+        class can be passed using the :paramref:`.AsyncSession.sync_session_class`
+        parameter or by subclassing the ``AsyncSession`` and specifying a custom
+        :attr:`.AsyncSession.sync_session_class`.
+
+    .. change::
+        :tags: bug, oracle, performance
+        :tickets: 4486
+
+        Added a CAST(VARCHAR2(128)) to the "table name", "owner", and other
+        DDL-name parameters as used in reflection queries against Oracle system
+        views such as ALL_TABLES, ALL_TAB_CONSTRAINTS, etc to better enable
+        indexing to take place against these columns, as they previously would be
+        implicitly handled as NVARCHAR2 due to Python's use of Unicode for strings;
+        these columns are documented in all Oracle versions as being VARCHAR2 with
+        lengths varying from 30 to 128 characters depending on server version.
+        Additionally, test support has been enabled for Unicode-named DDL
+        structures against Oracle databases.
 
 .. changelog::
     :version: 1.4.23
diff --git a/doc/build/changelog/unreleased_14/4123.rst b/doc/build/changelog/unreleased_14/4123.rst
deleted file mode 100644 (file)
index cc2ad97..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-.. change::
-    :tags: usecase, sql
-    :tickets: 4123
-
-    Added new parameter :paramref:`_sql.HasCTE.cte.nesting` to the
-    :class:`_sql.CTE` constructor and :meth:`_sql.HasCTE.cte` method, which
-    flags the CTE as one which should remain nested within an enclosing CTE,
-    rather than being moved to the top level of the outermost SELECT. While in
-    the vast majority of cases there is no difference in SQL functionality,
-    users have identified various edge-cases where true nesting of CTE
-    constructs is desirable. Much thanks to Eric Masseran for lots of work on
-    this intricate feature.
diff --git a/doc/build/changelog/unreleased_14/4486.rst b/doc/build/changelog/unreleased_14/4486.rst
deleted file mode 100644 (file)
index 45007a2..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.. change::
-    :tags: bug, oracle, performance
-    :tickets: 4486
-
-    Added a CAST(VARCHAR2(128)) to the "table name", "owner", and other
-    DDL-name parameters as used in reflection queries against Oracle system
-    views such as ALL_TABLES, ALL_TAB_CONSTRAINTS, etc to better enable
-    indexing to take place against these columns, as they previously would be
-    implicitly handled as NVARCHAR2 due to Python's use of Unicode for strings;
-    these columns are documented in all Oracle versions as being VARCHAR2 with
-    lengths varying from 30 to 128 characters depending on server version.
-    Additionally, test support has been enabled for Unicode-named DDL
-    structures against Oracle databases.
diff --git a/doc/build/changelog/unreleased_14/6106.rst b/doc/build/changelog/unreleased_14/6106.rst
deleted file mode 100644 (file)
index 9fa6031..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-.. change::
-    :tags: bug, postgresql
-    :tickets: 6106
-
-    The :class:`_postgresql.ENUM` datatype is PostgreSQL-native and therefore
-    should not be used with the ``native_enum=False`` flag. This flag is now
-    ignored if passed to the :class:`_postgresql.ENUM` datatype and a warning
-    is emitted; previously the flag would cause the type object to fail to
-    function correctly.
-
diff --git a/doc/build/changelog/unreleased_14/6689.rst b/doc/build/changelog/unreleased_14/6689.rst
deleted file mode 100644 (file)
index 6abebc5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-.. change::
-    :tags: asyncio, usecase
-    :tickets: 6746
-
-    The :class:`_asyncio.AsyncSession` now supports overriding which
-    :class:`_orm.Session` it uses as the proxied instance. A custom ``Session``
-    class can be passed using the :paramref:`.AsyncSession.sync_session_class`
-    parameter or by subclassing the ``AsyncSession`` and specifying a custom
-    :attr:`.AsyncSession.sync_session_class`.
diff --git a/doc/build/changelog/unreleased_14/6746.rst b/doc/build/changelog/unreleased_14/6746.rst
deleted file mode 100644 (file)
index f0fd161..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-.. change::
-    :tags: asyncio, bug
-    :tickets: 6746
-
-    Deprecate usage of :class:`_orm.scoped_session` with asyncio drivers. When
-    using Asyncio the :class:`_asyncio.async_scoped_session` should be used
-    instead.
diff --git a/doc/build/changelog/unreleased_14/6832.rst b/doc/build/changelog/unreleased_14/6832.rst
deleted file mode 100644 (file)
index 22c50e2..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-.. change::
-    :tags: engine, asyncio, usecase
-    :tickets: 6832
-
-    Improve the interface used by adapted drivers, like the asyncio ones,
-    to access the actual connection object returned by the driver.
-
-    The :class:`._ConnectionFairy` object has two new attributes:
-
-    * :attr:`._ConnectionFairy.dbapi_connection` always represents a DBAPI
-      compatible object. For pep-249 drivers, this is the DBAPI connection as
-      it always has been, previously accessed under the ``.connection``
-      attribute. For asyncio drivers that SQLAlchemy adapts into a pep-249
-      interface, the returned object will normally be a SQLAlchemy adaption
-      object called :class:`_engine.AdaptedConnection`.
-    * :attr:`._ConnectionFairy.driver_connection` always represents the actual
-      connection object maintained by the third party pep-249 DBAPI or async
-      driver in use. For standard pep-249 DBAPIs, this will always be the same
-      object as that of the ``dbapi_connection``. For an asyncio driver, it
-      will be the underlying asyncio-only connection object.
-
-    The ``.connection`` attribute remains available and is now a legacy alias
-    of ``.dbapi_connection``.
-
-    .. seealso::
-
-        :ref:`faq_dbapi_connection`
-
diff --git a/doc/build/changelog/unreleased_14/6910.rst b/doc/build/changelog/unreleased_14/6910.rst
deleted file mode 100644 (file)
index 1e0833e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-.. change::
-    :tags: bug, mssql, reflection
-    :tickets: 6910
-
-    Fixed an issue where :meth:`_reflection.has_table` returned
-    ``True`` for local temporary tables that actually belonged to a
-    different SQL Server session (connection). An extra check is now
-    performed to ensure that the temp table detected is in fact owned
-    by the current session.
diff --git a/doc/build/changelog/unreleased_14/6912.rst b/doc/build/changelog/unreleased_14/6912.rst
deleted file mode 100644 (file)
index 4a8be5e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-.. change::
-    :tags: bug, postgresql
-    :tickets: 6912
-
-    Qualify ``version()`` call to avoid shadowing issues if a different
-    search path is configured by the user.
diff --git a/doc/build/changelog/unreleased_14/6913.rst b/doc/build/changelog/unreleased_14/6913.rst
deleted file mode 100644 (file)
index 0acad24..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-.. change::
-    :tags: bug, engine, regression
-    :tickets: 6913
-
-    Fixed issue where the ability of the
-    :meth:`_events.ConnectionEvents.before_execute` method to alter the SQL
-    statement object passed, returning the new object to be invoked, was
-    inadvertently removed. This behavior has been restored.
-
diff --git a/doc/build/changelog/unreleased_14/6924.rst b/doc/build/changelog/unreleased_14/6924.rst
deleted file mode 100644 (file)
index 215dcc4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-.. change::
-    :tags: bug, orm, regression
-    :tickets: 6924
-
-    Fixed issue in recently repaired ``Query.with_entities()`` method where the
-    flag that determines automatic uniquing for legacy ORM ``Query`` objects
-    only would be set to ``True`` inappropriately in cases where the
-    ``with_entities()`` call would be setting the ``Query`` to return
-    column-only rows, which are not uniqued.
diff --git a/doc/build/changelog/unreleased_14/6937.rst b/doc/build/changelog/unreleased_14/6937.rst
deleted file mode 100644 (file)
index 5dfadd5..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-.. change::
-    :tags: bug, mypy
-    :tickets: 6937
-
-    Fixed issue in mypy plugin where columns on a mixin would not be correctly
-    interpreted if the mapped class relied upon a ``__tablename__`` routine
-    that came from a superclass.
diff --git a/doc/build/changelog/unreleased_14/6943.rst b/doc/build/changelog/unreleased_14/6943.rst
deleted file mode 100644 (file)
index 4b980d0..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-.. change::
-    :tags: bug, asyncio
-    :tickets: 6943
-
-    Fixed a bug in :meth:`_asyncio.AsyncSession.execute` and
-    :meth:`_asyncio.AsyncSession.stream` that required ``execution_options``
-    to be an instance of ``immutabledict`` when defined. It now
-    correctly accepts any mapping.
diff --git a/doc/build/changelog/unreleased_14/6950.rst b/doc/build/changelog/unreleased_14/6950.rst
deleted file mode 100644 (file)
index cdfe69e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-.. change::
-    :tags: bug, mypy
-    :tickets: 6950
-
-    Fixed issue where mypy plugin would crash when interpreting a
-    ``query_expression()`` construct.
diff --git a/doc/build/changelog/unreleased_14/6955.rst b/doc/build/changelog/unreleased_14/6955.rst
deleted file mode 100644 (file)
index c9ddbf1..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-.. change::
-    :tags: usecase, orm
-    :tickets: 6955
-
-    Added loader options to :meth:`_orm.Session.merge` and
-    :meth:`_asyncio.AsyncSession.merge` via a new
-    :paramref:`_orm.Session.merge.options` parameter, which will apply the
-    given loader options to the ``get()`` used internally by merge, allowing
-    eager loading of relationships etc. to be applied when the merge process
-    loads a new object. Pull request courtesy Daniel Stone.
diff --git a/doc/build/changelog/unreleased_14/6958.rst b/doc/build/changelog/unreleased_14/6958.rst
deleted file mode 100644 (file)
index 1b9c8d0..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-.. change::
-    :tags: bug, engine
-    :tickets: 6958
-
-    Ensure that ``str()`` is called on the an
-    :paramref:`_url.URL.create.password` argument, allowing usage of objects
-    that implement the ``__str__()`` method as password attributes. Also
-    clarified that one such object is not appropriate to dynamically change the
-    password for each database connection; the approaches at
-    :ref:`engines_dynamic_tokens` should be used instead.
diff --git a/doc/build/changelog/unreleased_14/6963.rst b/doc/build/changelog/unreleased_14/6963.rst
deleted file mode 100644 (file)
index 130f741..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.. change::
-    :tags: bug, engine, postgresql
-    :tickets: 6963
-
-    Fixed issue where an engine that had
-    :paramref:`_sa.create_engine.implicit_returning` set to False would fail to
-    function when PostgreSQL's "fast insertmany" feature were used in
-    conjunction with a ``Sequence``, as well as if any kind of "executemany"
-    with "return_defaults()" were used in conjunction with a ``Sequence``. Note
-    that PostgreSQL "fast insertmany" uses "RETURNING" by definition, when the
-    SQL statement is passed to the driver; overall, the
-    :paramref:`_sa.create_engine.implicit_returning` flag is legacy and has no
-    real use in modern SQLAlchemy, and will be deprecated in a separate change.
\ No newline at end of file
diff --git a/doc/build/changelog/unreleased_14/6979.rst b/doc/build/changelog/unreleased_14/6979.rst
deleted file mode 100644 (file)
index cdf89bb..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-.. change::
-    :tags: bug, orm, regression
-    :tickets: 6979
-
-    Fixed ORM issue where column expressions passed to ``query()`` or
-    ORM-enabled ``select()`` would be deduplicated on the identity of the
-    object, such as a phrase like ``select(A.id, null(), null())`` would
-    produce only one "NULL" expression, which previously was not the case in
-    1.3. However, the change also allows for ORM expressions to render as given
-    as well, such as ``select(A.data, A.data)`` will produce a result row with
-    two columns.
diff --git a/doc/build/changelog/unreleased_14/6983.rst b/doc/build/changelog/unreleased_14/6983.rst
deleted file mode 100644 (file)
index ae69bdb..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-.. change::
-    :tags: bug, engine
-    :tickets: 6983
-
-    Fixed issue in :class:`_engine.URL` where validation of "drivername" would
-    not appropriately respond to the ``None`` value where a string were
-    expected.
diff --git a/doc/build/changelog/unreleased_14/6990.rst b/doc/build/changelog/unreleased_14/6990.rst
deleted file mode 100644 (file)
index 1a53ad2..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-.. change::
-    :tags: usecase, engine, orm
-    :tickets: 6990
-
-    Added new methods :meth:`_orm.Session.scalars`,
-    :meth:`_engine.Connection.scalars`, :meth:`_asyncio.AsyncSession.scalars`
-    and :meth:`_asyncio.AsyncSession.stream_scalars`, which provide a short cut
-    to the use case of receiving a row-oriented :class:`_result.Result` object
-    and converting it to a :class:`_result.ScalarResult` object via the
-    :meth:`_engine.Result.scalars` method, to return a list of values rather
-    than a list of rows. The new methods are analogous to the long existing
-    :meth:`_orm.Session.scalar` and :meth:`_engine.Connection.scalar` methods
-    used to return a single value from the first row only. Pull request
-    courtesy Miguel Grinberg.
diff --git a/doc/build/changelog/unreleased_14/6993.rst b/doc/build/changelog/unreleased_14/6993.rst
deleted file mode 100644 (file)
index fd2122e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.. change::
-    :tags: feature, asyncio, mysql
-    :tickets: 6993
-
-    Added initial support for the ``asyncmy`` asyncio database driver for MySQL
-    and MariaDB. This driver is very new, however appears to be the only
-    current alternative to the ``aiomysql`` driver which currently appears to
-    be unmaintained and is not working with current Python versions. Much
-    thanks to long2ice for the pull request for this dialect.
-
-    .. seealso::
-
-        :ref:`asyncmy`
diff --git a/doc/build/changelog/unreleased_14/7024.rst b/doc/build/changelog/unreleased_14/7024.rst
deleted file mode 100644 (file)
index 9f9e1b4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-.. change::
-    :tags: bug, platform
-    :tickets: 7024
-
-    Further adjusted the "greenlet" package specifier in setup.cfg to use a
-    long chain of "or" expressions, so that the comparison of
-    ``platform_machine`` to a specific identifier matches only the complete
-    string.
diff --git a/doc/build/changelog/unreleased_14/7036.rst b/doc/build/changelog/unreleased_14/7036.rst
deleted file mode 100644 (file)
index 69b6f8d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-.. change::
-    :tags: bug, sql
-    :tickets: 7036
-
-    Fixed issue related to new :meth:`_sql.HasCTE.add_cte` feature where
-    pairing two "INSERT..FROM SELECT" statements simultaneously would lose
-    track of the two independent SELECT statements, leading to the wrong SQL.
diff --git a/doc/build/changelog/unreleased_14/7052.rst b/doc/build/changelog/unreleased_14/7052.rst
deleted file mode 100644 (file)
index 748011b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-.. change::
-    :tags: bug, sql
-    :tickets: 7052
-
-    Implemented missing methods in :class:`_functions.FunctionElement` which,
-    while unused, would lead pylint to report them as unimplemented abstract
-    methods.
diff --git a/doc/build/changelog/unreleased_14/7055.rst b/doc/build/changelog/unreleased_14/7055.rst
deleted file mode 100644 (file)
index 50d0c4e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-.. change::
-    :tags: bug, sql
-    :tickets: 7055
-
-    Fixed a two issues where combinations of ``select()`` and ``join()`` when
-    adapted to form a copy of the element would not completely copy the state
-    of all column objects associated with subqueries. A key problem this caused
-    is that usage of the :meth:`_sql.ClauseElement.params` method (which should
-    probably be moved into a legacy category as it is inefficient and error
-    prone) would leave copies of the old :class:`_sql.BindParameter` objects
-    around, leading to issues in correctly setting the parameters at execution
-    time.
-
-
diff --git a/doc/build/changelog/unreleased_14/7060.rst b/doc/build/changelog/unreleased_14/7060.rst
deleted file mode 100644 (file)
index 3df1325..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-.. change::
-    :tags: bug, sql
-    :tickets: 7060
-
-    Fixed issue where using ORM column expressions as keys in the list of
-    dictionaries passed to :meth:`_sql.Insert.values` for "multi-valued insert"
-    would not be processed correctly into the correct column expressions.
diff --git a/doc/build/changelog/unreleased_14/async_conn.rst b/doc/build/changelog/unreleased_14/async_conn.rst
deleted file mode 100644 (file)
index 7acb147..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-.. change::
-    :tags: bug, asyncio
-
-    Added missing ``**kw`` arguments to the
-    :meth:`_asyncio.AsyncSession.connection` method.
diff --git a/doc/build/changelog/unreleased_14/sqlite_autocommit.rst b/doc/build/changelog/unreleased_14/sqlite_autocommit.rst
deleted file mode 100644 (file)
index 183e0ee..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-.. change::
-    :tags: bug, sqlite
-
-    Fixed bug where the error message for SQLite invalid isolation level on the
-    pysqlite driver would fail to indicate that "AUTOCOMMIT" is one of the
-    valid isolation levels.
index a1232f51fd3efa3f703935d8af77ff4d01c61ecd..e534b1b199fe5c3e3540ca3b254b721af00483e5 100644 (file)
@@ -196,9 +196,9 @@ copyright = u"2007-2021, the SQLAlchemy authors and contributors"  # noqa
 # The short X.Y version.
 version = "1.4"
 # The full version, including alpha/beta/rc tags.
-release = "1.4.23"
+release = "1.4.24"
 
-release_date = "August 18, 2021"
+release_date = "September 22, 2021"
 
 site_base = os.environ.get("RTD_SITE_BASE", "https://www.sqlalchemy.org")
 site_adapter_template = "docs_adapter.mako"