From: Mike Bayer Date: Sun, 21 Jul 2019 21:10:01 +0000 (-0400) Subject: cherry-pick changelog from 1.3.6 X-Git-Tag: rel_1_4_0b1~786 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8fc20d0ca3ec8eac0565dce4fdee2756806170a9;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git cherry-pick changelog from 1.3.6 --- diff --git a/doc/build/changelog/changelog_13.rst b/doc/build/changelog/changelog_13.rst index 55ec00f630..75af61d69b 100644 --- a/doc/build/changelog/changelog_13.rst +++ b/doc/build/changelog/changelog_13.rst @@ -12,7 +12,188 @@ .. changelog:: :version: 1.3.6 - :include_notes_from: unreleased_13 + :released: July 21, 2019 + + .. change:: + :tags: bug, engine + :tickets: 4754 + + Fixed bug where using reflection function such as :meth:`.MetaData.reflect` + with an :class:`.Engine` object that had execution options applied to it + would fail, as the resulting :class:`.OptionEngine` proxy object failed to + include a ``.engine`` attribute used within the reflection routines. + + .. change:: + :tags: bug, mysql + :tickets: 4743 + + Fixed bug where the special logic to render "NULL" for the + :class:`.TIMESTAMP` datatype when ``nullable=True`` would not work if the + column's datatype were a :class:`.TypeDecorator` or a :class:`.Variant`. + The logic now ensures that it unwraps down to the original + :class:`.TIMESTAMP` so that this special case NULL keyword is correctly + rendered when requested. + + .. change:: + :tags: performance, orm + :tickets: 4775 + + The optimzation applied to selectin loading in :ticket:`4340` where a JOIN + is not needed to eagerly load related items is now applied to many-to-one + relationships as well, so that only the related table is queried for a + simple join condition. In this case, the related items are queried + based on the value of a foreign key column on the parent; if these columns + are deferred or otherwise not loaded on any of the parent objects in + the collection, the loader falls back to the JOIN method. + + + .. change:: + :tags: bug, orm + :tickets: 4773 + + Fixed regression caused by :ticket:`4365` where a join from an entity to + itself without using aliases no longer raises an informative error message, + instead failing on an assertion. The informative error condition has been + restored. + + + .. change:: + :tags: orm, feature + :tickets: 4736 + + Added new loader option method :meth:`.Load.options` which allows loader + options to be constructed hierarchically, so that many sub-options can be + applied to a particular path without needing to call :func:`.defaultload` + many times. Thanks to Alessio Bogon for the idea. + + + .. change:: + :tags: usecase, postgresql + :tickets: 4771 + + Added support for reflection of indexes on PostgreSQL partitioned tables, + which was added to PostgreSQL as of version 11. + + .. change:: + :tags: bug, mysql + :tickets: 4624 + + Enhanced MySQL/MariaDB version string parsing to accommodate for exotic + MariaDB version strings where the "MariaDB" word is embedded among other + alphanumeric characters such as "MariaDBV1". This detection is critical in + order to correctly accommodate for API features that have split between MySQL + and MariaDB such as the "transaction_isolation" system variable. + + + .. change:: + :tags: bug, mssql + :tickets: 4745 + + Ensured that the queries used to reflect indexes and view definitions will + explicitly CAST string parameters into NVARCHAR, as many SQL Server drivers + frequently treat string values, particularly those with non-ascii + characters or larger string values, as TEXT which often don't compare + correctly against VARCHAR characters in SQL Server's information schema + tables for some reason. These CAST operations already take place for + reflection queries against SQL Server ``information_schema.`` tables but + were missing from three additional queries that are against ``sys.`` + tables. + + .. change:: + :tags: bug, orm + :tickets: 4713 + + Fixed an issue where the :meth:`.orm._ORMJoin.join` method, which is a + not-internally-used ORM-level method that exposes what is normally an + internal process of :meth:`.Query.join`, did not propagate the ``full`` and + ``outerjoin`` keyword arguments correctly. Pull request courtesy Denis + Kataev. + + .. change:: + :tags: bug, sql + :tickets: 4758 + + Adjusted the initialization for :class:`.Enum` to minimize how often it + invokes the ``.__members__`` attribute of a given PEP-435 enumeration + object, to suit the case where this attribute is expensive to invoke, as is + the case for some popular third party enumeration libraries. + + + .. change:: + :tags: bug, orm + :tickets: 4772 + + Fixed bug where a many-to-one relationship that specified ``uselist=True`` + would fail to update correctly during a primary key change where a related + column needs to change. + + + .. change:: + :tags: bug, orm + :tickets: 4772 + + Fixed bug where the detection for many-to-one or one-to-one use with a + "dynamic" relationship, which is an invalid configuration, would fail to + raise if the relationship were configured with ``uselist=True``. The + current fix is that it warns, instead of raises, as this would otherwise be + backwards incompatible, however in a future release it will be a raise. + + + .. change:: + :tags: bug, orm + :tickets: 4767 + + Fixed bug where a synonym created against a mapped attribute that does not + exist yet, as is the case when it refers to backref before mappers are + configured, would raise recursion errors when trying to test for attributes + on it which ultimately don't exist (as occurs when the classes are run + through Sphinx autodoc), as the unconfigured state of the synonym would put + it into an attribute not found loop. + + + .. change:: + :tags: usecase, postgresql + :tickets: 4756 + + Added support for multidimensional Postgresql array literals via nesting + the :class:`.postgresql.array` object within another one. The + multidimensional array type is detected automatically. + + .. seealso:: + + :class:`.postgresql.array` + + .. change:: + :tags: bug, sql, postgresql + :tickets: 4760 + + Fixed issue where the :class:`.array_agg` construct in combination with + :meth:`.FunctionElement.filter` would not produce the correct operator + precedence in combination with the array index operator. + + + .. change:: + :tags: bug, sql + :tickets: 4747 + + Fixed an unlikely issue where the "corresponding column" routine for unions + and other :class:`.CompoundSelect` objects could return the wrong column in + some overlapping column situtations, thus potentially impacting some ORM + operations when set operations are in use, if the underlying + :func:`.select` constructs were used previously in other similar kinds of + routines, due to a cached value not being cleared. + + .. change:: + :tags: usecase, sqlite + :tickets: 4766 + + Added support for composite (tuple) IN operators with SQLite, by rendering + the VALUES keyword for this backend. As other backends such as DB2 are + known to use the same syntax, the syntax is enabled in the base compiler + using a dialect-level flag ``tuple_in_values``. The change also includes + support for "empty IN tuple" expressions for SQLite when using "in_()" + between a tuple value and an empty set. + .. changelog:: :version: 1.3.5 diff --git a/doc/build/changelog/unreleased_13/4624.rst b/doc/build/changelog/unreleased_13/4624.rst deleted file mode 100644 index bd9236a2ef..0000000000 --- a/doc/build/changelog/unreleased_13/4624.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, mysql - :tickets: 4624 - - Enhanced MySQL/MariaDB version string parsing to accommodate for exotic - MariaDB version strings where the "MariaDB" word is embedded among other - alphanumeric characters such as "MariaDBV1". This detection is critical in - order to correctly accommodate for API features that have split between MySQL - and MariaDB such as the "transaction_isolation" system variable. - diff --git a/doc/build/changelog/unreleased_13/4713.rst b/doc/build/changelog/unreleased_13/4713.rst deleted file mode 100644 index 1f6746b730..0000000000 --- a/doc/build/changelog/unreleased_13/4713.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4713 - - Fixed an issue where the :meth:`.orm._ORMJoin.join` method, which is a - not-internally-used ORM-level method that exposes what is normally an - internal process of :meth:`.Query.join`, did not propagate the ``full`` and - ``outerjoin`` keyword arguments correctly. Pull request courtesy Denis - Kataev. diff --git a/doc/build/changelog/unreleased_13/4736.rst b/doc/build/changelog/unreleased_13/4736.rst deleted file mode 100644 index 3e5d30023b..0000000000 --- a/doc/build/changelog/unreleased_13/4736.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: orm, feature - :tickets: 4736 - - Added new loader option method :meth:`.Load.options` which allows loader - options to be constructed hierarchically, so that many sub-options can be - applied to a particular path without needing to call :func:`.defaultload` - many times. Thanks to Alessio Bogon for the idea. - diff --git a/doc/build/changelog/unreleased_13/4743.rst b/doc/build/changelog/unreleased_13/4743.rst deleted file mode 100644 index 0bac5dc688..0000000000 --- a/doc/build/changelog/unreleased_13/4743.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, mysql - :tickets: 4743 - - Fixed bug where the special logic to render "NULL" for the - :class:`.TIMESTAMP` datatype when ``nullable=True`` would not work if the - column's datatype were a :class:`.TypeDecorator` or a :class:`.Variant`. - The logic now ensures that it unwraps down to the original - :class:`.TIMESTAMP` so that this special case NULL keyword is correctly - rendered when requested. diff --git a/doc/build/changelog/unreleased_13/4745.rst b/doc/build/changelog/unreleased_13/4745.rst deleted file mode 100644 index 0728588a1c..0000000000 --- a/doc/build/changelog/unreleased_13/4745.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. change:: - :tags: bug, mssql - :tickets: 4745 - - Ensured that the queries used to reflect indexes and view definitions will - explicitly CAST string parameters into NVARCHAR, as many SQL Server drivers - frequently treat string values, particularly those with non-ascii - characters or larger string values, as TEXT which often don't compare - correctly against VARCHAR characters in SQL Server's information schema - tables for some reason. These CAST operations already take place for - reflection queries against SQL Server ``information_schema.`` tables but - were missing from three additional queries that are against ``sys.`` - tables. diff --git a/doc/build/changelog/unreleased_13/4747.rst b/doc/build/changelog/unreleased_13/4747.rst deleted file mode 100644 index dc0a628525..0000000000 --- a/doc/build/changelog/unreleased_13/4747.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, sql - :tickets: 4747 - - Fixed an unlikely issue where the "corresponding column" routine for unions - and other :class:`.CompoundSelect` objects could return the wrong column in - some overlapping column situtations, thus potentially impacting some ORM - operations when set operations are in use, if the underlying - :func:`.select` constructs were used previously in other similar kinds of - routines, due to a cached value not being cleared. diff --git a/doc/build/changelog/unreleased_13/4754.rst b/doc/build/changelog/unreleased_13/4754.rst deleted file mode 100644 index d8a3375cc6..0000000000 --- a/doc/build/changelog/unreleased_13/4754.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, engine - :tickets: 4754 - - Fixed bug where using reflection function such as :meth:`.MetaData.reflect` - with an :class:`.Engine` object that had execution options applied to it - would fail, as the resulting :class:`.OptionEngine` proxy object failed to - include a ``.engine`` attribute used within the reflection routines. diff --git a/doc/build/changelog/unreleased_13/4756.rst b/doc/build/changelog/unreleased_13/4756.rst deleted file mode 100644 index d27c392355..0000000000 --- a/doc/build/changelog/unreleased_13/4756.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: usecase, postgresql - :tickets: 4756 - - Added support for multidimensional Postgresql array literals via nesting - the :class:`.postgresql.array` object within another one. The - multidimensional array type is detected automatically. - - .. seealso:: - - :class:`.postgresql.array` diff --git a/doc/build/changelog/unreleased_13/4758.rst b/doc/build/changelog/unreleased_13/4758.rst deleted file mode 100644 index 238c74146c..0000000000 --- a/doc/build/changelog/unreleased_13/4758.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, sql - :tickets: 4758 - - Adjusted the initialization for :class:`.Enum` to minimize how often it - invokes the ``.__members__`` attribute of a given PEP-435 enumeration - object, to suit the case where this attribute is expensive to invoke, as is - the case for some popular third party enumeration libraries. - diff --git a/doc/build/changelog/unreleased_13/4760.rst b/doc/build/changelog/unreleased_13/4760.rst deleted file mode 100644 index 762cdc93a1..0000000000 --- a/doc/build/changelog/unreleased_13/4760.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, sql, postgresql - :tickets: 4760 - - Fixed issue where the :class:`.array_agg` construct in combination with - :meth:`.FunctionElement.filter` would not produce the correct operator - precedence in combination with the array index operator. - diff --git a/doc/build/changelog/unreleased_13/4766.rst b/doc/build/changelog/unreleased_13/4766.rst deleted file mode 100644 index afea19a185..0000000000 --- a/doc/build/changelog/unreleased_13/4766.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: usecase, sqlite - :tickets: 4766 - - Added support for composite (tuple) IN operators with SQLite, by rendering - the VALUES keyword for this backend. As other backends such as DB2 are - known to use the same syntax, the syntax is enabled in the base compiler - using a dialect-level flag ``tuple_in_values``. The change also includes - support for "empty IN tuple" expressions for SQLite when using "in_()" - between a tuple value and an empty set. - diff --git a/doc/build/changelog/unreleased_13/4767.rst b/doc/build/changelog/unreleased_13/4767.rst deleted file mode 100644 index 04608ade97..0000000000 --- a/doc/build/changelog/unreleased_13/4767.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4767 - - Fixed bug where a synonym created against a mapped attribute that does not - exist yet, as is the case when it refers to backref before mappers are - configured, would raise recursion errors when trying to test for attributes - on it which ultimately don't exist (as occurs when the classes are run - through Sphinx autodoc), as the unconfigured state of the synonym would put - it into an attribute not found loop. - diff --git a/doc/build/changelog/unreleased_13/4771.rst b/doc/build/changelog/unreleased_13/4771.rst deleted file mode 100644 index e40797def4..0000000000 --- a/doc/build/changelog/unreleased_13/4771.rst +++ /dev/null @@ -1,6 +0,0 @@ -.. change:: - :tags: usecase, postgresql - :tickets: 4771 - - Added support for reflection of indexes on PostgreSQL partitioned tables, - which was added to PostgreSQL as of version 11. diff --git a/doc/build/changelog/unreleased_13/4772.rst b/doc/build/changelog/unreleased_13/4772.rst deleted file mode 100644 index f3f29a07c6..0000000000 --- a/doc/build/changelog/unreleased_13/4772.rst +++ /dev/null @@ -1,19 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4772 - - Fixed bug where a many-to-one relationship that specified ``uselist=True`` - would fail to update correctly during a primary key change where a related - column needs to change. - - -.. change:: - :tags: bug, orm - :tickets: 4772 - - Fixed bug where the detection for many-to-one or one-to-one use with a - "dynamic" relationship, which is an invalid configuration, would fail to - raise if the relationship were configured with ``uselist=True``. The - current fix is that it warns, instead of raises, as this would otherwise be - backwards incompatible, however in a future release it will be a raise. - diff --git a/doc/build/changelog/unreleased_13/4773.rst b/doc/build/changelog/unreleased_13/4773.rst deleted file mode 100644 index 8ac9e42fb5..0000000000 --- a/doc/build/changelog/unreleased_13/4773.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4773 - - Fixed regression caused by :ticket:`4365` where a join from an entity to - itself without using aliases no longer raises an informative error message, - instead failing on an assertion. The informative error condition has been - restored. - diff --git a/doc/build/changelog/unreleased_13/4775.rst b/doc/build/changelog/unreleased_13/4775.rst deleted file mode 100644 index 34d4d2c2a7..0000000000 --- a/doc/build/changelog/unreleased_13/4775.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: performance, orm - :tickets: 4775 - - The optimzation applied to selectin loading in :ticket:`4340` where a JOIN - is not needed to eagerly load related items is now applied to many-to-one - relationships as well, so that only the related table is queried for a - simple join condition. In this case, the related items are queried - based on the value of a foreign key column on the parent; if these columns - are deferred or otherwise not loaded on any of the parent objects in - the collection, the loader falls back to the JOIN method. -