From bc76a5d184eaf16acaee58779d8eced074236c29 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 29 Jun 2018 13:45:16 -0400 Subject: [PATCH] cherry-pick changelog from 1.2.9 --- doc/build/changelog/changelog_12.rst | 197 +++++++++++++++++- doc/build/changelog/unreleased_12/3505.rst | 8 - doc/build/changelog/unreleased_12/3645.rst | 8 - doc/build/changelog/unreleased_12/4228.rst | 8 - doc/build/changelog/unreleased_12/4243.rst | 11 - doc/build/changelog/unreleased_12/4269.rst | 10 - doc/build/changelog/unreleased_12/4270.rst | 14 -- doc/build/changelog/unreleased_12/4273.rst | 11 - doc/build/changelog/unreleased_12/4275.rst | 13 -- doc/build/changelog/unreleased_12/4279.rst | 12 -- doc/build/changelog/unreleased_12/4283.rst | 16 -- doc/build/changelog/unreleased_12/4286.rst | 8 - doc/build/changelog/unreleased_12/4287.rst | 9 - doc/build/changelog/unreleased_12/4290.rst | 16 -- doc/build/changelog/unreleased_12/4291.rst | 7 - doc/build/changelog/unreleased_12/4293.rst | 8 - .../unreleased_12/mysqlconnector_percents.rst | 12 -- doc/build/changelog/unreleased_12/pr452.rst | 7 - 18 files changed, 196 insertions(+), 179 deletions(-) delete mode 100644 doc/build/changelog/unreleased_12/3505.rst delete mode 100644 doc/build/changelog/unreleased_12/3645.rst delete mode 100644 doc/build/changelog/unreleased_12/4228.rst delete mode 100644 doc/build/changelog/unreleased_12/4243.rst delete mode 100644 doc/build/changelog/unreleased_12/4269.rst delete mode 100644 doc/build/changelog/unreleased_12/4270.rst delete mode 100644 doc/build/changelog/unreleased_12/4273.rst delete mode 100644 doc/build/changelog/unreleased_12/4275.rst delete mode 100644 doc/build/changelog/unreleased_12/4279.rst delete mode 100644 doc/build/changelog/unreleased_12/4283.rst delete mode 100644 doc/build/changelog/unreleased_12/4286.rst delete mode 100644 doc/build/changelog/unreleased_12/4287.rst delete mode 100644 doc/build/changelog/unreleased_12/4290.rst delete mode 100644 doc/build/changelog/unreleased_12/4291.rst delete mode 100644 doc/build/changelog/unreleased_12/4293.rst delete mode 100644 doc/build/changelog/unreleased_12/mysqlconnector_percents.rst delete mode 100644 doc/build/changelog/unreleased_12/pr452.rst diff --git a/doc/build/changelog/changelog_12.rst b/doc/build/changelog/changelog_12.rst index ebea9b753c..8a7c2059a9 100644 --- a/doc/build/changelog/changelog_12.rst +++ b/doc/build/changelog/changelog_12.rst @@ -12,7 +12,202 @@ .. changelog:: :version: 1.2.9 - :include_notes_from: unreleased_12 + :released: June 29, 2018 + + .. change:: + :tags: bug, mysql + + Fixed percent-sign doubling in mysql-connector-python dialect, which does + not require de-doubling of percent signs. Additionally, the mysql- + connector-python driver is inconsistent in how it passes the column names + in cursor.description, so a workaround decoder has been added to + conditionally decode these randomly-sometimes-bytes values to unicode only + if needed. Also improved test support for mysql-connector-python, however + it should be noted that this driver still has issues with unicode that + continue to be unresolved as of yet. + + + .. change:: + :tags: bug, mssql + :tickets: 4228 + + Fixed bug in MSSQL reflection where when two same-named tables in different + schemas had same-named primary key constraints, foreign key constraints + referring to one of the tables would have their columns doubled, causing + errors. Pull request courtesy Sean Dunn. + + .. change:: + :tags: bug, sql + :tickets: 4279 + + Fixed regression in 1.2 due to :ticket:`4147` where a :class:`.Table` that + has had some of its indexed columns redefined with new ones, as would occur + when overriding columns during reflection or when using + :paramref:`.Table.extend_existing`, such that the :meth:`.Table.tometadata` + method would fail when attempting to copy those indexes as they still + referred to the replaced column. The copy logic now accommodates for this + condition. + + + .. change:: + :tags: bug, mysql + :tickets: 4293 + + Fixed bug in index reflection where on MySQL 8.0 an index that includes + ASC or DESC in an indexed column specfication would not be correctly + reflected, as MySQL 8.0 introduces support for returning this information + in a table definition string. + + .. change:: + :tags: bug, orm + :tickets: 3505 + + Fixed issue where chaining multiple join elements inside of + :meth:`.Query.join` might not correctly adapt to the previous left-hand + side, when chaining joined inheritance classes that share the same base + class. + + .. change:: + :tags: bug, orm + :tickets: 4287 + + Fixed bug in cache key generation for baked queries which could cause a + too-short cache key to be generated for the case of eager loads across + subclasses. This could in turn cause the eagerload query to be cached in + place of a non-eagerload query, or vice versa, for a polymorhic "selectin" + load, or possibly for lazy loads or selectin loads as well. + + .. change:: + :tags: bug, sqlite + :versions: 1.3.0b1 + + Fixed issue in test suite where SQLite 3.24 added a new reserved word that + conflicted with a usage in TypeReflectionTest. Pull request courtesy Nils + Philippsen. + + .. change:: + :tags: feature, oracle + :tickets: 4290 + :versions: 1.3.0b1 + + Added a new event currently used only by the cx_Oracle dialect, + :meth:`.DialectEvents.setiputsizes`. The event passes a dictionary of + :class:`.BindParameter` objects to DBAPI-specific type objects that will be + passed, after conversion to parameter names, to the cx_Oracle + ``cursor.setinputsizes()`` method. This allows both visibility into the + setinputsizes process as well as the ability to alter the behavior of what + datatypes are passed to this method. + + .. seealso:: + + :ref:`cx_oracle_setinputsizes` + + .. change:: + :tags: bug, orm + :tickets: 4286 + + Fixed bug in new polymorphic selectin loading where the BakedQuery used + internally would be mutated by the given loader options, which would both + inappropriately mutate the subclass query as well as carry over the effect + to subsequent queries. + + .. change:: + :tags: bug, py3k + :tickets: 4291 + + Replaced the usage of inspect.formatargspec() with a vendored version + copied from the Python standard library, as inspect.formatargspec() + is deprecated and as of Python 3.7.0 is emitting a warning. + + .. change:: + :tags: feature, ext + :tickets: 4243 + :versions: 1.3.0b1 + + Added new attribute :attr:`.Query.lazy_loaded_from` which is populated + with an :class:`.InstanceState` that is using this :class:`.Query` in + order to lazy load a relationship. The rationale for this is that + it serves as a hint for the horizontal sharding feature to use, such that + the identity token of the state can be used as the default identity token + to use for the query within id_chooser(). + + .. change:: + :tags: bug, mysql + :tickets: 4283 + + Fixed bug in MySQLdb dialect and variants such as PyMySQL where an + additional "unicode returns" check upon connection makes explicit use of + the "utf8" character set, which in MySQL 8.0 emits a warning that utf8mb4 + should be used. This is now replaced with a utf8mb4 equivalent. + Documentation is also updated for the MySQL dialect to specify utf8mb4 in + all examples. Additional changes have been made to the test suite to use + utf8mb3 charsets and databases (there seem to be collation issues in some + edge cases with utf8mb4), and to support configuration default changes made + in MySQL 8.0 such as explicit_defaults_for_timestamp as well as new errors + raised for invalid MyISAM indexes. + + + + .. change:: + :tags: bug, mysql + :tickets: 3645 + + The :class:`.Update` construct now accommodates a :class:`.Join` object + as supported by MySQL for UPDATE..FROM. As the construct already + accepted an alias object for a similar purpose, the feature of UPDATE + against a non-table was already implied so this has been added. + + .. change:: + :tags: bug, mssql, py3k + :tickets: 4273 + + Fixed issue within the SQL Server dialect under Python 3 where when running + against a non-standard SQL server database that does not contain either the + "sys.dm_exec_sessions" or "sys.dm_pdw_nodes_exec_sessions" views, leading + to a failure to fetch the isolation level, the error raise would fail due + to an UnboundLocalError. + + + + .. change:: + :tags: bug, orm + :tickets: 4269 + + Fixed regression caused by :ticket:`4256` (itself a regression fix for + :ticket:`4228`) which breaks an undocumented behavior which converted for a + non-sequence of entities passed directly to the :class:`.Query` constructor + into a single-element sequence. While this behavior was never supported or + documented, it's already in use so has been added as a behavioral contract + to :class:`.Query`. + + .. change:: + :tags: bug, orm + :tickets: 4270 + + Fixed an issue that was both a performance regression in 1.2 as well as an + incorrect result regarding the "baked" lazy loader, involving the + generation of cache keys from the original :class:`.Query` object's loader + options. If the loader options were built up in a "branched" style using + common base elements for multiple options, the same options would be + rendered into the cache key repeatedly, causing both a performance issue as + well as generating the wrong cache key. This is fixed, along with a + performance improvement when such "branched" options are applied via + :meth:`.Query.options` to prevent the same option objects from being + applied repeatedly. + + .. change:: + :tags: bug, oracle, mysql + :tickets: 4275 + :versions: 1.3.0b1 + + Fixed INSERT FROM SELECT with CTEs for the Oracle and MySQL dialects, where + the CTE was being placed above the entire statement as is typical with + other databases, however Oracle and MariaDB 10.2 wants the CTE underneath + the "INSERT" segment. Note that the Oracle and MySQL dialects don't yet + work when a CTE is applied to a subquery inside of an UPDATE or DELETE + statement, as the CTE is still applied to the top rather than inside the + subquery. + .. changelog:: :version: 1.2.8 diff --git a/doc/build/changelog/unreleased_12/3505.rst b/doc/build/changelog/unreleased_12/3505.rst deleted file mode 100644 index b2990596c4..0000000000 --- a/doc/build/changelog/unreleased_12/3505.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 3505 - - Fixed issue where chaining multiple join elements inside of - :meth:`.Query.join` might not correctly adapt to the previous left-hand - side, when chaining joined inheritance classes that share the same base - class. diff --git a/doc/build/changelog/unreleased_12/3645.rst b/doc/build/changelog/unreleased_12/3645.rst deleted file mode 100644 index e750744b15..0000000000 --- a/doc/build/changelog/unreleased_12/3645.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, mysql - :tickets: 3645 - - The :class:`.Update` construct now accommodates a :class:`.Join` object - as supported by MySQL for UPDATE..FROM. As the construct already - accepted an alias object for a similar purpose, the feature of UPDATE - against a non-table was already implied so this has been added. diff --git a/doc/build/changelog/unreleased_12/4228.rst b/doc/build/changelog/unreleased_12/4228.rst deleted file mode 100644 index c3a436da33..0000000000 --- a/doc/build/changelog/unreleased_12/4228.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, mssql - :tickets: 4228 - - Fixed bug in MSSQL reflection where when two same-named tables in different - schemas had same-named primary key constraints, foreign key constraints - referring to one of the tables would have their columns doubled, causing - errors. Pull request courtesy Sean Dunn. diff --git a/doc/build/changelog/unreleased_12/4243.rst b/doc/build/changelog/unreleased_12/4243.rst deleted file mode 100644 index bd27d5c051..0000000000 --- a/doc/build/changelog/unreleased_12/4243.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: feature, ext - :tickets: 4243 - :versions: 1.3.0b1 - - Added new attribute :attr:`.Query.lazy_loaded_from` which is populated - with an :class:`.InstanceState` that is using this :class:`.Query` in - order to lazy load a relationship. The rationale for this is that - it serves as a hint for the horizontal sharding feature to use, such that - the identity token of the state can be used as the default identity token - to use for the query within id_chooser(). diff --git a/doc/build/changelog/unreleased_12/4269.rst b/doc/build/changelog/unreleased_12/4269.rst deleted file mode 100644 index 63dacfe02c..0000000000 --- a/doc/build/changelog/unreleased_12/4269.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4269 - - Fixed regression caused by :ticket:`4256` (itself a regression fix for - :ticket:`4228`) which breaks an undocumented behavior which converted for a - non-sequence of entities passed directly to the :class:`.Query` constructor - into a single-element sequence. While this behavior was never supported or - documented, it's already in use so has been added as a behavioral contract - to :class:`.Query`. diff --git a/doc/build/changelog/unreleased_12/4270.rst b/doc/build/changelog/unreleased_12/4270.rst deleted file mode 100644 index f7b449bd1d..0000000000 --- a/doc/build/changelog/unreleased_12/4270.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4270 - - Fixed an issue that was both a performance regression in 1.2 as well as an - incorrect result regarding the "baked" lazy loader, involving the - generation of cache keys from the original :class:`.Query` object's loader - options. If the loader options were built up in a "branched" style using - common base elements for multiple options, the same options would be - rendered into the cache key repeatedly, causing both a performance issue as - well as generating the wrong cache key. This is fixed, along with a - performance improvement when such "branched" options are applied via - :meth:`.Query.options` to prevent the same option objects from being - applied repeatedly. diff --git a/doc/build/changelog/unreleased_12/4273.rst b/doc/build/changelog/unreleased_12/4273.rst deleted file mode 100644 index ec8b95c56a..0000000000 --- a/doc/build/changelog/unreleased_12/4273.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: bug, mssql, py3k - :tickets: 4273 - - Fixed issue within the SQL Server dialect under Python 3 where when running - against a non-standard SQL server database that does not contain either the - "sys.dm_exec_sessions" or "sys.dm_pdw_nodes_exec_sessions" views, leading - to a failure to fetch the isolation level, the error raise would fail due - to an UnboundLocalError. - - diff --git a/doc/build/changelog/unreleased_12/4275.rst b/doc/build/changelog/unreleased_12/4275.rst deleted file mode 100644 index 8d18be5049..0000000000 --- a/doc/build/changelog/unreleased_12/4275.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. change:: - :tags: bug, oracle, mysql - :tickets: 4275 - :versions: 1.3.0b1 - - Fixed INSERT FROM SELECT with CTEs for the Oracle and MySQL dialects, where - the CTE was being placed above the entire statement as is typical with - other databases, however Oracle and MariaDB 10.2 wants the CTE underneath - the "INSERT" segment. Note that the Oracle and MySQL dialects don't yet - work when a CTE is applied to a subquery inside of an UPDATE or DELETE - statement, as the CTE is still applied to the top rather than inside the - subquery. - diff --git a/doc/build/changelog/unreleased_12/4279.rst b/doc/build/changelog/unreleased_12/4279.rst deleted file mode 100644 index f7cedbf394..0000000000 --- a/doc/build/changelog/unreleased_12/4279.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: bug, sql - :tickets: 4279 - - Fixed regression in 1.2 due to :ticket:`4147` where a :class:`.Table` that - has had some of its indexed columns redefined with new ones, as would occur - when overriding columns during reflection or when using - :paramref:`.Table.extend_existing`, such that the :meth:`.Table.tometadata` - method would fail when attempting to copy those indexes as they still - referred to the replaced column. The copy logic now accommodates for this - condition. - diff --git a/doc/build/changelog/unreleased_12/4283.rst b/doc/build/changelog/unreleased_12/4283.rst deleted file mode 100644 index a110015091..0000000000 --- a/doc/build/changelog/unreleased_12/4283.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. change:: - :tags: bug, mysql - :tickets: 4283 - - Fixed bug in MySQLdb dialect and variants such as PyMySQL where an - additional "unicode returns" check upon connection makes explicit use of - the "utf8" character set, which in MySQL 8.0 emits a warning that utf8mb4 - should be used. This is now replaced with a utf8mb4 equivalent. - Documentation is also updated for the MySQL dialect to specify utf8mb4 in - all examples. Additional changes have been made to the test suite to use - utf8mb3 charsets and databases (there seem to be collation issues in some - edge cases with utf8mb4), and to support configuration default changes made - in MySQL 8.0 such as explicit_defaults_for_timestamp as well as new errors - raised for invalid MyISAM indexes. - - diff --git a/doc/build/changelog/unreleased_12/4286.rst b/doc/build/changelog/unreleased_12/4286.rst deleted file mode 100644 index ff3cc81ed6..0000000000 --- a/doc/build/changelog/unreleased_12/4286.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4286 - - Fixed bug in new polymorphic selectin loading where the BakedQuery used - internally would be mutated by the given loader options, which would both - inappropriately mutate the subclass query as well as carry over the effect - to subsequent queries. diff --git a/doc/build/changelog/unreleased_12/4287.rst b/doc/build/changelog/unreleased_12/4287.rst deleted file mode 100644 index d53327b5be..0000000000 --- a/doc/build/changelog/unreleased_12/4287.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 4287 - - Fixed bug in cache key generation for baked queries which could cause a - too-short cache key to be generated for the case of eager loads across - subclasses. This could in turn cause the eagerload query to be cached in - place of a non-eagerload query, or vice versa, for a polymorhic "selectin" - load, or possibly for lazy loads or selectin loads as well. diff --git a/doc/build/changelog/unreleased_12/4290.rst b/doc/build/changelog/unreleased_12/4290.rst deleted file mode 100644 index ee93f873cf..0000000000 --- a/doc/build/changelog/unreleased_12/4290.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. change:: - :tags: feature, oracle - :tickets: 4290 - :versions: 1.3.0b1 - - Added a new event currently used only by the cx_Oracle dialect, - :meth:`.DialectEvents.setiputsizes`. The event passes a dictionary of - :class:`.BindParameter` objects to DBAPI-specific type objects that will be - passed, after conversion to parameter names, to the cx_Oracle - ``cursor.setinputsizes()`` method. This allows both visibility into the - setinputsizes process as well as the ability to alter the behavior of what - datatypes are passed to this method. - - .. seealso:: - - :ref:`cx_oracle_setinputsizes` diff --git a/doc/build/changelog/unreleased_12/4291.rst b/doc/build/changelog/unreleased_12/4291.rst deleted file mode 100644 index 0fd5e7c4a7..0000000000 --- a/doc/build/changelog/unreleased_12/4291.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: bug, py3k - :tickets: 4291 - - Replaced the usage of inspect.formatargspec() with a vendored version - copied from the Python standard library, as inspect.formatargspec() - is deprecated and as of Python 3.7.0 is emitting a warning. diff --git a/doc/build/changelog/unreleased_12/4293.rst b/doc/build/changelog/unreleased_12/4293.rst deleted file mode 100644 index 51fac2033b..0000000000 --- a/doc/build/changelog/unreleased_12/4293.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: bug, mysql - :tickets: 4293 - - Fixed bug in index reflection where on MySQL 8.0 an index that includes - ASC or DESC in an indexed column specfication would not be correctly - reflected, as MySQL 8.0 introduces support for returning this information - in a table definition string. diff --git a/doc/build/changelog/unreleased_12/mysqlconnector_percents.rst b/doc/build/changelog/unreleased_12/mysqlconnector_percents.rst deleted file mode 100644 index c12dd5f433..0000000000 --- a/doc/build/changelog/unreleased_12/mysqlconnector_percents.rst +++ /dev/null @@ -1,12 +0,0 @@ -.. change:: - :tags: bug, mysql - - Fixed percent-sign doubling in mysql-connector-python dialect, which does - not require de-doubling of percent signs. Additionally, the mysql- - connector-python driver is inconsistent in how it passes the column names - in cursor.description, so a workaround decoder has been added to - conditionally decode these randomly-sometimes-bytes values to unicode only - if needed. Also improved test support for mysql-connector-python, however - it should be noted that this driver still has issues with unicode that - continue to be unresolved as of yet. - diff --git a/doc/build/changelog/unreleased_12/pr452.rst b/doc/build/changelog/unreleased_12/pr452.rst deleted file mode 100644 index 471b203dd0..0000000000 --- a/doc/build/changelog/unreleased_12/pr452.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: bug, sqlite - :versions: 1.3.0b1 - - Fixed issue in test suite where SQLite 3.24 added a new reserved word that - conflicted with a usage in TypeReflectionTest. Pull request courtesy Nils - Philippsen. -- 2.47.2