From: Mike Bayer Date: Wed, 17 Mar 2021 18:52:41 +0000 (-0400) Subject: - 1.4.1 X-Git-Tag: rel_1_4_1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f6da955b6602563811f46f77fa436e4b8432b20d;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - 1.4.1 --- diff --git a/doc/build/changelog/changelog_14.rst b/doc/build/changelog/changelog_14.rst index ad683b9869..2309dc80f5 100644 --- a/doc/build/changelog/changelog_14.rst +++ b/doc/build/changelog/changelog_14.rst @@ -15,7 +15,125 @@ This document details individual issue-level changes made throughout .. changelog:: :version: 1.4.1 - :include_notes_from: unreleased_14 + :released: March 17, 2021 + + .. change:: + :tags: bug, orm, regression + :tickets: 6066 + + Fixed regression where producing a Core expression construct such as + :func:`_sql.select` using ORM entities would eagerly configure the mappers, + in an effort to maintain compatibility with the :class:`_orm.Query` object + which necessarily does this to support many backref-related legacy cases. + However, core :func:`_sql.select` constructs are also used in mapper + configurations and such, and to that degree this eager configuration is + more of an inconvenience, so eager configure has been disabled for the + :func:`_sql.select` and other Core constructs in the absence of ORM loading + types of functions such as :class:`_orm.Load`. + + The change maintains the behavior of :class:`_orm.Query` so that backwards + compatibility is maintained. However, when using a :func:`_sql.select` in + conjunction with ORM entities, a "backref" that isn't explicitly placed on + one of the classes until mapper configure time won't be available unless + :func:`_orm.configure_mappers` or the newer :func:`_orm.registry.configure` + has been called elsewhere. Prefer using + :paramref:`_orm.relationship.back_populates` for more explicit relationship + configuration which does not have the eager configure requirement. + + + .. change:: + :tags: bug, mssql, regression + :tickets: 6058 + + Fixed regression where a new setinputsizes() API that's available for + pyodbc was enabled, which is apparently incompatible with pyodbc's + fast_executemany() mode in the absence of more accurate typing information, + which as of yet is not fully implemented or tested. The pyodbc dialect and + connector has been modified so that setinputsizes() is not used at all + unless the parameter ``use_setinputsizes`` is passed to the dialect, e.g. + via :func:`_sa.create_engine`, at which point its behavior can be + customized using the :meth:`.DialectEvents.do_setinputsizes` hook. + + .. seealso:: + + :ref:`mssql_pyodbc_setinputsizes` + + .. change:: + :tags: bug, orm, regression + :tickets: 6055 + + Fixed a critical regression in the relationship lazy loader where the SQL + criteria used to fetch a related many-to-one object could go stale in + relation to other memoized structures within the loader if the mapper had + configuration changes, such as can occur when mappers are late configured + or configured on demand, producing a comparison to None and returning no + object. Huge thanks to Alan Hamlett for their help tracking this down late + into the night. + + + + .. change:: + :tags: bug, regression + :tickets: 6068 + + Added back ``items`` and ``values`` to ``ColumnCollection`` class. + The regression was introduced while adding support for duplicate + columns in from clauses and selectable in ticket #4753. + + + .. change:: + :tags: bug, engine, regression + :tickets: 6074 + + The Python ``namedtuple()`` has the behavior such that the names ``count`` + and ``index`` will be served as tuple values if the named tuple includes + those names; if they are absent, then their behavior as methods of + ``collections.abc.Sequence`` is maintained. Therefore the + :class:`_result.Row` and :class:`_result.LegacyRow` classes have been fixed + so that they work in this same way, maintaining the expected behavior for + database rows that have columns named "index" or "count". + + .. change:: + :tags: bug, orm, regression + :tickets: 6076 + + Fixed regression where the :meth:`_orm.Query.exists` method would fail to + create an expression if the entity list of the :class:`_orm.Query` were + an arbitrary SQL column expression. + + + .. change:: + :tags: bug, orm, regression + :tickets: 6052 + + Fixed regression where calling upon :meth:`_orm.Query.count` in conjunction + with a loader option such as :func:`_orm.joinedload` would fail to ignore + the loader option. This is a behavior that has always been very specific to + the :meth:`_orm.Query.count` method; an error is normally raised if a given + :class:`_orm.Query` has options that don't apply to what it is returning. + + .. change:: + :tags: bug, orm, declarative, regression + :tickets: 6054 + + Fixed bug where user-mapped classes that contained an attribute named + "registry" would cause conflicts with the new registry-based mapping system + when using :class:`.DeclarativeMeta`. While the attribute remains + something that can be set explicitly on a declarative base to be + consumed by the metaclass, once located it is placed under a private + class variable so it does not conflict with future subclasses that use + the same name for other purposes. + + + + .. change:: + :tags: bug, orm, regression + :tickets: 6067 + + Fixed regression in :meth:`_orm.Session.identity_key`, including that the + method and related methods were not covered by any unit test as well as + that the method contained a typo preventing it from functioning correctly. + .. changelog:: :version: 1.4.0 diff --git a/doc/build/changelog/unreleased_14/6052.rst b/doc/build/changelog/unreleased_14/6052.rst deleted file mode 100644 index bb56440240..0000000000 --- a/doc/build/changelog/unreleased_14/6052.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, orm, regression - :tickets: 6052 - - Fixed regression where calling upon :meth:`_orm.Query.count` in conjunction - with a loader option such as :func:`_orm.joinedload` would fail to ignore - the loader option. This is a behavior that has always been very specific to - the :meth:`_orm.Query.count` method; an error is normally raised if a given - :class:`_orm.Query` has options that don't apply to what it is returning. diff --git a/doc/build/changelog/unreleased_14/6054.rst b/doc/build/changelog/unreleased_14/6054.rst deleted file mode 100644 index e272df6495..0000000000 --- a/doc/build/changelog/unreleased_14/6054.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. change:: - :tags: bug, orm, declarative, regression - :tickets: 6054 - - Fixed bug where user-mapped classes that contained an attribute named - "registry" would cause conflicts with the new registry-based mapping system - when using :class:`.DeclarativeMeta`. While the attribute remains - something that can be set explicitly on a declarative base to be - consumed by the metaclass, once located it is placed under a private - class variable so it does not conflict with future subclasses that use - the same name for other purposes. - - diff --git a/doc/build/changelog/unreleased_14/6055.rst b/doc/build/changelog/unreleased_14/6055.rst deleted file mode 100644 index 77ff15eb92..0000000000 --- a/doc/build/changelog/unreleased_14/6055.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. change:: - :tags: bug, orm, regression - :tickets: 6055 - - Fixed a critical regression in the relationship lazy loader where the SQL - criteria used to fetch a related many-to-one object could go stale in - relation to other memoized structures within the loader if the mapper had - configuration changes, such as can occur when mappers are late configured - or configured on demand, producing a comparison to None and returning no - object. Huge thanks to Alan Hamlett for their help tracking this down late - into the night. - - diff --git a/doc/build/changelog/unreleased_14/6058.rst b/doc/build/changelog/unreleased_14/6058.rst deleted file mode 100644 index ae2209c9f2..0000000000 --- a/doc/build/changelog/unreleased_14/6058.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. change:: - :tags: bug, mssql, regression - :tickets: 6058 - - Fixed regression where a new setinputsizes() API that's available for - pyodbc was enabled, which is apparently incompatible with pyodbc's - fast_executemany() mode in the absence of more accurate typing information, - which as of yet is not fully implemented or tested. The pyodbc dialect and - connector has been modified so that setinputsizes() is not used at all - unless the parameter ``use_setinputsizes`` is passed to the dialect, e.g. - via :func:`_sa.create_engine`, at which point its behavior can be - customized using the :meth:`.DialectEvents.do_setinputsizes` hook. - - .. seealso:: - - :ref:`mssql_pyodbc_setinputsizes` diff --git a/doc/build/changelog/unreleased_14/6066.rst b/doc/build/changelog/unreleased_14/6066.rst deleted file mode 100644 index e2eba5a132..0000000000 --- a/doc/build/changelog/unreleased_14/6066.rst +++ /dev/null @@ -1,23 +0,0 @@ -.. change:: - :tags: bug, orm, regression - :tickets: 6066 - - Fixed regression where producing a Core expression construct such as - :func:`_sql.select` using ORM entities would eagerly configure the mappers, - in an effort to maintain compatibility with the :class:`_orm.Query` object - which necessarily does this to support many backref-related legacy cases. - However, core :func:`_sql.select` constructs are also used in mapper - configurations and such, and to that degree this eager configuration is - more of an inconvenience, so eager configure has been disabled for the - :func:`_sql.select` and other Core constructs in the absence of ORM loading - types of functions such as :class:`_orm.Load`. - - The change maintains the behavior of :class:`_orm.Query` so that backwards - compatibility is maintained. However, when using a :func:`_sql.select` in - conjunction with ORM entities, a "backref" that isn't explicitly placed on - one of the classes until mapper configure time won't be available unless - :func:`_orm.configure_mappers` or the newer :func:`_orm.registry.configure` - has been called elsewhere. Prefer using - :paramref:`_orm.relationship.back_populates` for more explicit relationship - configuration which does not have the eager configure requirement. - diff --git a/doc/build/changelog/unreleased_14/6067.rst b/doc/build/changelog/unreleased_14/6067.rst deleted file mode 100644 index 97128ec182..0000000000 --- a/doc/build/changelog/unreleased_14/6067.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, orm, regression - :tickets: 6067 - - Fixed regression in :meth:`_orm.Session.identity_key`, including that the - method and related methods were not covered by any unit test as well as - that the method contained a typo preventing it from functioning correctly. - diff --git a/doc/build/changelog/unreleased_14/6068.rst b/doc/build/changelog/unreleased_14/6068.rst deleted file mode 100644 index 240254fb1c..0000000000 --- a/doc/build/changelog/unreleased_14/6068.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, regression - :tickets: 6068 - - Added back ``items`` and ``values`` to ``ColumnCollection`` class. - The regression was introduced while adding support for duplicate - columns in from clauses and selectable in ticket #4753. - diff --git a/doc/build/changelog/unreleased_14/6074.rst b/doc/build/changelog/unreleased_14/6074.rst deleted file mode 100644 index ada5d48ad9..0000000000 --- a/doc/build/changelog/unreleased_14/6074.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: bug, engine, regression - :tickets: 6074 - - The Python ``namedtuple()`` has the behavior such that the names ``count`` - and ``index`` will be served as tuple values if the named tuple includes - those names; if they are absent, then their behavior as methods of - ``collections.abc.Sequence`` is maintained. Therefore the - :class:`_result.Row` and :class:`_result.LegacyRow` classes have been fixed - so that they work in this same way, maintaining the expected behavior for - database rows that have columns named "index" or "count". diff --git a/doc/build/changelog/unreleased_14/6076.rst b/doc/build/changelog/unreleased_14/6076.rst deleted file mode 100644 index 6677c078c1..0000000000 --- a/doc/build/changelog/unreleased_14/6076.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, orm, regression - :tickets: 6076 - - Fixed regression where the :meth:`_orm.Query.exists` method would fail to - create an expression if the entity list of the :class:`_orm.Query` were - an arbitrary SQL column expression. - diff --git a/doc/build/conf.py b/doc/build/conf.py index 43c3dd5776..68790da9ae 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.0" +release = "1.4.1" -release_date = "March 15, 2021" +release_date = "March 17, 2021" site_base = os.environ.get("RTD_SITE_BASE", "http://www.sqlalchemy.org") site_adapter_template = "docs_adapter.mako"