From 2a74994fc7d82753e565780386dfeb8a4909813a Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 6 Apr 2021 18:59:01 -0400 Subject: [PATCH] - 1.4.6 --- doc/build/changelog/changelog_14.rst | 105 ++++++++++++++++++++- doc/build/changelog/unreleased_14/6147.rst | 19 ---- doc/build/changelog/unreleased_14/6199.rst | 9 -- doc/build/changelog/unreleased_14/6202.rst | 11 --- doc/build/changelog/unreleased_14/6203.rst | 7 -- doc/build/changelog/unreleased_14/6204.rst | 14 --- doc/build/changelog/unreleased_14/6205.rst | 9 -- doc/build/changelog/unreleased_14/6206.rst | 27 ------ doc/build/conf.py | 4 +- 9 files changed, 106 insertions(+), 99 deletions(-) delete mode 100644 doc/build/changelog/unreleased_14/6147.rst delete mode 100644 doc/build/changelog/unreleased_14/6199.rst delete mode 100644 doc/build/changelog/unreleased_14/6202.rst delete mode 100644 doc/build/changelog/unreleased_14/6203.rst delete mode 100644 doc/build/changelog/unreleased_14/6204.rst delete mode 100644 doc/build/changelog/unreleased_14/6205.rst delete mode 100644 doc/build/changelog/unreleased_14/6206.rst diff --git a/doc/build/changelog/changelog_14.rst b/doc/build/changelog/changelog_14.rst index 6bc69a1f66..4c011c3f4e 100644 --- a/doc/build/changelog/changelog_14.rst +++ b/doc/build/changelog/changelog_14.rst @@ -15,7 +15,110 @@ This document details individual issue-level changes made throughout .. changelog:: :version: 1.4.6 - :include_notes_from: unreleased_14 + :released: April 6, 2021 + + .. change:: + :tags: bug, sql, regression, oracle, mssql + :tickets: 6202 + + Fixed further regressions in the same area as that of :ticket:`6173` released in + 1.4.5, where a "postcompile" parameter, again most typically those used for + LIMIT/OFFSET rendering in Oracle and SQL Server, would fail to be processed + correctly if the same parameter rendered in multiple places in the + statement. + + + + .. change:: + :tags: bug, orm, regression + :tickets: 6203 + + Fixed regression where a deprecated form of :meth:`_orm.Query.join` were + used, passing a series of entities to join from without any ON clause in a + single :meth:`_orm.Query.join` call, would fail to function correctly. + + .. change:: + :tags: bug, mypy + :tickets: 6147 + + Applied a series of refactorings and fixes to accommodate for Mypy + "incremental" mode across multiple files, which previously was not taken + into account. In this mode the Mypy plugin has to accommodate Python + datatypes expressed in other files coming in with less information than + they have on a direct run. + + Additionally, a new decorator :func:`_orm.declarative_mixin` is added, + which is necessary for the Mypy plugin to be able to definifitely identify + a Declarative mixin class that is otherwise not used inside a particular + Python file. + + .. seealso:: + + :ref:`mypy_declarative_mixins` + + + .. change:: + :tags: bug, mypy + :tickets: 6205 + + Fixed issue where the Mypy plugin would fail to interpret the + "collection_class" of a relationship if it were a callable and not a class. + Also improved type matching and error reporting for collection-oriented + relationships. + + + .. change:: + :tags: bug, sql + :tickets: 6204 + + Executing a :class:`_sql.Subquery` using :meth:`_engine.Connection.execute` + is deprecated and will emit a deprecation warning; this use case was an + oversight that should have been removed from 1.4. The operation will now + execute the underlying :class:`_sql.Select` object directly for backwards + compatibility. Similarly, the :class:`_sql.CTE` class is also not + appropriate for execution. In 1.3, attempting to execute a CTE would result + in an invalid "blank" SQL statement being executed; since this use case was + not working it now raises :class:`_exc.ObjectNotExecutableError`. + Previously, 1.4 was attempting to execute the CTE as a statement however it + was working only erratically. + + .. change:: + :tags: bug, regression, orm + :tickets: 6206 + + Fixed critical regression where the :meth:`_orm.Query.yield_per` method in + the ORM would set up the internal :class:`_engine.Result` to yield chunks + at a time, however made use of the new :meth:`_engine.Result.unique` method + which uniques across the entire result. This would lead to lost rows since + the ORM is using ``id(obj)`` as the uniquing function, which leads to + repeated identifiers for new objects as already-seen objects are garbage + collected. 1.3's behavior here was to "unique" across each chunk, which + does not actually produce "uniqued" results when results are yielded in + chunks. As the :meth:`_orm.Query.yield_per` method is already explicitly + disallowed when joined eager loading is in place, which is the primary + rationale for the "uniquing" feature, the "uniquing" feature is now turned + off entirely when :meth:`_orm.Query.yield_per` is used. + + This regression only applies to the legacy :class:`_orm.Query` object; when + using :term:`2.0 style` execution, "uniquing" is not automatically applied. + To prevent the issue from arising from explicit use of + :meth:`_engine.Result.unique`, an error is now raised if rows are fetched + from a "uniqued" ORM-level :class:`_engine.Result` if any + :ref:`yield per ` API is also in use, as the + purpose of ``yield_per`` is to allow for arbitrarily large numbers of rows, + which cannot be uniqued in memory without growing the number of entries to + fit the complete result size. + + + .. change:: + :tags: usecase, asyncio, postgresql + :tickets: 6199 + + Added accessors ``.sqlstate`` and synonym ``.pgcode`` to the ``.orig`` + attribute of the SQLAlchemy exception class raised by the asyncpg DBAPI + adapter, that is, the intermediary exception object that wraps on top of + that raised by the asyncpg library itself, but below the level of the + SQLAlchemy dialect. .. changelog:: :version: 1.4.5 diff --git a/doc/build/changelog/unreleased_14/6147.rst b/doc/build/changelog/unreleased_14/6147.rst deleted file mode 100644 index 325ae0edc7..0000000000 --- a/doc/build/changelog/unreleased_14/6147.rst +++ /dev/null @@ -1,19 +0,0 @@ -.. change:: - :tags: bug, mypy - :tickets: 6147 - - Applied a series of refactorings and fixes to accommodate for Mypy - "incremental" mode across multiple files, which previously was not taken - into account. In this mode the Mypy plugin has to accommodate Python - datatypes expressed in other files coming in with less information than - they have on a direct run. - - Additionally, a new decorator :func:`_orm.declarative_mixin` is added, - which is necessary for the Mypy plugin to be able to definifitely identify - a Declarative mixin class that is otherwise not used inside a particular - Python file. - - .. seealso:: - - :ref:`mypy_declarative_mixins` - diff --git a/doc/build/changelog/unreleased_14/6199.rst b/doc/build/changelog/unreleased_14/6199.rst deleted file mode 100644 index 0c81637f85..0000000000 --- a/doc/build/changelog/unreleased_14/6199.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: usecase, asyncio, postgresql - :tickets: 6199 - - Added accessors ``.sqlstate`` and synonym ``.pgcode`` to the ``.orig`` - attribute of the SQLAlchemy exception class raised by the asyncpg DBAPI - adapter, that is, the intermediary exception object that wraps on top of - that raised by the asyncpg library itself, but below the level of the - SQLAlchemy dialect. diff --git a/doc/build/changelog/unreleased_14/6202.rst b/doc/build/changelog/unreleased_14/6202.rst deleted file mode 100644 index a925d93ce6..0000000000 --- a/doc/build/changelog/unreleased_14/6202.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: bug, sql, regression, oracle, mssql - :tickets: 6202 - - Fixed further regressions in the same area as that of :ticket:`6173` released in - 1.4.5, where a "postcompile" parameter, again most typically those used for - LIMIT/OFFSET rendering in Oracle and SQL Server, would fail to be processed - correctly if the same parameter rendered in multiple places in the - statement. - - diff --git a/doc/build/changelog/unreleased_14/6203.rst b/doc/build/changelog/unreleased_14/6203.rst deleted file mode 100644 index 39076f1890..0000000000 --- a/doc/build/changelog/unreleased_14/6203.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: bug, orm, regression - :tickets: 6203 - - Fixed regression where a deprecated form of :meth:`_orm.Query.join` were - used, passing a series of entities to join from without any ON clause in a - single :meth:`_orm.Query.join` call, would fail to function correctly. diff --git a/doc/build/changelog/unreleased_14/6204.rst b/doc/build/changelog/unreleased_14/6204.rst deleted file mode 100644 index b6c518cb9f..0000000000 --- a/doc/build/changelog/unreleased_14/6204.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. change:: - :tags: bug, sql - :tickets: 6204 - - Executing a :class:`_sql.Subquery` using :meth:`_engine.Connection.execute` - is deprecated and will emit a deprecation warning; this use case was an - oversight that should have been removed from 1.4. The operation will now - execute the underlying :class:`_sql.Select` object directly for backwards - compatibility. Similarly, the :class:`_sql.CTE` class is also not - appropriate for execution. In 1.3, attempting to execute a CTE would result - in an invalid "blank" SQL statement being executed; since this use case was - not working it now raises :class:`_exc.ObjectNotExecutableError`. - Previously, 1.4 was attempting to execute the CTE as a statement however it - was working only erratically. diff --git a/doc/build/changelog/unreleased_14/6205.rst b/doc/build/changelog/unreleased_14/6205.rst deleted file mode 100644 index 8f79eb4521..0000000000 --- a/doc/build/changelog/unreleased_14/6205.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, mypy - :tickets: 6205 - - Fixed issue where the Mypy plugin would fail to interpret the - "collection_class" of a relationship if it were a callable and not a class. - Also improved type matching and error reporting for collection-oriented - relationships. - diff --git a/doc/build/changelog/unreleased_14/6206.rst b/doc/build/changelog/unreleased_14/6206.rst deleted file mode 100644 index c2452e0615..0000000000 --- a/doc/build/changelog/unreleased_14/6206.rst +++ /dev/null @@ -1,27 +0,0 @@ -.. change:: - :tags: bug, regression, orm - :tickets: 6206 - - Fixed critical regression where the :meth:`_orm.Query.yield_per` method in - the ORM would set up the internal :class:`_engine.Result` to yield chunks - at a time, however made use of the new :meth:`_engine.Result.unique` method - which uniques across the entire result. This would lead to lost rows since - the ORM is using ``id(obj)`` as the uniquing function, which leads to - repeated identifiers for new objects as already-seen objects are garbage - collected. 1.3's behavior here was to "unique" across each chunk, which - does not actually produce "uniqued" results when results are yielded in - chunks. As the :meth:`_orm.Query.yield_per` method is already explicitly - disallowed when joined eager loading is in place, which is the primary - rationale for the "uniquing" feature, the "uniquing" feature is now turned - off entirely when :meth:`_orm.Query.yield_per` is used. - - This regression only applies to the legacy :class:`_orm.Query` object; when - using :term:`2.0 style` execution, "uniquing" is not automatically applied. - To prevent the issue from arising from explicit use of - :meth:`_engine.Result.unique`, an error is now raised if rows are fetched - from a "uniqued" ORM-level :class:`_engine.Result` if any - :ref:`yield per ` API is also in use, as the - purpose of ``yield_per`` is to allow for arbitrarily large numbers of rows, - which cannot be uniqued in memory without growing the number of entries to - fit the complete result size. - diff --git a/doc/build/conf.py b/doc/build/conf.py index 020f61d8b5..846734fd45 100644 --- a/doc/build/conf.py +++ b/doc/build/conf.py @@ -195,9 +195,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.5" +release = "1.4.6" -release_date = "April 2, 2021" +release_date = "April 6, 2021" site_base = os.environ.get("RTD_SITE_BASE", "http://www.sqlalchemy.org") site_adapter_template = "docs_adapter.mako" -- 2.47.2