2.0.38
2.0.38
Released: February 6, 2025
engine
-
[engine] [bug] Fixed event-related issue where invoking
Engine.execution_options()
on aEngine
multiple times while making use of event-registering
parameters such asisolation_level
would lead to internal errors
involving event registration.References: #12289
sql
-
[sql] [bug] Reorganized the internals by which the
.c
collection on a
FromClause
gets generated so that it is resilient against the
collection being accessed in concurrent fashion. An example is creating a
Alias
orSubquery
and accessing it as a module level
variable. This impacts the Oracle dialect which uses such module-level
global alias objects but is of general use as well.References: #12302
-
[sql] [bug] Fixed SQL composition bug which impacted caching where using a
None
value inside of anin_()
expression would bypass the usual "expanded
bind parameter" logic used by the IN construct, which allows proper caching
to take place.References: #12314
postgresql
-
[postgresql] [usecase] [asyncio] Added an additional
asyncio.shield()
call within the connection
terminate process of the asyncpg driver, to mitigate an issue where
terminate would be prevented from completing under the anyio concurrency
library.References: #12077
-
[postgresql] [bug] Adjusted the asyncpg connection wrapper so that the
connection.transaction()
call sent to asyncpg sendsNone
for
isolation_level
if not otherwise set in the SQLAlchemy dialect/wrapper,
thereby allowing asyncpg to make use of the server level setting for
isolation_level
in the absense of a client-level setting. Previously,
this behavior of asyncpg was blocked by a hardcodedread_committed
.References: #12159
mariadb
-
[mariadb] [bug] [dml] [mysql] Fixed a bug where the MySQL statement compiler would not properly compile
statements where_mysql.Insert.on_duplicate_key_update()
was passed
values that included ORM-mapped attributes (e.g.
InstrumentedAttribute
objects) as keys. Pull request courtesy of
mingyu.References: #12117
sqlite
-
[sqlite] [bug] [aiosqlite] [asyncio] [pool] Changed default connection pool used by the
aiosqlite
dialect
fromNullPool
toAsyncAdaptedQueuePool
; this change
should have been made when 2.0 was first released as thepysqlite
dialect was similarly changed to useQueuePool
as detailed
inchange_7490
.References: #12285