1.4.36
1.4.36
Released: April 26, 2022
orm
-
[orm] [bug] [regression] Fixed regression where the change made for #7861, released in
version 1.4.33, that brought theInsertconstruct to be partially
recognized as an ORM-enabled statement did not properly transfer the
correct mapper / mapped table state to theSession, causing the
Session.get_bind()method to fail for aSessionthat was
bound to engines and/or connections using theSession.binds
parameter.References: #7936
orm declarative
-
[orm] [declarative] [bug] Modified the
DeclarativeMetametaclass to passcls.__dict__
into the declarative scanning process to look for attributes, rather than
the separate dictionary passed to the type's__init__()method. This
allows user-defined base classes that add attributes within an
__init_subclass__()to work as expected, as__init_subclass__()can
only affect thecls.__dict__itself and not the other dictionary. This
is technically a regression from 1.3 where__dict__was being used.References: #7900
engine
-
[engine] [bug] Fixed a memory leak in the C extensions which could occur when calling upon
named members ofRowwhen the member does not exist under Python
3; in particular this could occur during NumPy transformations when it
attempts to call members such as.__array__, but the issue was
surrounding anyAttributeErrorthrown by theRowobject. This
issue does not apply to version 2.0 which has already transitioned to
Cython. Thanks much to Sebastian Berg for identifying the problem.References: #7875
-
[engine] [bug] Added a warning regarding a bug which exists in the
Result.columns()
method when passing 0 for the index in conjunction with aResult
that will return a single ORM entity, which indicates that the current
behavior ofResult.columns()is broken in this case as the
Resultobject will yield scalar values and notRow
objects. The issue will be fixed in 2.0, which would be a
backwards-incompatible change for code that relies on the current broken
behavior. Code which wants to receive a collection of scalar values should
use theResult.scalars()method, which will return a new
ScalarResultobject that yields non-row scalar objects.References: #7953
schema
-
[schema] [bug] Fixed bug where
ForeignKeyConstraintnaming conventions using the
referred_column_0naming convention key would not work if the foreign
key constraint were set up as aForeignKeyobject rather than an
explicitForeignKeyConstraintobject. As this change makes use of
a backport of some fixes from version 2.0, an additional little-known
feature that has likely been broken for many years is also fixed which is
that aForeignKeyobject may refer to a referred table by name of
the table alone without using a column name, if the name of the referent
column is the same as that of the referred column.The
referred_column_0naming convention key was previously not tested
with theForeignKeyobject, onlyForeignKeyConstraint,
and this bug reveals that the feature has never worked correctly unless
ForeignKeyConstraintis used for all FK constraints. This bug
traces back to the original introduction of the feature introduced for
#3989.References: #7958
asyncio
-
[asyncio] [bug] Repaired handling of
contextvar.ContextVarobjects inside of async
adapted event handlers. Previously, values applied to aContextVar
would not be propagated in the specific case of calling upon awaitables
inside of non-awaitable code.References: #7937
postgresql
-
[postgresql] [bug] Fixed bug in
ARRAYdatatype in combination withEnumon
PostgreSQL where using the.any()or.all()methods to render SQL
ANY() or ALL(), given members of the Python enumeration as arguments, would
produce a type adaptation failure on all drivers.References: #6515
-
[postgresql] [bug] Implemented
_postgresql.UUID.python_typeattribute for the
PostgreSQL_postgresql.UUIDtype object. The attribute will return
eitherstroruuid.UUIDbased on the
_postgresql.UUID.as_uuidparameter setting. Previously, this
attribute was unimplemented. Pull request courtesy Alex Grönholm.References: #7943
-
[postgresql] [bug] Fixed an issue in the psycopg2 dialect when using the
create_engine.pool_pre_pingparameter which would cause
user-configuredAUTOCOMMITisolation level to be inadvertently reset by
the "ping" handler.References: #7930
mysql
-
[mysql] [bug] [regression] Fixed a regression in the untested MySQL PyODBC dialect caused by the fix
for #7518 in version 1.4.32 where an argument was being propagated
incorrectly upon first connect, leading to aTypeError.References: #7871
tests
-
[tests] [bug] For third party dialects, repaired a missing requirement for the
SimpleUpdateDeleteTestsuite test which was not checking for a working
"rowcount" function on the target dialect.References: #7919