From: Mike Bayer Date: Fri, 4 Nov 2022 21:04:01 +0000 (-0400) Subject: - 1.4.43 X-Git-Tag: rel_1_4_43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=274ecb746d559aa9b9e9c788544e8856807ab192;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - 1.4.43 --- diff --git a/doc/build/changelog/changelog_14.rst b/doc/build/changelog/changelog_14.rst index 3b19d78226..516694dfe1 100644 --- a/doc/build/changelog/changelog_14.rst +++ b/doc/build/changelog/changelog_14.rst @@ -15,7 +15,176 @@ This document details individual issue-level changes made throughout .. changelog:: :version: 1.4.43 - :include_notes_from: unreleased_14 + :released: November 4, 2022 + + .. change:: + :tags: bug, orm + :tickets: 8738 + + Fixed issue in joined eager loading where an assertion fail would occur + with a particular combination of outer/inner joined eager loads, when + eager loading across three mappers where the middle mapper was + an inherited subclass mapper. + + + .. change:: + :tags: bug, oracle + :tickets: 8708 + + Fixed issue where bound parameter names, including those automatically + derived from similarly-named database columns, which contained characters + that normally require quoting with Oracle would not be escaped when using + "expanding parameters" with the Oracle dialect, causing execution errors. + The usual "quoting" for bound parameters used by the Oracle dialect is not + used with the "expanding parameters" architecture, so escaping for a large + range of characters is used instead, now using a list of characters/escapes + that are specific to Oracle. + + + + .. change:: + :tags: bug, orm + :tickets: 8721 + + Fixed bug involving :class:`.Select` constructs, where combinations of + :meth:`.Select.select_from` with :meth:`.Select.join`, as well as when + using :meth:`.Select.join_from`, would cause the + :func:`_orm.with_loader_criteria` feature as well as the IN criteria needed + for single-table inheritance queries to not render, in cases where the + columns clause of the query did not explicitly include the left-hand side + entity of the JOIN. The correct entity is now transferred to the + :class:`.Join` object that's generated internally, so that the criteria + against the left side entity is correctly added. + + + .. change:: + :tags: bug, mssql + :tickets: 8714 + + Fixed issue with :meth:`.Inspector.has_table`, which when used against a + temporary table with the SQL Server dialect would fail on some Azure + variants, due to an unnecessary information schema query that is not + supported on those server versions. Pull request courtesy Mike Barry. + + .. change:: + :tags: bug, orm + :tickets: 8711 + + An informative exception is now raised when the + :func:`_orm.with_loader_criteria` option is used as a loader option added + to a specific "loader path", such as when using it within + :meth:`.Load.options`. This use is not supported as + :func:`_orm.with_loader_criteria` is only intended to be used as a top + level loader option. Previously, an internal error would be generated. + + .. change:: + :tags: bug, oracle + :tickets: 8744 + + Fixed issue where the ``nls_session_parameters`` view queried on first + connect in order to get the default decimal point character may not be + available depending on Oracle connection modes, and would therefore raise + an error. The approach to detecting decimal char has been simplified to + test a decimal value directly, instead of reading system views, which + works on any backend / driver. + + + .. change:: + :tags: bug, orm + :tickets: 8753 + + Improved "dictionary mode" for :meth:`_orm.Session.get` so that synonym + names which refer to primary key attribute names may be indicated in the + named dictionary. + + .. change:: + :tags: bug, engine, regression + :tickets: 8717 + + Fixed issue where the :meth:`.PoolEvents.reset` event hook would not be be + called in all cases when a :class:`_engine.Connection` were closed and was + in the process of returning its DBAPI connection to the connection pool. + + The scenario was when the :class:`_engine.Connection` had already emitted + ``.rollback()`` on its DBAPI connection within the process of returning + the connection to the pool, where it would then instruct the connection + pool to forego doing its own "reset" to save on the additional method + call. However, this prevented custom pool reset schemes from being + used within this hook, as such hooks by definition are doing more than + just calling ``.rollback()``, and need to be invoked under all + circumstances. This was a regression that appeared in version 1.4. + + For version 1.4, the :meth:`.PoolEvents.checkin` remains viable as an + alternate event hook to use for custom "reset" implementations. Version 2.0 + will feature an improved version of :meth:`.PoolEvents.reset` which is + called for additional scenarios such as termination of asyncio connections, + and is also passed contextual information about the reset, to allow for + "custom connection reset" schemes which can respond to different reset + scenarios in different ways. + + .. change:: + :tags: bug, orm + :tickets: 8704 + + Fixed issue where "selectin_polymorphic" loading for inheritance mappers + would not function correctly if the :paramref:`_orm.Mapper.polymorphic_on` + parameter referred to a SQL expression that was not directly mapped on the + class. + + .. change:: + :tags: bug, orm + :tickets: 8710 + + Fixed issue where the underlying DBAPI cursor would not be closed when + using the :class:`_orm.Query` object as an iterator, if a user-defined exception + case were raised within the iteration process, thereby causing the iterator + to be closed by the Python interpreter. When using + :meth:`_orm.Query.yield_per` to create server-side cursors, this would lead + to the usual MySQL-related issues with server side cursors out of sync, + and without direct access to the :class:`.Result` object, end-user code + could not access the cursor in order to close it. + + To resolve, a catch for ``GeneratorExit`` is applied within the iterator + method, which will close the result object in those cases when the + iterator were interrupted, and by definition will be closed by the + Python interpreter. + + As part of this change as implemented for the 1.4 series, ensured that + ``.close()`` methods are available on all :class:`.Result` implementations + including :class:`.ScalarResult`, :class:`.MappingResult`. The 2.0 + version of this change also includes new context manager patterns for use + with :class:`.Result` classes. + + .. change:: + :tags: bug, engine + :tickets: 8710 + + Ensured all :class:`.Result` objects include a :meth:`.Result.close` method + as well as a :attr:`.Result.closed` attribute, including on + :class:`.ScalarResult` and :class:`.MappingResult`. + + .. change:: + :tags: bug, mssql, reflection + :tickets: 8700 + + Fixed issue with :meth:`.Inspector.has_table`, which when used against a + view with the SQL Server dialect would erroneously return ``False``, due to + a regression in the 1.4 series which removed support for this on SQL + Server. The issue is not present in the 2.0 series which uses a different + reflection architecture. Test support is added to ensure ``has_table()`` + remains working per spec re: views. + + .. change:: + :tags: bug, sql + :tickets: 8724 + + Fixed issue which prevented the :func:`_sql.literal_column` construct from + working properly within the context of a :class:`.Select` construct as well + as other potential places where "anonymized labels" might be generated, if + the literal expression contained characters which could interfere with + format strings, such as open parenthesis, due to an implementation detail + of the "anonymous label" structure. + .. changelog:: :version: 1.4.42 diff --git a/doc/build/changelog/unreleased_14/8700.rst b/doc/build/changelog/unreleased_14/8700.rst deleted file mode 100644 index 0805c23384..0000000000 --- a/doc/build/changelog/unreleased_14/8700.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, mssql, reflection - :tickets: 8700 - - Fixed issue with :meth:`.Inspector.has_table`, which when used against a - view with the SQL Server dialect would erroneously return ``False``, due to - a regression in the 1.4 series which removed support for this on SQL - Server. The issue is not present in the 2.0 series which uses a different - reflection architecture. Test support is added to ensure ``has_table()`` - remains working per spec re: views. diff --git a/doc/build/changelog/unreleased_14/8704.rst b/doc/build/changelog/unreleased_14/8704.rst deleted file mode 100644 index 90d9728706..0000000000 --- a/doc/build/changelog/unreleased_14/8704.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 8704 - - Fixed issue where "selectin_polymorphic" loading for inheritance mappers - would not function correctly if the :paramref:`_orm.Mapper.polymorphic_on` - parameter referred to a SQL expression that was not directly mapped on the - class. diff --git a/doc/build/changelog/unreleased_14/8708.rst b/doc/build/changelog/unreleased_14/8708.rst deleted file mode 100644 index bb7424faaf..0000000000 --- a/doc/build/changelog/unreleased_14/8708.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. change:: - :tags: bug, oracle - :tickets: 8708 - - Fixed issue where bound parameter names, including those automatically - derived from similarly-named database columns, which contained characters - that normally require quoting with Oracle would not be escaped when using - "expanding parameters" with the Oracle dialect, causing execution errors. - The usual "quoting" for bound parameters used by the Oracle dialect is not - used with the "expanding parameters" architecture, so escaping for a large - range of characters is used instead, now using a list of characters/escapes - that are specific to Oracle. - - diff --git a/doc/build/changelog/unreleased_14/8710.rst b/doc/build/changelog/unreleased_14/8710.rst deleted file mode 100644 index 4d4597d7f8..0000000000 --- a/doc/build/changelog/unreleased_14/8710.rst +++ /dev/null @@ -1,31 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 8710 - - Fixed issue where the underlying DBAPI cursor would not be closed when - using the :class:`_orm.Query` object as an iterator, if a user-defined exception - case were raised within the iteration process, thereby causing the iterator - to be closed by the Python interpreter. When using - :meth:`_orm.Query.yield_per` to create server-side cursors, this would lead - to the usual MySQL-related issues with server side cursors out of sync, - and without direct access to the :class:`.Result` object, end-user code - could not access the cursor in order to close it. - - To resolve, a catch for ``GeneratorExit`` is applied within the iterator - method, which will close the result object in those cases when the - iterator were interrupted, and by definition will be closed by the - Python interpreter. - - As part of this change as implemented for the 1.4 series, ensured that - ``.close()`` methods are available on all :class:`.Result` implementations - including :class:`.ScalarResult`, :class:`.MappingResult`. The 2.0 - version of this change also includes new context manager patterns for use - with :class:`.Result` classes. - -.. change:: - :tags: bug, engine - :tickets: 8710 - - Ensured all :class:`.Result` objects include a :meth:`.Result.close` method - as well as a :attr:`.Result.closed` attribute, including on - :class:`.ScalarResult` and :class:`.MappingResult`. diff --git a/doc/build/changelog/unreleased_14/8711.rst b/doc/build/changelog/unreleased_14/8711.rst deleted file mode 100644 index cc76eb461c..0000000000 --- a/doc/build/changelog/unreleased_14/8711.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 8711 - - An informative exception is now raised when the - :func:`_orm.with_loader_criteria` option is used as a loader option added - to a specific "loader path", such as when using it within - :meth:`.Load.options`. This use is not supported as - :func:`_orm.with_loader_criteria` is only intended to be used as a top - level loader option. Previously, an internal error would be generated. diff --git a/doc/build/changelog/unreleased_14/8714.rst b/doc/build/changelog/unreleased_14/8714.rst deleted file mode 100644 index 6fd133a091..0000000000 --- a/doc/build/changelog/unreleased_14/8714.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, mssql - :tickets: 8714 - - Fixed issue with :meth:`.Inspector.has_table`, which when used against a - temporary table with the SQL Server dialect would fail on some Azure - variants, due to an unnecessary information schema query that is not - supported on those server versions. Pull request courtesy Mike Barry. diff --git a/doc/build/changelog/unreleased_14/8717.rst b/doc/build/changelog/unreleased_14/8717.rst deleted file mode 100644 index 676f2e2152..0000000000 --- a/doc/build/changelog/unreleased_14/8717.rst +++ /dev/null @@ -1,24 +0,0 @@ -.. change:: - :tags: bug, engine, regression - :tickets: 8717 - - Fixed issue where the :meth:`.PoolEvents.reset` event hook would not be be - called in all cases when a :class:`_engine.Connection` were closed and was - in the process of returning its DBAPI connection to the connection pool. - - The scenario was when the :class:`_engine.Connection` had already emitted - ``.rollback()`` on its DBAPI connection within the process of returning - the connection to the pool, where it would then instruct the connection - pool to forego doing its own "reset" to save on the additional method - call. However, this prevented custom pool reset schemes from being - used within this hook, as such hooks by definition are doing more than - just calling ``.rollback()``, and need to be invoked under all - circumstances. This was a regression that appeared in version 1.4. - - For version 1.4, the :meth:`.PoolEvents.checkin` remains viable as an - alternate event hook to use for custom "reset" implementations. Version 2.0 - will feature an improved version of :meth:`.PoolEvents.reset` which is - called for additional scenarios such as termination of asyncio connections, - and is also passed contextual information about the reset, to allow for - "custom connection reset" schemes which can respond to different reset - scenarios in different ways. diff --git a/doc/build/changelog/unreleased_14/8721.rst b/doc/build/changelog/unreleased_14/8721.rst deleted file mode 100644 index 9e62e66b53..0000000000 --- a/doc/build/changelog/unreleased_14/8721.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 8721 - - Fixed bug involving :class:`.Select` constructs, where combinations of - :meth:`.Select.select_from` with :meth:`.Select.join`, as well as when - using :meth:`.Select.join_from`, would cause the - :func:`_orm.with_loader_criteria` feature as well as the IN criteria needed - for single-table inheritance queries to not render, in cases where the - columns clause of the query did not explicitly include the left-hand side - entity of the JOIN. The correct entity is now transferred to the - :class:`.Join` object that's generated internally, so that the criteria - against the left side entity is correctly added. - diff --git a/doc/build/changelog/unreleased_14/8724.rst b/doc/build/changelog/unreleased_14/8724.rst deleted file mode 100644 index 8329697cee..0000000000 --- a/doc/build/changelog/unreleased_14/8724.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: bug, sql - :tickets: 8724 - - Fixed issue which prevented the :func:`_sql.literal_column` construct from - working properly within the context of a :class:`.Select` construct as well - as other potential places where "anonymized labels" might be generated, if - the literal expression contained characters which could interfere with - format strings, such as open parenthesis, due to an implementation detail - of the "anonymous label" structure. - diff --git a/doc/build/changelog/unreleased_14/8738.rst b/doc/build/changelog/unreleased_14/8738.rst deleted file mode 100644 index fb7b31ac34..0000000000 --- a/doc/build/changelog/unreleased_14/8738.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 8738 - - Fixed issue in joined eager loading where an assertion fail would occur - with a particular combination of outer/inner joined eager loads, when - eager loading across three mappers where the middle mapper was - an inherited subclass mapper. - diff --git a/doc/build/changelog/unreleased_14/8744.rst b/doc/build/changelog/unreleased_14/8744.rst deleted file mode 100644 index 6d24f0ff93..0000000000 --- a/doc/build/changelog/unreleased_14/8744.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: bug, oracle - :tickets: 8744 - - Fixed issue where the ``nls_session_parameters`` view queried on first - connect in order to get the default decimal point character may not be - available depending on Oracle connection modes, and would therefore raise - an error. The approach to detecting decimal char has been simplified to - test a decimal value directly, instead of reading system views, which - works on any backend / driver. - diff --git a/doc/build/changelog/unreleased_14/8753.rst b/doc/build/changelog/unreleased_14/8753.rst deleted file mode 100644 index 6f898e9a06..0000000000 --- a/doc/build/changelog/unreleased_14/8753.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 8753 - - Improved "dictionary mode" for :meth:`_orm.Session.get` so that synonym - names which refer to primary key attribute names may be indicated in the - named dictionary. diff --git a/doc/build/conf.py b/doc/build/conf.py index 86f1925303..4f9550225b 100644 --- a/doc/build/conf.py +++ b/doc/build/conf.py @@ -213,9 +213,9 @@ copyright = u"2007-2022, 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.42" +release = "1.4.43" -release_date = "October 16, 2022" +release_date = "November 4, 2022" site_base = os.environ.get("RTD_SITE_BASE", "https://www.sqlalchemy.org") site_adapter_template = "docs_adapter.mako"