From: Mike Bayer Date: Tue, 19 Oct 2021 21:03:34 +0000 (-0400) Subject: - 1.4.26 X-Git-Tag: rel_1_4_26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9189e3b18c36c39a717d6bf0c697c46ad9761a7a;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - 1.4.26 --- diff --git a/doc/build/changelog/changelog_14.rst b/doc/build/changelog/changelog_14.rst index b2d04da9f9..5c581326db 100644 --- a/doc/build/changelog/changelog_14.rst +++ b/doc/build/changelog/changelog_14.rst @@ -15,7 +15,335 @@ This document details individual issue-level changes made throughout .. changelog:: :version: 1.4.26 - :include_notes_from: unreleased_14 + :released: October 19, 2021 + + .. change:: + :tags: orm + :tickets: 6284 + + Passing a :class:`.Query` object to :meth:`_orm.Session.execute` is not + the intended use of this object, and will now raise a deprecation warning. + + .. change:: + :tags: bug, postgresql + :tickets: 5387 + + Added a "disconnect" condition for the "SSL SYSCALL error: Bad address" + error message as reported by psycopg2. Pull request courtesy Zeke Brechtel. + + .. change:: + :tags: bug, orm + + Improved the exception message generated when configuring a mapping with + joined table inheritance where the two tables either have no foreign key + relationships set up, or where they have multiple foreign key relationships + set up. The message is now ORM specific and includes context that the + :paramref:`_orm.Mapper.inherit_condition` parameter may be needed + particularly for the ambiguous foreign keys case. + + + .. change:: + :tags: bug, sql + :tickets: 6520 + + Fixed issue where SQL queries using the + :meth:`_functions.FunctionElement.within_group` construct could not be + pickled, typically when using the ``sqlalchemy.ext.serializer`` extension + but also for general generic pickling. + + .. change:: + :tags: bug, orm + :tickets: 7189 + + Fixed issue with :func:`_orm.with_loader_criteria` feature where ON + criteria would not be added to a JOIN for a query of the form + ``select(A).join(B)``, stating a target while making use of an implicit + ON clause. + + .. change:: + :tags: bug, orm + :tickets: 7205 + + Fixed bug where the ORM "plugin", necessary for features such as + :func:`_orm.with_loader_criteria` to work correctly, would not be applied + to a :func:`_sql.select` which queried from an ORM column expression if it + made use of the :meth:`_sql.ColumnElement.label` modifier. + + + + .. change:: + :tags: bug, mypy + :tickets: 6435 + + Fixed issue in mypy plugin to improve upon some issues detecting ``Enum()`` + SQL types containing custom Python enumeration classes. Pull request + courtesy Hiroshi Ogawa. + + .. change:: + :tags: bug, mysql + :tickets: 7144 + + Fixed issue in MySQL :func:`_mysql.match` construct where passing a clause + expression such as :func:`_sql.bindparam` or other SQL expression for the + "against" parameter would fail. Pull request courtesy Anton Kovalevich. + + + .. change:: + :tags: bug, mssql + :tickets: 7160 + + Fixed issue with :meth:`.Inspector.get_foreign_keys` where foreign + keys were omitted if they were established against a unique + index instead of a unique constraint. + + + .. change:: + :tags: usecase, mssql + + Added reflection support for SQL Server foreign key options, including + "ON UPDATE" and "ON DELETE" values of "CASCADE" and "SET NULL". + + .. change:: + :tags: bug, sql + :tickets: 4123 + + Repaired issue in new :paramref:`_sql.HasCTE.cte.nesting` parameter + introduced with :ticket:`4123` where a recursive :class:`_sql.CTE` using + :paramref:`_sql.HasCTE.cte.recursive` in typical conjunction with UNION + would not compile correctly. Additionally makes some adjustments so that + the :class:`_sql.CTE` construct creates a correct cache key. + Pull request courtesy Eric Masseran. + + .. change:: + :tags: bug, engine + :tickets: 7130 + + Fixed issue where the deprecation warning for the :class:`.URL` constructor + which indicates that the :meth:`.URL.create` method should be used would + not emit if a full positional argument list of seven arguments were passed; + additionally, validation of URL arguments will now occur if the constructor + is called in this way, which was being skipped previously. + + .. change:: + :tags: bug, orm + :tickets: 7103 + + Add missing methods added in :ticket:`6991` to + :class:`_scoping.scoped_session` and :func:`_asyncio.async_scoped_session`. + + .. change:: + :tags: bug, examples + :tickets: 7169 + + Repaired the examples in examples/versioned_rows to use SQLAlchemy 1.4 APIs + correctly; these examples had been missed when API changes like removing + "passive" from :meth:`_orm.Session.is_modified` were made as well as the + :meth:`_ormevents.SessionEvents.do_orm_execute()` event hook were added. + + .. change:: + :tags: bug, orm + :tickets: 6974, 6972 + + An extra layer of warning messages has been added to the functionality + of :meth:`_orm.Query.join` and the ORM version of + :meth:`_sql.Select.join`, where a few places where "automatic aliasing" + continues to occur will now be called out as a pattern to avoid, mostly + specific to the area of joined table inheritance where classes that share + common base tables are being joined together without using explicit aliases. + One case emits a legacy warning for a pattern that's not recommended, + the other case is fully deprecated. + + The automatic aliasing within ORM join() which occurs for overlapping + mapped tables does not work consistently with all APIs such as + :func:`_orm.contains_eager()`, and rather than continue to try to make + these use cases work everywhere, replacing with a more user-explicit + pattern is clearer, less prone to bugs and simplifies SQLAlchemy's + internals further. + + The warnings include links to the errors.rst page where each pattern is + demonstrated along with the recommended pattern to fix. + + .. seealso:: + + :ref:`error_xaj1` + + :ref:`error_xaj2` + + .. change:: + :tags: bug, sql + :tickets: 7061 + + Account for the :paramref:`_sql.table.schema` parameter passed to + the :func:`_sql.table` construct, such that it is taken into account + when accessing the :attr:`_sql.TableClause.fullname` attribute. + + .. change:: + :tags: bug, sql + :tickets: 7140 + + Fixed an inconsistency in the :meth:`_sql.ColumnOperators.any_` / + :meth:`_sql.ColumnOperators.all_` functions / methods where the special + behavior these functions have of "flipping" the expression such that the + "ANY" / "ALL" expression is always on the right side would not function if + the comparison were against the None value, that is, "column.any_() == + None" should produce the same SQL expression as "null() == column.any_()". + Added more docs to clarify this as well, plus mentions that any_() / all_() + generally supersede the ARRAY version "any()" / "all()". + + .. change:: + :tags: engine, bug, postgresql + :tickets: 3247 + + The :meth:`_reflection.Inspector.reflect_table` method now supports + reflecting tables that do not have user defined columns. This allows + :meth:`_schema.MetaData.reflect` to properly complete reflection on + databases that contain such tables. Currently, only PostgreSQL is known to + support such a construct among the common database backends. + + .. change:: + :tags: sql, bug, regression + :tickets: 7177 + + Fixed issue where "expanding IN" would fail to function correctly with + datatypes that use the :meth:`_types.TypeEngine.bind_expression` method, + where the method would need to be applied to each element of the + IN expression rather than the overall IN expression itself. + + .. change:: + :tags: postgresql, bug, regression + :tickets: 7177 + + Fixed issue where IN expressions against a series of array elements, as can + be done with PostgreSQL, would fail to function correctly due to multiple + issues within the "expanding IN" feature of SQLAlchemy Core that was + standardized in version 1.4. The psycopg2 dialect now makes use of the + :meth:`_types.TypeEngine.bind_expression` method with :class:`_types.ARRAY` + to portably apply the correct casts to elements. The asyncpg dialect was + not affected by this issue as it applies bind-level casts at the driver + level rather than at the compiler level. + + + .. change:: + :tags: bug, mysql + :tickets: 7204 + + Fixed installation issue where the ``sqlalchemy.dialects.mysql`` module + would not be importable if "greenlet" were not installed. + + .. change:: + :tags: bug, mssql + :tickets: 7168 + + Fixed issue with :meth:`.Inspector.has_table` where it would return False + if a local temp table with the same name from a different session happened + to be returned first when querying tempdb. This is a continuation of + :ticket:`6910` which accounted for the temp table existing only in the + alternate session and not the current one. + + .. change:: + :tags: bug, orm + :tickets: 7128 + + Fixed bug where iterating a :class:`.Result` from a :class:`_orm.Session` + after that :class:`_orm.Session` were closed would partially attach objects + to that session in an essentially invalid state. It now raises an exception + with a link to new documentation if an **un-buffered** result is iterated + from a :class:`_orm.Session` that was closed or otherwise had the + :meth:`_orm.Session.expunge_all` method called after that :class:`.Result` + was generated. The ``prebuffer_rows`` execution option, as is used + automatically by the asyncio extension for client-side result sets, may be + used to produce a :class:`.Result` where the ORM objects are prebuffered, + and in this case iterating the result will produce a series of detached + objects. + + .. seealso:: + + :ref:`error_lkrp` + + .. change:: + :tags: bug, mssql, regression + :tickets: 7129 + + Fixed bug in SQL Server :class:`_mssql.DATETIMEOFFSET` datatype where the + ODBC implementation would not generate the correct DDL, for cases where the + type were converted using the ``dialect.type_descriptor()`` method, the + usage of which is illustrated in some documented examples for + :class:`.TypeDecorator`, though not necessary for most datatypes. + Regression was introduced by :ticket:`6366`. As part of this change, the + full list of SQL Server date types have been amended to return a "dialect + impl" that generates the same DDL name as the supertype. + + .. change:: + :tags: bug, sql + :tickets: 7153 + + Adjusted the "column disambiguation" logic that's new in 1.4, where the + same expression repeated gets an "extra anonymous" label, so that the logic + more aggressively deduplicates those labels when the repeated element + is the same Python expression object each time, as occurs in cases like + when using "singleton" values like :func:`_sql.null`. This is based on + the observation that at least some databases (e.g. MySQL, but not SQLite) + will raise an error if the same label is repeated inside of a subquery. + + .. change:: + :tags: bug, orm + :tickets: 7154 + + Related to :ticket:`7153`, fixed an issue where result column lookups would + fail for "adapted" SELECT statements that selected for "constant" value + expressions most typically the NULL expression, as would occur in such + places as joined eager loading in conjunction with limit/offset. This was + overall a regression due to issue :ticket:`6259` which removed all + "adaption" for constants like NULL, "true", and "false" when rewriting + expressions in a SQL statement, but this broke the case where the same + adaption logic were used to resolve the constant to a labeled expression + for the purposes of result set targeting. + + .. change:: + :tags: bug, orm, regression + :tickets: 7134 + + Fixed regression where ORM loaded objects could not be pickled in cases + where loader options making use of ``"*"`` were used in certain + combinations, such as combining the :func:`_orm.joinedload` loader strategy + with ``raiseload('*')`` of sub-elements. + + + .. change:: + :tags: bug, engine + :tickets: 7077 + + Implemented proper ``__reduce__()`` methods for all SQLAlchemy exception + objects to ensure they all support clean round trips when pickling, as + exception objects are often serialized for the purposes of various + debugging tools. + + .. change:: + :tags: bug, orm, regression + :tickets: 7209 + + Fixed regression where the use of a :class:`_hybrid.hybrid_property` + attribute or a mapped :func:`_orm.composite` attribute as a key passed to + the :meth:`_dml.Update.values` method for an ORM-enabled + :class:`_dml.Update` statement, as well as when using it via the legacy + :meth:`_orm.Query.update` method, would be processed for incoming + ORM/hybrid/composite values within the compilation stage of the UPDATE + statement, which meant that in those cases where caching occurred, + subsequent invocations of the same statement would no longer receive the + correct values. This would include not only hybrids that use the + :meth:`_hybrid.hybrid_property.update_expression` method, but any use of a + plain hybrid attribute as well. For composites, the issue instead caused a + non-repeatable cache key to be generated, which would break caching and + could fill up the statement cache with repeated statements. + + The :class:`_dml.Update` construct now handles the processing of key/value + pairs passed to :meth:`_dml.Update.values` and + :meth:`_dml.Update.ordered_values` up front when the construct is first + generated, before the cache key has been generated so that the key/value + pairs are processed each time, and so that the cache key is generated + against the individual column/value pairs that will ultimately be + used in the statement. + .. changelog:: :version: 1.4.25 diff --git a/doc/build/changelog/unreleased_14/3247.rst b/doc/build/changelog/unreleased_14/3247.rst deleted file mode 100644 index 0bf9231e36..0000000000 --- a/doc/build/changelog/unreleased_14/3247.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: engine, bug, postgresql - :tickets: 3247 - - The :meth:`_reflection.Inspector.reflect_table` method now supports - reflecting tables that do not have user defined columns. This allows - :meth:`_schema.MetaData.reflect` to properly complete reflection on - databases that contain such tables. Currently, only PostgreSQL is known to - support such a construct among the common database backends. diff --git a/doc/build/changelog/unreleased_14/4123.rst b/doc/build/changelog/unreleased_14/4123.rst deleted file mode 100644 index df1f9c1d36..0000000000 --- a/doc/build/changelog/unreleased_14/4123.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, sql - :tickets: 4123 - - Repaired issue in new :paramref:`_sql.HasCTE.cte.nesting` parameter - introduced with :ticket:`4123` where a recursive :class:`_sql.CTE` using - :paramref:`_sql.HasCTE.cte.recursive` in typical conjunction with UNION - would not compile correctly. Additionally makes some adjustments so that - the :class:`_sql.CTE` construct creates a correct cache key. - Pull request courtesy Eric Masseran. diff --git a/doc/build/changelog/unreleased_14/5387.rst b/doc/build/changelog/unreleased_14/5387.rst deleted file mode 100644 index a08c169afe..0000000000 --- a/doc/build/changelog/unreleased_14/5387.rst +++ /dev/null @@ -1,6 +0,0 @@ -.. change:: - :tags: bug, postgresql - :tickets: 5387 - - Added a "disconnect" condition for the "SSL SYSCALL error: Bad address" - error message as reported by psycopg2. Pull request courtesy Zeke Brechtel. diff --git a/doc/build/changelog/unreleased_14/6284.rst b/doc/build/changelog/unreleased_14/6284.rst deleted file mode 100644 index ffb506ce0b..0000000000 --- a/doc/build/changelog/unreleased_14/6284.rst +++ /dev/null @@ -1,6 +0,0 @@ -.. change:: - :tags: orm - :tickets: 6284 - - Passing a :class:`.Query` object to :meth:`_orm.Session.execute` is not - the intended use of this object, and will now raise a deprecation warning. diff --git a/doc/build/changelog/unreleased_14/6435.rst b/doc/build/changelog/unreleased_14/6435.rst deleted file mode 100644 index d07754d67c..0000000000 --- a/doc/build/changelog/unreleased_14/6435.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: bug, mypy - :tickets: 6435 - - Fixed issue in mypy plugin to improve upon some issues detecting ``Enum()`` - SQL types containing custom Python enumeration classes. Pull request - courtesy Hiroshi Ogawa. diff --git a/doc/build/changelog/unreleased_14/6520.rst b/doc/build/changelog/unreleased_14/6520.rst deleted file mode 100644 index 88defe7660..0000000000 --- a/doc/build/changelog/unreleased_14/6520.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, sql - :tickets: 6520 - - Fixed issue where SQL queries using the - :meth:`_functions.FunctionElement.within_group` construct could not be - pickled, typically when using the ``sqlalchemy.ext.serializer`` extension - but also for general generic pickling. diff --git a/doc/build/changelog/unreleased_14/6974.rst b/doc/build/changelog/unreleased_14/6974.rst deleted file mode 100644 index aabfad0766..0000000000 --- a/doc/build/changelog/unreleased_14/6974.rst +++ /dev/null @@ -1,28 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 6974, 6972 - - An extra layer of warning messages has been added to the functionality - of :meth:`_orm.Query.join` and the ORM version of - :meth:`_sql.Select.join`, where a few places where "automatic aliasing" - continues to occur will now be called out as a pattern to avoid, mostly - specific to the area of joined table inheritance where classes that share - common base tables are being joined together without using explicit aliases. - One case emits a legacy warning for a pattern that's not recommended, - the other case is fully deprecated. - - The automatic aliasing within ORM join() which occurs for overlapping - mapped tables does not work consistently with all APIs such as - :func:`_orm.contains_eager()`, and rather than continue to try to make - these use cases work everywhere, replacing with a more user-explicit - pattern is clearer, less prone to bugs and simplifies SQLAlchemy's - internals further. - - The warnings include links to the errors.rst page where each pattern is - demonstrated along with the recommended pattern to fix. - - .. seealso:: - - :ref:`error_xaj1` - - :ref:`error_xaj2` \ No newline at end of file diff --git a/doc/build/changelog/unreleased_14/7061.rst b/doc/build/changelog/unreleased_14/7061.rst deleted file mode 100644 index 7bff2f9035..0000000000 --- a/doc/build/changelog/unreleased_14/7061.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: bug, sql - :tickets: 7061 - - Account for the :paramref:`_sql.table.schema` parameter passed to - the :func:`_sql.table` construct, such that it is taken into account - when accessing the :attr:`_sql.TableClause.fullname` attribute. diff --git a/doc/build/changelog/unreleased_14/7077.rst b/doc/build/changelog/unreleased_14/7077.rst deleted file mode 100644 index 305c704c67..0000000000 --- a/doc/build/changelog/unreleased_14/7077.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, engine - :tickets: 7077 - - Implemented proper ``__reduce__()`` methods for all SQLAlchemy exception - objects to ensure they all support clean round trips when pickling, as - exception objects are often serialized for the purposes of various - debugging tools. diff --git a/doc/build/changelog/unreleased_14/7103.rst b/doc/build/changelog/unreleased_14/7103.rst deleted file mode 100644 index ded0546566..0000000000 --- a/doc/build/changelog/unreleased_14/7103.rst +++ /dev/null @@ -1,6 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 7103 - - Add missing methods added in :ticket:`6991` to - :class:`_scoping.scoped_session` and :func:`_asyncio.async_scoped_session`. diff --git a/doc/build/changelog/unreleased_14/7128.rst b/doc/build/changelog/unreleased_14/7128.rst deleted file mode 100644 index ee04f711ea..0000000000 --- a/doc/build/changelog/unreleased_14/7128.rst +++ /dev/null @@ -1,19 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 7128 - - Fixed bug where iterating a :class:`.Result` from a :class:`_orm.Session` - after that :class:`_orm.Session` were closed would partially attach objects - to that session in an essentially invalid state. It now raises an exception - with a link to new documentation if an **un-buffered** result is iterated - from a :class:`_orm.Session` that was closed or otherwise had the - :meth:`_orm.Session.expunge_all` method called after that :class:`.Result` - was generated. The ``prebuffer_rows`` execution option, as is used - automatically by the asyncio extension for client-side result sets, may be - used to produce a :class:`.Result` where the ORM objects are prebuffered, - and in this case iterating the result will produce a series of detached - objects. - - .. seealso:: - - :ref:`error_lkrp` \ No newline at end of file diff --git a/doc/build/changelog/unreleased_14/7129.rst b/doc/build/changelog/unreleased_14/7129.rst deleted file mode 100644 index 6fcc1cf18a..0000000000 --- a/doc/build/changelog/unreleased_14/7129.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: bug, mssql, regression - :tickets: 7129 - - Fixed bug in SQL Server :class:`_mssql.DATETIMEOFFSET` datatype where the - ODBC implementation would not generate the correct DDL, for cases where the - type were converted using the ``dialect.type_descriptor()`` method, the - usage of which is illustrated in some documented examples for - :class:`.TypeDecorator`, though not necessary for most datatypes. - Regression was introduced by :ticket:`6366`. As part of this change, the - full list of SQL Server date types have been amended to return a "dialect - impl" that generates the same DDL name as the supertype. diff --git a/doc/build/changelog/unreleased_14/7130.rst b/doc/build/changelog/unreleased_14/7130.rst deleted file mode 100644 index f2bfb777d9..0000000000 --- a/doc/build/changelog/unreleased_14/7130.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, engine - :tickets: 7130 - - Fixed issue where the deprecation warning for the :class:`.URL` constructor - which indicates that the :meth:`.URL.create` method should be used would - not emit if a full positional argument list of seven arguments were passed; - additionally, validation of URL arguments will now occur if the constructor - is called in this way, which was being skipped previously. diff --git a/doc/build/changelog/unreleased_14/7134.rst b/doc/build/changelog/unreleased_14/7134.rst deleted file mode 100644 index e785db17d9..0000000000 --- a/doc/build/changelog/unreleased_14/7134.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, orm, regression - :tickets: 7134 - - Fixed regression where ORM loaded objects could not be pickled in cases - where loader options making use of ``"*"`` were used in certain - combinations, such as combining the :func:`_orm.joinedload` loader strategy - with ``raiseload('*')`` of sub-elements. - diff --git a/doc/build/changelog/unreleased_14/7140.rst b/doc/build/changelog/unreleased_14/7140.rst deleted file mode 100644 index 8053374214..0000000000 --- a/doc/build/changelog/unreleased_14/7140.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: bug, sql - :tickets: 7140 - - Fixed an inconsistency in the :meth:`_sql.ColumnOperators.any_` / - :meth:`_sql.ColumnOperators.all_` functions / methods where the special - behavior these functions have of "flipping" the expression such that the - "ANY" / "ALL" expression is always on the right side would not function if - the comparison were against the None value, that is, "column.any_() == - None" should produce the same SQL expression as "null() == column.any_()". - Added more docs to clarify this as well, plus mentions that any_() / all_() - generally supersede the ARRAY version "any()" / "all()". diff --git a/doc/build/changelog/unreleased_14/7144.rst b/doc/build/changelog/unreleased_14/7144.rst deleted file mode 100644 index fee4edefd7..0000000000 --- a/doc/build/changelog/unreleased_14/7144.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, mysql - :tickets: 7144 - - Fixed issue in MySQL :func:`_mysql.match` construct where passing a clause - expression such as :func:`_sql.bindparam` or other SQL expression for the - "against" parameter would fail. Pull request courtesy Anton Kovalevich. - diff --git a/doc/build/changelog/unreleased_14/7153.rst b/doc/build/changelog/unreleased_14/7153.rst deleted file mode 100644 index 762fb638dc..0000000000 --- a/doc/build/changelog/unreleased_14/7153.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. change:: - :tags: bug, sql - :tickets: 7153 - - Adjusted the "column disambiguation" logic that's new in 1.4, where the - same expression repeated gets an "extra anonymous" label, so that the logic - more aggressively deduplicates those labels when the repeated element - is the same Python expression object each time, as occurs in cases like - when using "singleton" values like :func:`_sql.null`. This is based on - the observation that at least some databases (e.g. MySQL, but not SQLite) - will raise an error if the same label is repeated inside of a subquery. - -.. change:: - :tags: bug, orm - :tickets: 7154 - - Related to :ticket:`7153`, fixed an issue where result column lookups would - fail for "adapted" SELECT statements that selected for "constant" value - expressions most typically the NULL expression, as would occur in such - places as joined eager loading in conjunction with limit/offset. This was - overall a regression due to issue :ticket:`6259` which removed all - "adaption" for constants like NULL, "true", and "false" when rewriting - expressions in a SQL statement, but this broke the case where the same - adaption logic were used to resolve the constant to a labeled expression - for the purposes of result set targeting. diff --git a/doc/build/changelog/unreleased_14/7160.rst b/doc/build/changelog/unreleased_14/7160.rst deleted file mode 100644 index b086efce94..0000000000 --- a/doc/build/changelog/unreleased_14/7160.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. change:: - :tags: bug, mssql - :tickets: 7160 - - Fixed issue with :meth:`.Inspector.get_foreign_keys` where foreign - keys were omitted if they were established against a unique - index instead of a unique constraint. - - -.. change:: - :tags: usecase, mssql - - Added reflection support for SQL Server foreign key options, including - "ON UPDATE" and "ON DELETE" values of "CASCADE" and "SET NULL". diff --git a/doc/build/changelog/unreleased_14/7168.rst b/doc/build/changelog/unreleased_14/7168.rst deleted file mode 100644 index 3d599d9607..0000000000 --- a/doc/build/changelog/unreleased_14/7168.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, mssql - :tickets: 7168 - - Fixed issue with :meth:`.Inspector.has_table` where it would return False - if a local temp table with the same name from a different session happened - to be returned first when querying tempdb. This is a continuation of - :ticket:`6910` which accounted for the temp table existing only in the - alternate session and not the current one. diff --git a/doc/build/changelog/unreleased_14/7169.rst b/doc/build/changelog/unreleased_14/7169.rst deleted file mode 100644 index 7c41c538bd..0000000000 --- a/doc/build/changelog/unreleased_14/7169.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, examples - :tickets: 7169 - - Repaired the examples in examples/versioned_rows to use SQLAlchemy 1.4 APIs - correctly; these examples had been missed when API changes like removing - "passive" from :meth:`_orm.Session.is_modified` were made as well as the - :meth:`_ormevents.SessionEvents.do_orm_execute()` event hook were added. diff --git a/doc/build/changelog/unreleased_14/7177.rst b/doc/build/changelog/unreleased_14/7177.rst deleted file mode 100644 index 7766c838e2..0000000000 --- a/doc/build/changelog/unreleased_14/7177.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. change:: - :tags: sql, bug, regression - :tickets: 7177 - - Fixed issue where "expanding IN" would fail to function correctly with - datatypes that use the :meth:`_types.TypeEngine.bind_expression` method, - where the method would need to be applied to each element of the - IN expression rather than the overall IN expression itself. - -.. change:: - :tags: postgresql, bug, regression - :tickets: 7177 - - Fixed issue where IN expressions against a series of array elements, as can - be done with PostgreSQL, would fail to function correctly due to multiple - issues within the "expanding IN" feature of SQLAlchemy Core that was - standardized in version 1.4. The psycopg2 dialect now makes use of the - :meth:`_types.TypeEngine.bind_expression` method with :class:`_types.ARRAY` - to portably apply the correct casts to elements. The asyncpg dialect was - not affected by this issue as it applies bind-level casts at the driver - level rather than at the compiler level. - diff --git a/doc/build/changelog/unreleased_14/7189.rst b/doc/build/changelog/unreleased_14/7189.rst deleted file mode 100644 index adae7749cc..0000000000 --- a/doc/build/changelog/unreleased_14/7189.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 7189 - - Fixed issue with :func:`_orm.with_loader_criteria` feature where ON - criteria would not be added to a JOIN for a query of the form - ``select(A).join(B)``, stating a target while making use of an implicit - ON clause. diff --git a/doc/build/changelog/unreleased_14/7204.rst b/doc/build/changelog/unreleased_14/7204.rst deleted file mode 100644 index 2f02d50cd8..0000000000 --- a/doc/build/changelog/unreleased_14/7204.rst +++ /dev/null @@ -1,6 +0,0 @@ -.. change:: - :tags: bug, mysql - :tickets: 7204 - - Fixed installation issue where the ``sqlalchemy.dialects.mysql`` module - would not be importable if "greenlet" were not installed. diff --git a/doc/build/changelog/unreleased_14/7205.rst b/doc/build/changelog/unreleased_14/7205.rst deleted file mode 100644 index cdc37991f4..0000000000 --- a/doc/build/changelog/unreleased_14/7205.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 7205 - - Fixed bug where the ORM "plugin", necessary for features such as - :func:`_orm.with_loader_criteria` to work correctly, would not be applied - to a :func:`_sql.select` which queried from an ORM column expression if it - made use of the :meth:`_sql.ColumnElement.label` modifier. - - diff --git a/doc/build/changelog/unreleased_14/7209.rst b/doc/build/changelog/unreleased_14/7209.rst deleted file mode 100644 index 4ed057afc7..0000000000 --- a/doc/build/changelog/unreleased_14/7209.rst +++ /dev/null @@ -1,26 +0,0 @@ -.. change:: - :tags: bug, orm, regression - :tickets: 7209 - - Fixed regression where the use of a :class:`_hybrid.hybrid_property` - attribute or a mapped :func:`_orm.composite` attribute as a key passed to - the :meth:`_dml.Update.values` method for an ORM-enabled - :class:`_dml.Update` statement, as well as when using it via the legacy - :meth:`_orm.Query.update` method, would be processed for incoming - ORM/hybrid/composite values within the compilation stage of the UPDATE - statement, which meant that in those cases where caching occurred, - subsequent invocations of the same statement would no longer receive the - correct values. This would include not only hybrids that use the - :meth:`_hybrid.hybrid_property.update_expression` method, but any use of a - plain hybrid attribute as well. For composites, the issue instead caused a - non-repeatable cache key to be generated, which would break caching and - could fill up the statement cache with repeated statements. - - The :class:`_dml.Update` construct now handles the processing of key/value - pairs passed to :meth:`_dml.Update.values` and - :meth:`_dml.Update.ordered_values` up front when the construct is first - generated, before the cache key has been generated so that the key/value - pairs are processed each time, and so that the cache key is generated - against the individual column/value pairs that will ultimately be - used in the statement. - diff --git a/doc/build/changelog/unreleased_14/inh_cond.rst b/doc/build/changelog/unreleased_14/inh_cond.rst deleted file mode 100644 index 7a3f6d4109..0000000000 --- a/doc/build/changelog/unreleased_14/inh_cond.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, orm - - Improved the exception message generated when configuring a mapping with - joined table inheritance where the two tables either have no foreign key - relationships set up, or where they have multiple foreign key relationships - set up. The message is now ORM specific and includes context that the - :paramref:`_orm.Mapper.inherit_condition` parameter may be needed - particularly for the ambiguous foreign keys case. - diff --git a/doc/build/conf.py b/doc/build/conf.py index bc05cff981..169d695d0f 100644 --- a/doc/build/conf.py +++ b/doc/build/conf.py @@ -203,9 +203,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.25" +release = "1.4.26" -release_date = "September 22, 2021" +release_date = "October 19, 2021" site_base = os.environ.get("RTD_SITE_BASE", "https://www.sqlalchemy.org") site_adapter_template = "docs_adapter.mako"