From: Mike Bayer Date: Wed, 22 Sep 2021 15:18:00 +0000 (-0400) Subject: - 1.4.24 X-Git-Tag: rel_1_4_24 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=288280829a8391985674e23ed1981d904268780c;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - 1.4.24 --- diff --git a/doc/build/changelog/changelog_14.rst b/doc/build/changelog/changelog_14.rst index 06aa978fbd..6d5ff4ce30 100644 --- a/doc/build/changelog/changelog_14.rst +++ b/doc/build/changelog/changelog_14.rst @@ -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 index cc2ad97689..0000000000 --- a/doc/build/changelog/unreleased_14/4123.rst +++ /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 index 45007a2372..0000000000 --- a/doc/build/changelog/unreleased_14/4486.rst +++ /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 index 9fa60317e7..0000000000 --- a/doc/build/changelog/unreleased_14/6106.rst +++ /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 index 6abebc5f3c..0000000000 --- a/doc/build/changelog/unreleased_14/6689.rst +++ /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 index f0fd1614ec..0000000000 --- a/doc/build/changelog/unreleased_14/6746.rst +++ /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 index 22c50e2218..0000000000 --- a/doc/build/changelog/unreleased_14/6832.rst +++ /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 index 1e0833ed87..0000000000 --- a/doc/build/changelog/unreleased_14/6910.rst +++ /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 index 4a8be5e2e1..0000000000 --- a/doc/build/changelog/unreleased_14/6912.rst +++ /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 index 0acad24ce4..0000000000 --- a/doc/build/changelog/unreleased_14/6913.rst +++ /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 index 215dcc425e..0000000000 --- a/doc/build/changelog/unreleased_14/6924.rst +++ /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 index 5dfadd552a..0000000000 --- a/doc/build/changelog/unreleased_14/6937.rst +++ /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 index 4b980d0edd..0000000000 --- a/doc/build/changelog/unreleased_14/6943.rst +++ /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 index cdfe69e88d..0000000000 --- a/doc/build/changelog/unreleased_14/6950.rst +++ /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 index c9ddbf12e5..0000000000 --- a/doc/build/changelog/unreleased_14/6955.rst +++ /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 index 1b9c8d0367..0000000000 --- a/doc/build/changelog/unreleased_14/6958.rst +++ /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 index 130f741cb4..0000000000 --- a/doc/build/changelog/unreleased_14/6963.rst +++ /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 index cdf89bb58c..0000000000 --- a/doc/build/changelog/unreleased_14/6979.rst +++ /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 index ae69bdbaa6..0000000000 --- a/doc/build/changelog/unreleased_14/6983.rst +++ /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 index 1a53ad2fa6..0000000000 --- a/doc/build/changelog/unreleased_14/6990.rst +++ /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 index fd2122eef7..0000000000 --- a/doc/build/changelog/unreleased_14/6993.rst +++ /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 index 9f9e1b4fbe..0000000000 --- a/doc/build/changelog/unreleased_14/7024.rst +++ /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 index 69b6f8db86..0000000000 --- a/doc/build/changelog/unreleased_14/7036.rst +++ /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 index 748011b151..0000000000 --- a/doc/build/changelog/unreleased_14/7052.rst +++ /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 index 50d0c4e495..0000000000 --- a/doc/build/changelog/unreleased_14/7055.rst +++ /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 index 3df13259b4..0000000000 --- a/doc/build/changelog/unreleased_14/7060.rst +++ /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 index 7acb147ad2..0000000000 --- a/doc/build/changelog/unreleased_14/async_conn.rst +++ /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 index 183e0eeed4..0000000000 --- a/doc/build/changelog/unreleased_14/sqlite_autocommit.rst +++ /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. diff --git a/doc/build/conf.py b/doc/build/conf.py index a1232f51fd..e534b1b199 100644 --- a/doc/build/conf.py +++ b/doc/build/conf.py @@ -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"