1.4.2
Released: March 19, 2021
orm
-
[orm] [usecase] [dataclasses] Added support for the
_orm.declared_attr
object to work in the
context of dataclass fields.References: #6100
-
[orm] [bug] [dataclasses] Fixed issue in new ORM dataclasses functionality where dataclass fields on
an abstract base or mixin that contained column or other mapping constructs
would not be mapped if they also included a "default" key within the
dataclasses.field() object.References: #6093
-
[orm] [bug] [regression] Fixed regression where the
_orm.Query.selectable
accessor, which is
a synonym for_orm.Query.__clause_element__()
, got removed, it's now
restored.References: #6088
-
[orm] [bug] [regression] Fixed regression where use of an unnamed SQL expression such as a SQL
function would raise a column targeting error if the query itself were
using joinedload for an entity and was also being wrapped in a subquery by
the joinedload eager loading process.References: #6086
-
[orm] [bug] [regression] Fixed regression where the
_orm.Query.filter_by()
method would fail
to locate the correct source entity if the_orm.Query.join()
method
had been used targeting an entity without any kind of ON clause.References: #6092
-
[orm] [bug] [regression] Fixed regression where the SQL compilation of a
Function
would
not work correctly if the object had been "annotated", which is an internal
memoization process used mostly by the ORM. In particular it could affect
ORM lazy loads which make greater use of this feature in 1.4.References: #6095
-
[orm] [bug] Fixed regression where the
ConcreteBase
would fail to map at all
when a mapped column name overlapped with the discriminator column name,
producing an assertion error. The use case here did not function correctly
in 1.3 as the polymorphic union would produce a query that ignored the
discriminator column entirely, while emitting duplicate column warnings. As
1.4's architecture cannot easily reproduce this essentially broken behavior
of 1.3 at theselect()
level right now, the use case now raises an
informative error message instructing the user to use the
.ConcreteBase._concrete_discriminator_name
attribute to resolve the
conflict. To assist with this configuration,
.ConcreteBase._concrete_discriminator_name
may be placed on the base
class only where it will be automatically used by subclasses; previously
this was not the case.References: #6090
engine
- [engine] [bug] [regression] Restored top level import for
sqlalchemy.engine.reflection
. This
ensures that the base_reflection.Inspector
class is properly
registered so that_sa.inspect()
works for third party dialects that
don't otherwise import this package.
sql
-
[sql] [bug] [regression] Fixed issue where using a
func
that includes dotted packagenames would
fail to be cacheable by the SQL caching system due to a Python list of
names that needed to be a tuple.References: #6101
-
[sql] [bug] [regression] Fixed regression in the
_sql.case()
construct, where the "dictionary"
form of argument specification failed to work correctly if it were passed
positionally, rather than as a "whens" keyword argument.References: #6097
mypy
-
[mypy] [bug] Fixed issue in MyPy extension which crashed on detecting the type of a
Column
if the type were given with a module prefix like
sa.Integer()
.References: #sqlalchemy/sqlalchemy2-stubs/2
postgresql
-
[postgresql] [usecase] Rename the column name used by a reflection query that used
a reserved word in some postgresql compatible databases.References: #6982