From: Mike Bayer Date: Thu, 6 May 2021 21:15:56 +0000 (-0400) Subject: - 1.4.14 X-Git-Tag: rel_1_4_14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=96d8a4acbbecfa699ad28a8441402ea166bc95c6;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - 1.4.14 --- diff --git a/doc/build/changelog/changelog_14.rst b/doc/build/changelog/changelog_14.rst index 2c4f45e39b..1945fa2a2a 100644 --- a/doc/build/changelog/changelog_14.rst +++ b/doc/build/changelog/changelog_14.rst @@ -15,7 +15,83 @@ This document details individual issue-level changes made throughout .. changelog:: :version: 1.4.14 - :include_notes_from: unreleased_14 + :released: May 6, 2021 + + .. change:: + :tags: bug, regression, orm + :tickets: 6426 + + Fixed regression involving ``lazy='dynamic'`` loader in conjunction with a + detached object. The previous behavior was that the dynamic loader upon + calling methods like ``.all()`` returns empty lists for detached objects + without error, this has been restored; however a warning is now emitted as + this is not the correct result. Other dynamic loader scenarios correctly + raise ``DetachedInstanceError``. + + .. change:: + :tags: bug, regression, sql + :tickets: 6428 + + Fixed regression caused by the "empty in" change just made in + :ticket:`6397` 1.4.12 where the expression needs to be parenthesized for + the "not in" use case, otherwise the condition will interfere with the + other filtering criteria. + + + .. change:: + :tags: bug, sql, regression + :tickets: 6436 + + The :class:`.TypeDecorator` class will now emit a warning when used in SQL + compilation with caching unless the ``.cache_ok`` flag is set to ``True`` + or ``False``. A new class-level attribute :attr:`.TypeDecorator.cache_ok` + may be set which will be used as an indication that all the parameters + passed to the object are safe to be used as a cache key if set to ``True``, + ``False`` means they are not. + + .. change:: + :tags: engine, bug, regression + :tickets: 6427 + + Established a deprecation path for calling upon the + :meth:`_cursor.CursorResult.keys` method for a statement that returns no + rows to provide support for legacy patterns used by the "records" package + as well as any other non-migrated applications. Previously, this would + raise :class:`.ResourceClosedException` unconditionally in the same way as + it does when attempting to fetch rows. While this is the correct behavior + going forward, the :class:`_cursor.LegacyCursorResult` object will now in + this case return an empty list for ``.keys()`` as it did in 1.3, while also + emitting a 2.0 deprecation warning. The :class:`_cursor.CursorResult`, used + when using a 2.0-style "future" engine, will continue to raise as it does + now. + + .. change:: + :tags: usecase, engine, orm + :tickets: 6288 + + Applied consistent behavior to the use case of + calling ``.commit()`` or ``.rollback()`` inside of an existing + ``.begin()`` context manager, with the addition of potentially + emitting SQL within the block subsequent to the commit or rollback. + This change continues upon the change first added in + :ticket:`6155` where the use case of calling "rollback" inside of + a ``.begin()`` contextmanager block was proposed: + + * calling ``.commit()`` or ``.rollback()`` will now be allowed + without error or warning within all scopes, including + that of legacy and future :class:`_engine.Engine`, ORM + :class:`_orm.Session`, asyncio :class:`.AsyncEngine`. Previously, + the :class:`_orm.Session` disallowed this. + + * The remaining scope of the context manager is then closed; + when the block ends, a check is emitted to see if the transaction + was already ended, and if so the block returns without action. + + * It will now raise **an error** if subsequent SQL of any kind + is emitted within the block, **after** ``.commit()`` or + ``.rollback()`` is called. The block should be closed as + the state of the executable object would otherwise be undefined + in this state. .. changelog:: :version: 1.4.13 diff --git a/doc/build/changelog/unreleased_14/6288.rst b/doc/build/changelog/unreleased_14/6288.rst deleted file mode 100644 index 63b0f6dda6..0000000000 --- a/doc/build/changelog/unreleased_14/6288.rst +++ /dev/null @@ -1,27 +0,0 @@ -.. change:: - :tags: usecase, engine, orm - :tickets: 6288 - - Applied consistent behavior to the use case of - calling ``.commit()`` or ``.rollback()`` inside of an existing - ``.begin()`` context manager, with the addition of potentially - emitting SQL within the block subsequent to the commit or rollback. - This change continues upon the change first added in - :ticket:`6155` where the use case of calling "rollback" inside of - a ``.begin()`` contextmanager block was proposed: - - * calling ``.commit()`` or ``.rollback()`` will now be allowed - without error or warning within all scopes, including - that of legacy and future :class:`_engine.Engine`, ORM - :class:`_orm.Session`, asyncio :class:`.AsyncEngine`. Previously, - the :class:`_orm.Session` disallowed this. - - * The remaining scope of the context manager is then closed; - when the block ends, a check is emitted to see if the transaction - was already ended, and if so the block returns without action. - - * It will now raise **an error** if subsequent SQL of any kind - is emitted within the block, **after** ``.commit()`` or - ``.rollback()`` is called. The block should be closed as - the state of the executable object would otherwise be undefined - in this state. diff --git a/doc/build/changelog/unreleased_14/6426.rst b/doc/build/changelog/unreleased_14/6426.rst deleted file mode 100644 index d0a3cc28ea..0000000000 --- a/doc/build/changelog/unreleased_14/6426.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, regression, orm - :tickets: 6426 - - Fixed regression involving ``lazy='dynamic'`` loader in conjunction with a - detached object. The previous behavior was that the dynamic loader upon - calling methods like ``.all()`` returns empty lists for detached objects - without error, this has been restored; however a warning is now emitted as - this is not the correct result. Other dynamic loader scenarios correctly - raise ``DetachedInstanceError``. diff --git a/doc/build/changelog/unreleased_14/6427.rst b/doc/build/changelog/unreleased_14/6427.rst deleted file mode 100644 index 4594ab036f..0000000000 --- a/doc/build/changelog/unreleased_14/6427.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. change:: - :tags: engine, bug, regression - :tickets: 6427 - - Established a deprecation path for calling upon the - :meth:`_cursor.CursorResult.keys` method for a statement that returns no - rows to provide support for legacy patterns used by the "records" package - as well as any other non-migrated applications. Previously, this would - raise :class:`.ResourceClosedException` unconditionally in the same way as - it does when attempting to fetch rows. While this is the correct behavior - going forward, the :class:`_cursor.LegacyCursorResult` object will now in - this case return an empty list for ``.keys()`` as it did in 1.3, while also - emitting a 2.0 deprecation warning. The :class:`_cursor.CursorResult`, used - when using a 2.0-style "future" engine, will continue to raise as it does - now. diff --git a/doc/build/changelog/unreleased_14/6428.rst b/doc/build/changelog/unreleased_14/6428.rst deleted file mode 100644 index 6071ce33a1..0000000000 --- a/doc/build/changelog/unreleased_14/6428.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, regression, sql - :tickets: 6428 - - Fixed regression caused by the "empty in" change just made in - :ticket:`6397` 1.4.12 where the expression needs to be parenthesized for - the "not in" use case, otherwise the condition will interfere with the - other filtering criteria. - diff --git a/doc/build/changelog/unreleased_14/6436.rst b/doc/build/changelog/unreleased_14/6436.rst deleted file mode 100644 index e6b83d852e..0000000000 --- a/doc/build/changelog/unreleased_14/6436.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, sql, regression - :tickets: 6436 - - The :class:`.TypeDecorator` class will now emit a warning when used in SQL - compilation with caching unless the ``.cache_ok`` flag is set to ``True`` - or ``False``. A new class-level attribute :attr:`.TypeDecorator.cache_ok` - may be set which will be used as an indication that all the parameters - passed to the object are safe to be used as a cache key if set to ``True``, - ``False`` means they are not. diff --git a/doc/build/conf.py b/doc/build/conf.py index 05a8dd6a45..12402b4357 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.13" +release = "1.4.14" -release_date = "May 3, 2021" +release_date = "May 6, 2021" site_base = os.environ.get("RTD_SITE_BASE", "http://www.sqlalchemy.org") site_adapter_template = "docs_adapter.mako"