summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2021-04-06 18:59:01 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2021-04-06 18:59:01 -0400
commit2a74994fc7d82753e565780386dfeb8a4909813a (patch)
tree827a6f534848c658c2e0bc603e9e2fcc91a77e5b
parent15b62fd20b47d8da0f095150283f24cb1ea7fb0b (diff)
downloadsqlalchemy-2a74994fc7d82753e565780386dfeb8a4909813a.tar.gz
- 1.4.6rel_1_4_6
-rw-r--r--doc/build/changelog/changelog_14.rst105
-rw-r--r--doc/build/changelog/unreleased_14/6147.rst19
-rw-r--r--doc/build/changelog/unreleased_14/6199.rst9
-rw-r--r--doc/build/changelog/unreleased_14/6202.rst11
-rw-r--r--doc/build/changelog/unreleased_14/6203.rst7
-rw-r--r--doc/build/changelog/unreleased_14/6204.rst14
-rw-r--r--doc/build/changelog/unreleased_14/6205.rst9
-rw-r--r--doc/build/changelog/unreleased_14/6206.rst27
-rw-r--r--doc/build/conf.py4
9 files changed, 106 insertions, 99 deletions
diff --git a/doc/build/changelog/changelog_14.rst b/doc/build/changelog/changelog_14.rst
index 6bc69a1f6..4c011c3f4 100644
--- a/doc/build/changelog/changelog_14.rst
+++ b/doc/build/changelog/changelog_14.rst
@@ -15,7 +15,110 @@ This document details individual issue-level changes made throughout
.. changelog::
:version: 1.4.6
- :include_notes_from: unreleased_14
+ :released: April 6, 2021
+
+ .. change::
+ :tags: bug, sql, regression, oracle, mssql
+ :tickets: 6202
+
+ Fixed further regressions in the same area as that of :ticket:`6173` released in
+ 1.4.5, where a "postcompile" parameter, again most typically those used for
+ LIMIT/OFFSET rendering in Oracle and SQL Server, would fail to be processed
+ correctly if the same parameter rendered in multiple places in the
+ statement.
+
+
+
+ .. change::
+ :tags: bug, orm, regression
+ :tickets: 6203
+
+ Fixed regression where a deprecated form of :meth:`_orm.Query.join` were
+ used, passing a series of entities to join from without any ON clause in a
+ single :meth:`_orm.Query.join` call, would fail to function correctly.
+
+ .. change::
+ :tags: bug, mypy
+ :tickets: 6147
+
+ Applied a series of refactorings and fixes to accommodate for Mypy
+ "incremental" mode across multiple files, which previously was not taken
+ into account. In this mode the Mypy plugin has to accommodate Python
+ datatypes expressed in other files coming in with less information than
+ they have on a direct run.
+
+ Additionally, a new decorator :func:`_orm.declarative_mixin` is added,
+ which is necessary for the Mypy plugin to be able to definifitely identify
+ a Declarative mixin class that is otherwise not used inside a particular
+ Python file.
+
+ .. seealso::
+
+ :ref:`mypy_declarative_mixins`
+
+
+ .. change::
+ :tags: bug, mypy
+ :tickets: 6205
+
+ Fixed issue where the Mypy plugin would fail to interpret the
+ "collection_class" of a relationship if it were a callable and not a class.
+ Also improved type matching and error reporting for collection-oriented
+ relationships.
+
+
+ .. change::
+ :tags: bug, sql
+ :tickets: 6204
+
+ Executing a :class:`_sql.Subquery` using :meth:`_engine.Connection.execute`
+ is deprecated and will emit a deprecation warning; this use case was an
+ oversight that should have been removed from 1.4. The operation will now
+ execute the underlying :class:`_sql.Select` object directly for backwards
+ compatibility. Similarly, the :class:`_sql.CTE` class is also not
+ appropriate for execution. In 1.3, attempting to execute a CTE would result
+ in an invalid "blank" SQL statement being executed; since this use case was
+ not working it now raises :class:`_exc.ObjectNotExecutableError`.
+ Previously, 1.4 was attempting to execute the CTE as a statement however it
+ was working only erratically.
+
+ .. change::
+ :tags: bug, regression, orm
+ :tickets: 6206
+
+ Fixed critical regression where the :meth:`_orm.Query.yield_per` method in
+ the ORM would set up the internal :class:`_engine.Result` to yield chunks
+ at a time, however made use of the new :meth:`_engine.Result.unique` method
+ which uniques across the entire result. This would lead to lost rows since
+ the ORM is using ``id(obj)`` as the uniquing function, which leads to
+ repeated identifiers for new objects as already-seen objects are garbage
+ collected. 1.3's behavior here was to "unique" across each chunk, which
+ does not actually produce "uniqued" results when results are yielded in
+ chunks. As the :meth:`_orm.Query.yield_per` method is already explicitly
+ disallowed when joined eager loading is in place, which is the primary
+ rationale for the "uniquing" feature, the "uniquing" feature is now turned
+ off entirely when :meth:`_orm.Query.yield_per` is used.
+
+ This regression only applies to the legacy :class:`_orm.Query` object; when
+ using :term:`2.0 style` execution, "uniquing" is not automatically applied.
+ To prevent the issue from arising from explicit use of
+ :meth:`_engine.Result.unique`, an error is now raised if rows are fetched
+ from a "uniqued" ORM-level :class:`_engine.Result` if any
+ :ref:`yield per <orm_queryguide_yield_per>` API is also in use, as the
+ purpose of ``yield_per`` is to allow for arbitrarily large numbers of rows,
+ which cannot be uniqued in memory without growing the number of entries to
+ fit the complete result size.
+
+
+ .. change::
+ :tags: usecase, asyncio, postgresql
+ :tickets: 6199
+
+ Added accessors ``.sqlstate`` and synonym ``.pgcode`` to the ``.orig``
+ attribute of the SQLAlchemy exception class raised by the asyncpg DBAPI
+ adapter, that is, the intermediary exception object that wraps on top of
+ that raised by the asyncpg library itself, but below the level of the
+ SQLAlchemy dialect.
.. changelog::
:version: 1.4.5
diff --git a/doc/build/changelog/unreleased_14/6147.rst b/doc/build/changelog/unreleased_14/6147.rst
deleted file mode 100644
index 325ae0edc..000000000
--- a/doc/build/changelog/unreleased_14/6147.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-.. change::
- :tags: bug, mypy
- :tickets: 6147
-
- Applied a series of refactorings and fixes to accommodate for Mypy
- "incremental" mode across multiple files, which previously was not taken
- into account. In this mode the Mypy plugin has to accommodate Python
- datatypes expressed in other files coming in with less information than
- they have on a direct run.
-
- Additionally, a new decorator :func:`_orm.declarative_mixin` is added,
- which is necessary for the Mypy plugin to be able to definifitely identify
- a Declarative mixin class that is otherwise not used inside a particular
- Python file.
-
- .. seealso::
-
- :ref:`mypy_declarative_mixins`
-
diff --git a/doc/build/changelog/unreleased_14/6199.rst b/doc/build/changelog/unreleased_14/6199.rst
deleted file mode 100644
index 0c81637f8..000000000
--- a/doc/build/changelog/unreleased_14/6199.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-.. change::
- :tags: usecase, asyncio, postgresql
- :tickets: 6199
-
- Added accessors ``.sqlstate`` and synonym ``.pgcode`` to the ``.orig``
- attribute of the SQLAlchemy exception class raised by the asyncpg DBAPI
- adapter, that is, the intermediary exception object that wraps on top of
- that raised by the asyncpg library itself, but below the level of the
- SQLAlchemy dialect.
diff --git a/doc/build/changelog/unreleased_14/6202.rst b/doc/build/changelog/unreleased_14/6202.rst
deleted file mode 100644
index a925d93ce..000000000
--- a/doc/build/changelog/unreleased_14/6202.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-.. change::
- :tags: bug, sql, regression, oracle, mssql
- :tickets: 6202
-
- Fixed further regressions in the same area as that of :ticket:`6173` released in
- 1.4.5, where a "postcompile" parameter, again most typically those used for
- LIMIT/OFFSET rendering in Oracle and SQL Server, would fail to be processed
- correctly if the same parameter rendered in multiple places in the
- statement.
-
-
diff --git a/doc/build/changelog/unreleased_14/6203.rst b/doc/build/changelog/unreleased_14/6203.rst
deleted file mode 100644
index 39076f189..000000000
--- a/doc/build/changelog/unreleased_14/6203.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-.. change::
- :tags: bug, orm, regression
- :tickets: 6203
-
- Fixed regression where a deprecated form of :meth:`_orm.Query.join` were
- used, passing a series of entities to join from without any ON clause in a
- single :meth:`_orm.Query.join` call, would fail to function correctly.
diff --git a/doc/build/changelog/unreleased_14/6204.rst b/doc/build/changelog/unreleased_14/6204.rst
deleted file mode 100644
index b6c518cb9..000000000
--- a/doc/build/changelog/unreleased_14/6204.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-.. change::
- :tags: bug, sql
- :tickets: 6204
-
- Executing a :class:`_sql.Subquery` using :meth:`_engine.Connection.execute`
- is deprecated and will emit a deprecation warning; this use case was an
- oversight that should have been removed from 1.4. The operation will now
- execute the underlying :class:`_sql.Select` object directly for backwards
- compatibility. Similarly, the :class:`_sql.CTE` class is also not
- appropriate for execution. In 1.3, attempting to execute a CTE would result
- in an invalid "blank" SQL statement being executed; since this use case was
- not working it now raises :class:`_exc.ObjectNotExecutableError`.
- Previously, 1.4 was attempting to execute the CTE as a statement however it
- was working only erratically.
diff --git a/doc/build/changelog/unreleased_14/6205.rst b/doc/build/changelog/unreleased_14/6205.rst
deleted file mode 100644
index 8f79eb452..000000000
--- a/doc/build/changelog/unreleased_14/6205.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-.. change::
- :tags: bug, mypy
- :tickets: 6205
-
- Fixed issue where the Mypy plugin would fail to interpret the
- "collection_class" of a relationship if it were a callable and not a class.
- Also improved type matching and error reporting for collection-oriented
- relationships.
-
diff --git a/doc/build/changelog/unreleased_14/6206.rst b/doc/build/changelog/unreleased_14/6206.rst
deleted file mode 100644
index c2452e061..000000000
--- a/doc/build/changelog/unreleased_14/6206.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-.. change::
- :tags: bug, regression, orm
- :tickets: 6206
-
- Fixed critical regression where the :meth:`_orm.Query.yield_per` method in
- the ORM would set up the internal :class:`_engine.Result` to yield chunks
- at a time, however made use of the new :meth:`_engine.Result.unique` method
- which uniques across the entire result. This would lead to lost rows since
- the ORM is using ``id(obj)`` as the uniquing function, which leads to
- repeated identifiers for new objects as already-seen objects are garbage
- collected. 1.3's behavior here was to "unique" across each chunk, which
- does not actually produce "uniqued" results when results are yielded in
- chunks. As the :meth:`_orm.Query.yield_per` method is already explicitly
- disallowed when joined eager loading is in place, which is the primary
- rationale for the "uniquing" feature, the "uniquing" feature is now turned
- off entirely when :meth:`_orm.Query.yield_per` is used.
-
- This regression only applies to the legacy :class:`_orm.Query` object; when
- using :term:`2.0 style` execution, "uniquing" is not automatically applied.
- To prevent the issue from arising from explicit use of
- :meth:`_engine.Result.unique`, an error is now raised if rows are fetched
- from a "uniqued" ORM-level :class:`_engine.Result` if any
- :ref:`yield per <orm_queryguide_yield_per>` API is also in use, as the
- purpose of ``yield_per`` is to allow for arbitrarily large numbers of rows,
- which cannot be uniqued in memory without growing the number of entries to
- fit the complete result size.
-
diff --git a/doc/build/conf.py b/doc/build/conf.py
index 020f61d8b..846734fd4 100644
--- a/doc/build/conf.py
+++ b/doc/build/conf.py
@@ -195,9 +195,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.5"
+release = "1.4.6"
-release_date = "April 2, 2021"
+release_date = "April 6, 2021"
site_base = os.environ.get("RTD_SITE_BASE", "http://www.sqlalchemy.org")
site_adapter_template = "docs_adapter.mako"