From e3ce7ee2ee5b647416654763bd0c8c781b88d79f Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 28 Jun 2021 16:29:28 -0400 Subject: [PATCH] - 1.4.20 --- doc/build/changelog/changelog_14.rst | 121 ++++++++++++++++++++- doc/build/changelog/unreleased_14/5348.rst | 11 -- doc/build/changelog/unreleased_14/6538.rst | 11 -- doc/build/changelog/unreleased_14/6646.rst | 7 -- doc/build/changelog/unreleased_14/6659.rst | 10 -- doc/build/changelog/unreleased_14/6665.rst | 9 -- doc/build/changelog/unreleased_14/6668.rst | 13 --- doc/build/changelog/unreleased_14/6678.rst | 13 --- doc/build/changelog/unreleased_14/6679.rst | 16 --- doc/build/changelog/unreleased_14/6680.rst | 9 -- doc/build/changelog/unreleased_14/6685.rst | 10 -- doc/build/conf.py | 4 +- 12 files changed, 122 insertions(+), 112 deletions(-) delete mode 100644 doc/build/changelog/unreleased_14/5348.rst delete mode 100644 doc/build/changelog/unreleased_14/6538.rst delete mode 100644 doc/build/changelog/unreleased_14/6646.rst delete mode 100644 doc/build/changelog/unreleased_14/6659.rst delete mode 100644 doc/build/changelog/unreleased_14/6665.rst delete mode 100644 doc/build/changelog/unreleased_14/6668.rst delete mode 100644 doc/build/changelog/unreleased_14/6678.rst delete mode 100644 doc/build/changelog/unreleased_14/6679.rst delete mode 100644 doc/build/changelog/unreleased_14/6680.rst delete mode 100644 doc/build/changelog/unreleased_14/6685.rst diff --git a/doc/build/changelog/changelog_14.rst b/doc/build/changelog/changelog_14.rst index 2b4f2207f6..178ad3ef19 100644 --- a/doc/build/changelog/changelog_14.rst +++ b/doc/build/changelog/changelog_14.rst @@ -15,7 +15,126 @@ This document details individual issue-level changes made throughout .. changelog:: :version: 1.4.20 - :include_notes_from: unreleased_14 + :released: June 28, 2021 + + .. change:: + :tags: bug, regression, orm + :tickets: 6680 + + Fixed regression in ORM regarding an internal reconstitution step for the + :func:`_orm.with_polymorphic` construct, when the user-facing object is + garbage collected as the query is processed. The reconstitution was not + ensuring the sub-entities for the "polymorphic" case were handled, leading + to an ``AttributeError``. + + .. change:: + :tags: usecase, sql + :tickets: 6646 + + Add a impl parameter to :class:`_types.PickleType` constructor, allowing + any arbitary type to be used in place of the default implementation of + :class:`_types.LargeBinary`. Pull request courtesy jason3gb. + + .. change:: + :tags: bug, engine + :tickets: 5348 + + Fixed an issue in the C extension for the :class:`_result.Row` class which + could lead to a memory leak in the unlikely case of a :class:`_result.Row` + object which referred to an ORM object that then was mutated to refer back + to the ``Row`` itself, creating a cycle. The Python C APIs for tracking GC + cycles has been added to the native :class:`_result.Row` implementation to + accommodate for this case. + + + .. change:: + :tags: bug, engine + :tickets: 6665 + + Fixed old issue where a :func:`_sql.select()` made against the token "*", + which then yielded exactly one column, would fail to correctly organize the + ``cursor.description`` column name into the keys of the result object. + + + + .. change:: + :tags: usecase, mysql + :tickets: 6659 + + Made a small adjustment in the table reflection feature of the MySQL + dialect to accommodate for alternate MySQL-oriented databases such as TiDB + which include their own "comment" directives at the end of a constraint + directive within "CREATE TABLE" where the format doesn't have the + additional space character after the comment, in this case the TiDB + "clustered index" feature. Pull request courtesy Daniël van Eeden. + + .. change:: + :tags: bug, schema + :tickets: 6685 + + Fixed issue where passing ``None`` for the value of + :paramref:`_schema.Table.prefixes` would not store an empty list, but + rather the constant ``None``, which may be unexpected by third party + dialects. The issue is revealed by a usage in recent versions of Alembic + that are passing ``None`` for this value. Pull request courtesy Kai + Mueller. + + .. change:: + :tags: bug, regression, ext + :tickets: 6679 + + Fixed regression in :mod:`sqlalchemy.ext.automap` extension such that the + use case of creating an explicit mapped class to a table that is also the + :paramref:`_orm.relationship.secondary` element of a + :func:`_orm.relationship` that automap will be generating would emit the + "overlaps" warnings introduced in 1.4 and discussed at :ref:`error_qzyx`. + While generating this case from automap is still subject to the same + caveats that the "overlaps" warning refers towards, as automap is intended + for more ad-hoc use cases, the condition which produces the warning is + disabled when a many-to-many relationship with this particular pattern is + generated. + + + + .. change:: + :tags: bug, regression, orm + :tickets: 6678 + + Adjusted :meth:`_orm.Query.union` and similar set operations to be + correctly compatible with the new capabilities just added in + :ticket:`6661`, with SQLAlchemy 1.4.19, such that the SELECT statements + rendered as elements of the UNION or other set operation will include + directly mapped columns that are mapped as deferred; this both fixes a + regression involving unions with multiple levels of nesting that would + produce a column mismatch, and also allows the :func:`_orm.undefer` option + to be used at the top level of such a :class:`_orm.Query` without having to + apply the option to each of the elements within the UNION. + + .. change:: + :tags: bug, sql, orm + :tickets: 6668 + + Fixed the class hierarchy for the :class:`_schema.Sequence` and the more + general :class:`_schema.DefaultGenerator` base, as these are "executable" + as statements they need to include :class:`_sql.Executable` in their + hierarchy, not just :class:`_roles.StatementRole` as was applied + arbitrarily to :class:`_schema.Sequence` previously. The fix allows + :class:`_schema.Sequence` to work in all ``.execute()`` methods including + with :meth:`_orm.Session.execute` which was not working in the case that a + :meth:`_orm.SessionEvents.do_orm_execute` handler was also established. + + + .. change:: + :tags: bug, orm + :tickets: 6538 + + Adjusted the check in the mapper for a callable object that is used as a + ``@validates`` validator function or a ``@reconstructor`` reconstruction + function, to check for "callable" more liberally such as to accommodate + objects based on fundamental attributes like ``__func__`` and + ``__call___``, rather than testing for ``MethodType`` / ``FunctionType``, + allowing things like cython functions to work properly. Pull request + courtesy Miłosz Stypiński. .. changelog:: :version: 1.4.19 diff --git a/doc/build/changelog/unreleased_14/5348.rst b/doc/build/changelog/unreleased_14/5348.rst deleted file mode 100644 index 337620aa1c..0000000000 --- a/doc/build/changelog/unreleased_14/5348.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: bug, engine - :tickets: 5348 - - Fixed an issue in the C extension for the :class:`_result.Row` class which - could lead to a memory leak in the unlikely case of a :class:`_result.Row` - object which referred to an ORM object that then was mutated to refer back - to the ``Row`` itself, creating a cycle. The Python C APIs for tracking GC - cycles has been added to the native :class:`_result.Row` implementation to - accommodate for this case. - diff --git a/doc/build/changelog/unreleased_14/6538.rst b/doc/build/changelog/unreleased_14/6538.rst deleted file mode 100644 index f50b592eec..0000000000 --- a/doc/build/changelog/unreleased_14/6538.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 6538 - - Adjusted the check in the mapper for a callable object that is used as a - ``@validates`` validator function or a ``@reconstructor`` reconstruction - function, to check for "callable" more liberally such as to accommodate - objects based on fundamental attributes like ``__func__`` and - ``__call___``, rather than testing for ``MethodType`` / ``FunctionType``, - allowing things like cython functions to work properly. Pull request - courtesy Miłosz Stypiński. diff --git a/doc/build/changelog/unreleased_14/6646.rst b/doc/build/changelog/unreleased_14/6646.rst deleted file mode 100644 index 55e0ec8d5c..0000000000 --- a/doc/build/changelog/unreleased_14/6646.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: usecase, sql - :tickets: 6646 - - Add a impl parameter to :class:`_types.PickleType` constructor, allowing - any arbitary type to be used in place of the default implementation of - :class:`_types.LargeBinary`. Pull request courtesy jason3gb. \ No newline at end of file diff --git a/doc/build/changelog/unreleased_14/6659.rst b/doc/build/changelog/unreleased_14/6659.rst deleted file mode 100644 index 15e9c095b3..0000000000 --- a/doc/build/changelog/unreleased_14/6659.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: usecase, mysql - :tickets: 6659 - - Made a small adjustment in the table reflection feature of the MySQL - dialect to accommodate for alternate MySQL-oriented databases such as TiDB - which include their own "comment" directives at the end of a constraint - directive within "CREATE TABLE" where the format doesn't have the - additional space character after the comment, in this case the TiDB - "clustered index" feature. Pull request courtesy Daniël van Eeden. diff --git a/doc/build/changelog/unreleased_14/6665.rst b/doc/build/changelog/unreleased_14/6665.rst deleted file mode 100644 index f7b53d5d44..0000000000 --- a/doc/build/changelog/unreleased_14/6665.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, engine - :tickets: 6665 - - Fixed old issue where a :func:`_sql.select()` made against the token "*", - which then yielded exactly one column, would fail to correctly organize the - ``cursor.description`` column name into the keys of the result object. - - diff --git a/doc/build/changelog/unreleased_14/6668.rst b/doc/build/changelog/unreleased_14/6668.rst deleted file mode 100644 index 697b205045..0000000000 --- a/doc/build/changelog/unreleased_14/6668.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. change:: - :tags: bug, sql, orm - :tickets: 6668 - - Fixed the class hierarchy for the :class:`_schema.Sequence` and the more - general :class:`_schema.DefaultGenerator` base, as these are "executable" - as statements they need to include :class:`_sql.Executable` in their - hierarchy, not just :class:`_roles.StatementRole` as was applied - arbitrarily to :class:`_schema.Sequence` previously. The fix allows - :class:`_schema.Sequence` to work in all ``.execute()`` methods including - with :meth:`_orm.Session.execute` which was not working in the case that a - :meth:`_orm.SessionEvents.do_orm_execute` handler was also established. - diff --git a/doc/build/changelog/unreleased_14/6678.rst b/doc/build/changelog/unreleased_14/6678.rst deleted file mode 100644 index db461ee5cc..0000000000 --- a/doc/build/changelog/unreleased_14/6678.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. change:: - :tags: bug, regression, orm - :tickets: 6678 - - Adjusted :meth:`_orm.Query.union` and similar set operations to be - correctly compatible with the new capabilities just added in - :ticket:`6661`, with SQLAlchemy 1.4.19, such that the SELECT statements - rendered as elements of the UNION or other set operation will include - directly mapped columns that are mapped as deferred; this both fixes a - regression involving unions with multiple levels of nesting that would - produce a column mismatch, and also allows the :func:`_orm.undefer` option - to be used at the top level of such a :class:`_orm.Query` without having to - apply the option to each of the elements within the UNION. diff --git a/doc/build/changelog/unreleased_14/6679.rst b/doc/build/changelog/unreleased_14/6679.rst deleted file mode 100644 index ca4cd7b494..0000000000 --- a/doc/build/changelog/unreleased_14/6679.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. change:: - :tags: bug, regression, ext - :tickets: 6679 - - Fixed regression in :mod:`sqlalchemy.ext.automap` extension such that the - use case of creating an explicit mapped class to a table that is also the - :paramref:`_orm.relationship.secondary` element of a - :func:`_orm.relationship` that automap will be generating would emit the - "overlaps" warnings introduced in 1.4 and discussed at :ref:`error_qzyx`. - While generating this case from automap is still subject to the same - caveats that the "overlaps" warning refers towards, as automap is intended - for more ad-hoc use cases, the condition which produces the warning is - disabled when a many-to-many relationship with this particular pattern is - generated. - - diff --git a/doc/build/changelog/unreleased_14/6680.rst b/doc/build/changelog/unreleased_14/6680.rst deleted file mode 100644 index 7e61cf61ea..0000000000 --- a/doc/build/changelog/unreleased_14/6680.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, regression, orm - :tickets: 6680 - - Fixed regression in ORM regarding an internal reconstitution step for the - :func:`_orm.with_polymorphic` construct, when the user-facing object is - garbage collected as the query is processed. The reconstitution was not - ensuring the sub-entities for the "polymorphic" case were handled, leading - to an ``AttributeError``. diff --git a/doc/build/changelog/unreleased_14/6685.rst b/doc/build/changelog/unreleased_14/6685.rst deleted file mode 100644 index dcac516910..0000000000 --- a/doc/build/changelog/unreleased_14/6685.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, schema - :tickets: 6685 - - Fixed issue where passing ``None`` for the value of - :paramref:`_schema.Table.prefixes` would not store an empty list, but - rather the constant ``None``, which may be unexpected by third party - dialects. The issue is revealed by a usage in recent versions of Alembic - that are passing ``None`` for this value. Pull request courtesy Kai - Mueller. diff --git a/doc/build/conf.py b/doc/build/conf.py index 8dd41a92f8..b7ef6d43b1 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.19" +release = "1.4.20" -release_date = "June 22, 2021" +release_date = "June 28, 2021" site_base = os.environ.get("RTD_SITE_BASE", "http://www.sqlalchemy.org") site_adapter_template = "docs_adapter.mako" -- 2.47.2