1.3.17
Released: May 13, 2020
orm
-
[orm] [bug] Fixed bug where using
with_polymorphic()
as the target of a join via
RelationshipComparator.of_type()
on a mapper that already has a
subquery-based with_polymorphic setting that's equivalent to the one
requested would not correctly alias the ON clause in the join.References: #5288
-
[orm] [bug] Fixed issue in the area of where loader options such as selectinload()
interact with the baked query system, such that the caching of a query is
not supposed to occur if the loader options themselves have elements such
as with_polymorphic() objects in them that currently are not
cache-compatible. The baked loader could sometimes not fully invalidate
itself in these some of these scenarios leading to missed eager loads.References: #5303
-
[orm] [bug] Modified the internal "identity set" implementation, which is a set that
hashes objects on their id() rather than their hash values, to not actually
call the__hash__()
method of the objects, which are typically
user-mapped objects. Some methods were calling this method as a side
effect of the implementation.References: #5304
-
[orm] [bug] An informative error message is raised when an ORM many-to-one comparison
is attempted against an object that is not an actual mapped instance.
Comparisons such as those to scalar subqueries aren't supported;
generalized comparison with subqueries is better achieved using
~.RelationshipProperty.Comparator.has()
.References: #5269
-
[orm] [usecase] Added an accessor
ColumnProperty.Comparator.expressions
which
provides access to the group of columns mapped under a multi-column
ColumnProperty
attribute.References: #5262
-
[orm] [usecase] Introduce
_orm.relationship.sync_backref
flag in a relationship
to control if the synchronization events that mutate the in-Python
attributes are added. This supersedes the previous change #5149,
which warned thatviewonly=True
relationship target of a
back_populates or backref configuration would be disallowed.References: #5237
engine
-
[engine] [bug] Fixed fairly critical issue where the DBAPI connection could be returned to
the connection pool while still in an un-rolled-back state. The reset agent
responsible for rolling back the connection could be corrupted in the case
that the transaction was "closed" without being rolled back or committed,
which can occur in some scenarios when using ORM sessions and emitting
.close() in a certain pattern involving savepoints. The fix ensures that
the reset agent is always active.References: #5326
schema
-
[schema] Add
comment
attribute to_schema.Column
__repr__
method.References: #4138
-
[schema] [bug] Fixed issue where an
Index
that is deferred in being associated
with a table, such as as when it contains aColumn
that is not
associated with anyTable
yet, would fail to attach correctly if
it also contained a non table-oriented expession.References: #5298
-
[schema] [bug] A warning is emitted when making use of the
MetaData.sorted_tables
attribute as well as the_schema.sort_tables()
function, and the
given tables cannot be correctly sorted due to a cyclic dependency between
foreign key constraints. In this case, the functions will no longer sort
the involved tables by foreign key, and a warning will be emitted. Other
tables that are not part of the cycle will still be returned in dependency
order. Previously, the sorted_table routines would return a collection that
would unconditionally omit all foreign keys when a cycle was detected, and
no warning was emitted.References: #5316
postgresql
-
[postgresql] [usecase] Added support for columns or type
ARRAY
ofEnum
,
JSON
or_postgresql.JSONB
in PostgreSQL.
Previously a workaround was required in these use cases.References: #5265
-
[postgresql] [usecase] Raise an explicit
exc.CompileError
when adding a table with a
column of typeARRAY
ofEnum
configured with
Enum.native_enum
set toFalse
when
Enum.create_constraint
is not set toFalse
References: #5266
mssql
-
[mssql] [bug] [reflection] Fix a regression introduced by the reflection of computed column in
MSSQL when using the legacy TDS version 4.2. The dialect will try
to detect the protocol version of first connect and run in compatibility
mode if it cannot detect it.References: #5255
-
[mssql] [bug] [reflection] Fix a regression introduced by the reflection of computed column in
MSSQL when using SQL server versions before 2012, which does not support
theconcat
function.References: #5271
oracle
-
[oracle] [bug] Some modifications to how the cx_oracle dialect sets up per-column
outputtype handlers for LOB and numeric datatypes to adjust for potential
changes coming in cx_Oracle 8.References: #5246
-
[oracle] [bug] [performance] Changed the implementation of fetching CLOB and BLOB objects to use
cx_Oracle's native implementation which fetches CLOB/BLOB objects inline
with other result columns, rather than performing a separate fetch. As
always, this can be disabled by setting auto_convert_lobs to False.As part of this change, the behavior of a CLOB that was given a blank
string on INSERT now returns None on SELECT, which is now consistent with
that of VARCHAR on Oracle.References: #5314
firebird
-
[firebird] [change] Adjusted dialect loading for
firebird://
URIs so the external
sqlalchemy-firebird dialect will be used if it has been installed,
otherwise fall back to the (now deprecated) internal Firebird dialect.References: #5278