From: Mike Bayer Date: Wed, 8 Apr 2020 02:41:36 +0000 (-0400) Subject: - 1.3.16 X-Git-Tag: rel_1_3_16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=06ba82a9c74885d1c5d8da7d138a869d83167cae;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - 1.3.16 --- diff --git a/doc/build/changelog/changelog_13.rst b/doc/build/changelog/changelog_13.rst index 064d1b225b..bf19cf025d 100644 --- a/doc/build/changelog/changelog_13.rst +++ b/doc/build/changelog/changelog_13.rst @@ -12,7 +12,166 @@ .. changelog:: :version: 1.3.16 - :include_notes_from: unreleased_13 + :released: April 7, 2020 + + .. change:: + :tags: oracle, usecase + :tickets: 5200 + + Implemented AUTOCOMMIT isolation level for Oracle when using cx_Oracle. + Also added a fixed default isolation level of READ COMMITTED for Oracle. + + + .. change:: + :tags: bug, mysql + :tickets: 5239 + + Fixed issue in MySQL dialect when connecting to a psuedo-MySQL database + such as that provided by ProxySQL, the up front check for isolation level + when it returns no row will not prevent the dialect from continuing to + connect. A warning is emitted that the isolation level could not be + detected. + + + .. change:: + :tags: bug, tests + :tickets: 5201 + + Fixed an issue that prevented the test suite from running with the + recently released py.test 5.4.0. + + + .. change:: + :tags: bug, oracle, reflection + :tickets: 5146 + + Fixed regression / incorrect fix caused by fix for :ticket:`5146` where the + Oracle dialect reads from the "all_tab_comments" view to get table comments + but fails to accommodate for the current owner of the table being + requested, causing it to read the wrong comment if multiple tables of the + same name exist in multiple schemas. + + + .. change:: + :tags: types, enum + :tickets: 5183 + + The :class:`.Enum` type now supports the parameter :paramref:`.Enum.length` + to specify the length of the VARCHAR column to create when using + non native enums by setting :paramref:`.Enum.native_enum` to ``False`` + + .. change:: + :tags: bug, orm + :tickets: 5228 + + Fixed bug in :func:`.orm.selectinload` loading option where two or more + loaders that represent different relationships with the same string key + name as referenced from a single :func:`.orm.with_polymorphic` construct + with multiple subclass mappers would fail to invoke each subqueryload + separately, instead making use of a single string-based slot that would + prevent the other loaders from being invoked. + + + .. change:: + :tags: schema, reflection + :tickets: 5063 + + Added support for reflection of "computed" columns, which are now returned + as part of the structure returned by :meth:`.Inspector.get_columns`. + When reflecting full :class:`.Table` objects, computed columns will + be represented using the :class:`.Computed` construct. + + .. change:: + :tags: orm, performance + :tickets: 5162 + + Modified the queries used by subqueryload and selectinload to no longer + ORDER BY the primary key of the parent entity; this ordering was there to + allow the rows as they come in to be copied into lists directly with a + minimal level of Python-side collation. However, these ORDER BY clauses + can negatively impact the performance of the query as in many scenarios + these columns are derived from a subquery or are otherwise not actual + primary key columns such that SQL planners cannot make use of indexes. The + Python-side collation uses the native itertools.group_by() to collate the + incoming rows, and has been modified to allow multiple + row-groups-per-parent to be assembled together using list.extend(), which + should still allow for relatively fast Python-side performance. There will + still be an ORDER BY present for a relationship that includes an explicit + order_by parameter, however this is the only ORDER BY that will be added to + the query for both kinds of loading. + + .. change:: + :tags: mssql, mysql, oracle, usecase + :tickets: 5137 + + Added support for :meth:`.ColumnOperators.is_distinct_from` and + :meth:`.ColumnOperators.isnot_distinct_from` to SQL Server, + MySQL, and Oracle. + + .. change:: + :tags: sqlite, usecase + :tickets: 5164 + + Implemented AUTOCOMMIT isolation level for SQLite when using pysqlite. + + .. change:: + :tags: bug, postgresql + :tickets: 5205 + + Fixed issue where a "covering" index, e.g. those which have an INCLUDE + clause, would be reflected including all the columns in INCLUDE clause as + regular columns. A warning is now emitted if these additional columns are + detected indicating that they are currently ignored. Note that full + support for "covering" indexes is part of :ticket:`4458`. Pull request + courtesy Marat Sharafutdinov. + + .. change:: + :tags: sql, types + :tickets: 5052 + + Add ability to literal compile a :class:`DateTime`, :class:`Date` + or :class:"Time" when using the string dialect for debugging purposes. + This change does not impact real dialect implementation that retain + their current behavior. + + .. change:: + :tags: installer + :tickets: 5207 + + Ensured that the "pyproject.toml" file is not included in builds, as the + presence of this file indicates to pip that a pep-517 installation process + should be used. As this mode of operation appears to be not well supported + by current tools / distros, these problems are avoided within the scope + of SQLAlchemy installation by omitting the file. + + + .. change:: + :tags: bug, orm + :tickets: 5210 + + Fixed issue where a lazyload that uses session-local "get" against a target + many-to-one relationship where an object with the correct primary key is + present, however it's an instance of a sibling class, does not correctly + return None as is the case when the lazy loader actually emits a load for + that row. + + .. change:: + :tags: bug, orm, declarative + :tickets: 5238 + + The string argument accepted as the first positional argument by the + :func:`.relationship` function when using the Declarative API is no longer + interpreted using the Python ``eval()`` function; instead, the name is dot + separated and the names are looked up directly in the name resolution + dictionary without treating the value as a Python expression. However, + passing a string argument to the other :func:`.relationship` parameters + that necessarily must accept Python expressions will still use ``eval()``; + the documentation has been clarified to ensure that there is no ambiguity + that this is in use. + + .. seealso:: + + :ref:`declarative_relationship_eval` - details on string evaluation .. changelog:: :version: 1.3.15 diff --git a/doc/build/changelog/unreleased_13/5052.rst b/doc/build/changelog/unreleased_13/5052.rst deleted file mode 100644 index 9680ba5dbc..0000000000 --- a/doc/build/changelog/unreleased_13/5052.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: sql, types - :tickets: 5052 - - Add ability to literal compile a :class:`DateTime`, :class:`Date` - or :class:"Time" when using the string dialect for debugging purposes. - This change does not impact real dialect implementation that retain - their current behavior. diff --git a/doc/build/changelog/unreleased_13/5063.rst b/doc/build/changelog/unreleased_13/5063.rst deleted file mode 100644 index ca8ad66910..0000000000 --- a/doc/build/changelog/unreleased_13/5063.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. change:: - :tags: schema, reflection - :tickets: 5063 - - Added support for reflection of "computed" columns, which are now returned - as part of the structure returned by :meth:`.Inspector.get_columns`. - When reflecting full :class:`.Table` objects, computed columns will - be represented using the :class:`.Computed` construct. diff --git a/doc/build/changelog/unreleased_13/5137.rst b/doc/build/changelog/unreleased_13/5137.rst deleted file mode 100644 index c53ca01987..0000000000 --- a/doc/build/changelog/unreleased_13/5137.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: mssql, mysql, oracle, usecase - :tickets: 5137 - - Added support for :meth:`.ColumnOperators.is_distinct_from` and - :meth:`.ColumnOperators.isnot_distinct_from` to SQL Server, - MySQL, and Oracle. diff --git a/doc/build/changelog/unreleased_13/5146.rst b/doc/build/changelog/unreleased_13/5146.rst deleted file mode 100644 index 56e555424a..0000000000 --- a/doc/build/changelog/unreleased_13/5146.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, oracle, reflection - :tickets: 5146 - - Fixed regression / incorrect fix caused by fix for :ticket:`5146` where the - Oracle dialect reads from the "all_tab_comments" view to get table comments - but fails to accommodate for the current owner of the table being - requested, causing it to read the wrong comment if multiple tables of the - same name exist in multiple schemas. - diff --git a/doc/build/changelog/unreleased_13/5162.rst b/doc/build/changelog/unreleased_13/5162.rst deleted file mode 100644 index 61ff4a1eda..0000000000 --- a/doc/build/changelog/unreleased_13/5162.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. change:: - :tags: orm, performance - :tickets: 5162 - - Modified the queries used by subqueryload and selectinload to no longer - ORDER BY the primary key of the parent entity; this ordering was there to - allow the rows as they come in to be copied into lists directly with a - minimal level of Python-side collation. However, these ORDER BY clauses - can negatively impact the performance of the query as in many scenarios - these columns are derived from a subquery or are otherwise not actual - primary key columns such that SQL planners cannot make use of indexes. The - Python-side collation uses the native itertools.group_by() to collate the - incoming rows, and has been modified to allow multiple - row-groups-per-parent to be assembled together using list.extend(), which - should still allow for relatively fast Python-side performance. There will - still be an ORDER BY present for a relationship that includes an explicit - order_by parameter, however this is the only ORDER BY that will be added to - the query for both kinds of loading. diff --git a/doc/build/changelog/unreleased_13/5164.rst b/doc/build/changelog/unreleased_13/5164.rst deleted file mode 100644 index 5883ecb1dd..0000000000 --- a/doc/build/changelog/unreleased_13/5164.rst +++ /dev/null @@ -1,5 +0,0 @@ -.. change:: - :tags: sqlite, usecase - :tickets: 5164 - - Implemented AUTOCOMMIT isolation level for SQLite when using pysqlite. diff --git a/doc/build/changelog/unreleased_13/5183.rst b/doc/build/changelog/unreleased_13/5183.rst deleted file mode 100644 index 21265e0b20..0000000000 --- a/doc/build/changelog/unreleased_13/5183.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: types, enum - :tickets: 5183 - - The :class:`.Enum` type now supports the parameter :paramref:`.Enum.length` - to specify the length of the VARCHAR column to create when using - non native enums by setting :paramref:`.Enum.native_enum` to ``False`` diff --git a/doc/build/changelog/unreleased_13/5200.rst b/doc/build/changelog/unreleased_13/5200.rst deleted file mode 100644 index b7e156c971..0000000000 --- a/doc/build/changelog/unreleased_13/5200.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: oracle, usecase - :tickets: 5200 - - Implemented AUTOCOMMIT isolation level for Oracle when using cx_Oracle. - Also added a fixed default isolation level of READ COMMITTED for Oracle. - diff --git a/doc/build/changelog/unreleased_13/5201.rst b/doc/build/changelog/unreleased_13/5201.rst deleted file mode 100644 index 45ec9dbc49..0000000000 --- a/doc/build/changelog/unreleased_13/5201.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. change:: - :tags: bug, tests - :tickets: 5201 - - Fixed an issue that prevented the test suite from running with the - recently released py.test 5.4.0. - diff --git a/doc/build/changelog/unreleased_13/5205.rst b/doc/build/changelog/unreleased_13/5205.rst deleted file mode 100644 index 00129e7e21..0000000000 --- a/doc/build/changelog/unreleased_13/5205.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, postgresql - :tickets: 5205 - - Fixed issue where a "covering" index, e.g. those which have an INCLUDE - clause, would be reflected including all the columns in INCLUDE clause as - regular columns. A warning is now emitted if these additional columns are - detected indicating that they are currently ignored. Note that full - support for "covering" indexes is part of :ticket:`4458`. Pull request - courtesy Marat Sharafutdinov. diff --git a/doc/build/changelog/unreleased_13/5207.rst b/doc/build/changelog/unreleased_13/5207.rst deleted file mode 100644 index 076c51cb26..0000000000 --- a/doc/build/changelog/unreleased_13/5207.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: installer - :tickets: 5207 - - Ensured that the "pyproject.toml" file is not included in builds, as the - presence of this file indicates to pip that a pep-517 installation process - should be used. As this mode of operation appears to be not well supported - by current tools / distros, these problems are avoided within the scope - of SQLAlchemy installation by omitting the file. - diff --git a/doc/build/changelog/unreleased_13/5210.rst b/doc/build/changelog/unreleased_13/5210.rst deleted file mode 100644 index 0a50ba04e9..0000000000 --- a/doc/build/changelog/unreleased_13/5210.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 5210 - - Fixed issue where a lazyload that uses session-local "get" against a target - many-to-one relationship where an object with the correct primary key is - present, however it's an instance of a sibling class, does not correctly - return None as is the case when the lazy loader actually emits a load for - that row. diff --git a/doc/build/changelog/unreleased_13/5228.rst b/doc/build/changelog/unreleased_13/5228.rst deleted file mode 100644 index 2f0b6a5675..0000000000 --- a/doc/build/changelog/unreleased_13/5228.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. change:: - :tags: bug, orm - :tickets: 5228 - - Fixed bug in :func:`.orm.selectinload` loading option where two or more - loaders that represent different relationships with the same string key - name as referenced from a single :func:`.orm.with_polymorphic` construct - with multiple subclass mappers would fail to invoke each subqueryload - separately, instead making use of a single string-based slot that would - prevent the other loaders from being invoked. - diff --git a/doc/build/changelog/unreleased_13/5238.rst b/doc/build/changelog/unreleased_13/5238.rst deleted file mode 100644 index 1fb54ebe74..0000000000 --- a/doc/build/changelog/unreleased_13/5238.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. change:: - :tags: bug, orm, declarative - :tickets: 5238 - - The string argument accepted as the first positional argument by the - :func:`.relationship` function when using the Declarative API is no longer - interpreted using the Python ``eval()`` function; instead, the name is dot - separated and the names are looked up directly in the name resolution - dictionary without treating the value as a Python expression. However, - passing a string argument to the other :func:`.relationship` parameters - that necessarily must accept Python expressions will still use ``eval()``; - the documentation has been clarified to ensure that there is no ambiguity - that this is in use. - - .. seealso:: - - :ref:`declarative_relationship_eval` - details on string evaluation \ No newline at end of file diff --git a/doc/build/changelog/unreleased_13/5239.rst b/doc/build/changelog/unreleased_13/5239.rst deleted file mode 100644 index 6d0c720870..0000000000 --- a/doc/build/changelog/unreleased_13/5239.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. change:: - :tags: bug, mysql - :tickets: 5239 - - Fixed issue in MySQL dialect when connecting to a psuedo-MySQL database - such as that provided by ProxySQL, the up front check for isolation level - when it returns no row will not prevent the dialect from continuing to - connect. A warning is emitted that the isolation level could not be - detected. - diff --git a/doc/build/conf.py b/doc/build/conf.py index d81317a09d..ed6f171dbe 100644 --- a/doc/build/conf.py +++ b/doc/build/conf.py @@ -123,9 +123,9 @@ copyright = u"2007-2020, the SQLAlchemy authors and contributors" # noqa # The short X.Y version. version = "1.3" # The full version, including alpha/beta/rc tags. -release = "1.3.15" +release = "1.3.16" -release_date = "March 11, 2020" +release_date = "April 7, 2020" site_base = os.environ.get("RTD_SITE_BASE", "http://www.sqlalchemy.org") site_adapter_template = "docs_adapter.mako"