:tags: postgresql, usecase, asyncio
:tickets: 12077
- Added an additional ``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.
+ 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.
:tags: bug, dml, mariadb, mysql
:tickets: 12117
- Fixed a bug where the :class:`MySQLCompiler` would not properly compile statements
- where :meth:`_mysql.Insert.on_duplicate_key_update` was passed values that included
- :class:`InstrumentedAttribute` as keys.
- Pull request courtesy of mingyu.
+ Fixed a bug where the MySQL statement compiler would not properly compile
+ statements where :meth:`_mysql.Insert.on_duplicate_key_update` was passed
+ values that included ORM-mapped attributes (e.g.
+ :class:`InstrumentedAttribute` objects) as keys. Pull request courtesy of
+ mingyu.
:tags: bug, postgresql
:tickets: 12159
- Adjusted the asyncpg connection wrapper so that the asyncpg
- ``.transaction()`` call sends ``None`` 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
- hardcoded ``read_committed``.
+ Adjusted the asyncpg connection wrapper so that the
+ ``connection.transaction()`` call sent to asyncpg sends ``None`` 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 hardcoded ``read_committed``.
.. change::
- :tags: change, sqlite, aiosqlite, asyncio, pool
+ :tags: bug, sqlite, aiosqlite, asyncio, pool
:tickets: 12285
- Changed default connection pool of aiosqlite from NullPool to AsyncAdaptedQueuePool for consistency with pysqlite.
+ Changed default connection pool used by the ``aiosqlite`` dialect
+ from :class:`.NullPool` to :class:`.AsyncAdaptedQueuePool`; this change
+ should have been made when 2.0 was first released as the ``pysqlite``
+ dialect was similarly changed to use :class:`.QueuePool` as detailed
+ in :ref:`change_7490`.
:tags: bug, engine
:tickets: 12289
- Fixed issue where creating an :class:`.Engine` using multiple calls to
- :meth:`.Engine.execution_options` where a subsequent call involved certain
- options such as ``isolation_level`` would lead to an internal error
+ Fixed event-related issue where invoking :meth:`.Engine.execution_options`
+ on a :class:`.Engine` multiple times while making use of event-registering
+ parameters such as ``isolation_level`` would lead to internal errors
involving event registration.
:tags: bug, sql
:tickets: 12302
- Reorganized the internals by which the `.c` collection on a
+ Reorganized the internals by which the ``.c`` collection on a
:class:`.FromClause` gets generated so that it is resilient against the
collection being accessed in concurrent fashion. An example is creating a
:class:`.Alias` or :class:`.Subquery` and accessing it as a module level
:tags: bug, sql
:tickets: 12314
- Fixed SQL rendering bug which impacted caching where using a ``None`` value
- inside of an ``in_()`` expression would bypass the usual "expanded bind
- parameter" logic used by the IN construct, which allows proper caching to
- take place.
+ Fixed SQL composition bug which impacted caching where using a ``None``
+ value inside of an ``in_()`` expression would bypass the usual "expanded
+ bind parameter" logic used by the IN construct, which allows proper caching
+ to take place.
measurable negative performance impact. As always, the pool class is
customizable via the :paramref:`_sa.create_engine.poolclass` parameter.
+.. versionchanged:: 2.0.37 - an equivalent change is also made for the
+ ``aiosqlite`` dialect, using :class:`._pool.AsyncAdaptedQueuePool` instead
+ of :class:`._pool.NullPool`. The ``aiosqlite`` dialect was not included
+ in the initial change in error.
+
.. seealso::
:ref:`pysqlite_threading_pooling`