1.4.13
Released: May 3, 2021
orm
-
[orm] [bug] [regression] Fixed regression in
selectinload
loader strategy that would cause it to
cache its internal state incorrectly when handling relationships that join
across more than one column, such as when using a composite foreign key.
The invalid caching would then cause other unrelated loader operations to
fail.References: #6410
-
[orm] [bug] [regression] Fixed regression where
_orm.Query.filter_by()
would not work if the
lead entity were a SQL function or other expression derived from the
primary entity in question, rather than a simple entity or column of that
entity. Additionally, improved the behavior of
_sql.Select.filter_by()
overall to work with column expressions even
in a non-ORM context.References: #6414
-
[orm] [bug] [regression] Fixed regression where using
_orm.selectinload()
and
_orm.subqueryload()
to load a two-level-deep path would lead to an
attribute error.References: #6419
-
[orm] [bug] [regression] Fixed regression where using the
_orm.noload()
loader strategy in
conjunction with a "dynamic" relationship would lead to an attribute error
as the noload strategy would attempt to apply itself to the dynamic loader.References: #6420
engine
-
[engine] [bug] [regression] Restored a legacy transactional behavior that was inadvertently removed
from the_engine.Connection
as it was never tested as a known use
case in previous versions, where calling upon the
_engine.Connection.begin_nested()
method, when no transaction is
present, does not create a SAVEPOINT at all and instead starts an outer
transaction, returning aRootTransaction
object instead of a
NestedTransaction
object. ThisRootTransaction
then
will emit a real COMMIT on the database connection when committed.
Previously, the 2.0 style behavior was present in all cases that would
autobegin a transaction but not commit it, which is a behavioral change.When using a :term:
2.0 style
connection object, the behavior is unchanged
from previous 1.4 versions; calling_future.Connection.begin_nested()
will "autobegin" the outer transaction if not already present, and then as
instructed emit a SAVEPOINT, returning theNestedTransaction
object. The outer transaction is committed by calling upon
_future.Connection.commit()
, as is "commit-as-you-go" style usage.Unknown interpreted text role "term".
In non-"future" mode, while the old behavior is restored, it also
emits a 2.0 deprecation warning as this is a legacy behavior.References: #6408
asyncio
-
[asyncio] [bug] [regression] Fixed a regression introduced by #6337 that would create an
asyncio.Lock
which could be attached to the wrong loop when
instantiating the async engine before any asyncio loop was started, leading
to an asyncio error message when attempting to use the engine under certain
circumstances.References: #6409
postgresql
-
[postgresql] [usecase] Add support for server side cursors in the pg8000 dialect for PostgreSQL.
This allows use of the
Connection.execution_options.stream_results
option.References: #6198