Skip to content

Commit aef2f6e

Browse files
committed
Release 0.12.0
1 parent a9f6d82 commit aef2f6e

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

docs/release-notes.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@
88
- Fixed transaction decorator (`Transaction.__call__`) silently discarding the decorated function's return value. `await func(...)` is now `return await func(...)`.
99
- Fixed force-disconnect cleanup in `Database.disconnect()` being unreachable dead code. An `assert not self._databases_map` inside an `if self._databases_map:` block always fired before the sub-database cleanup loop could execute.
1010
- Fixed `Database._connection` property setter returning a value (silently discarded by Python) and having an incorrect `-> Connection | None` return annotation. Setters are now correctly `-> None`.
11+
- Fixed refcount underflow in `Database.disconnect()` when disconnecting without a prior successful connect, and normalized force-disconnect behavior to reset refcount safely.
12+
- Fixed transaction lifecycle edge cases where double commit / rollback could underflow connection counters.
13+
- Fixed out-of-order transaction finalization to raise explicit runtime errors instead of silently continuing.
14+
- Fixed transaction finalization to still clean up connection state when backend commit/rollback raises.
15+
- Fixed `SQLAlchemyTransaction` cleanup paths to always clear backend transaction state and restore previous isolation level on failure paths.
16+
- Fixed cancellation safety in cross-loop forwarding (`arun_coroutine_threadsafe`) so cancelled callers also cancel the submitted future.
17+
- Fixed SQL construction in `dbapi2` and `jdbc` dialect `has_table()` probes to avoid malformed identifier quoting.
18+
- Fixed JDBC reflection index sort-order mapping (`get_indexes`) using the wrong list element for `column_sorting`.
19+
- Fixed PostgreSQL overwrite driver auto-upgrade typo (`"pscopg2"` -> `"psycopg2"`), restoring expected async driver upgrade behavior.
20+
- Fixed ASGI lifespan failure messages to use `message` (ASGI-compatible key) instead of `msg`.
1121

1222
### Changed
1323

@@ -17,6 +27,10 @@
1727
- Tightened type annotations: `column: Any``column: int | str`, `template: Any``template: str | None`.
1828
- Removed duplicated exception handling block in `AsyncWrapper.__getattribute__` (second block was unreachable dead code).
1929
- Simplified `else: raise exc` anti-patterns to bare `raise` in `utils.py`.
30+
- `DatabaseTestClient.setup_protected()` now surfaces timeout errors instead of silently suppressing them.
31+
- Hardened test-database DDL generation by validating charset/encoding names before interpolation.
32+
- PostgreSQL test-database termination query now binds database name as a parameter instead of interpolating into SQL text.
33+
- Added focused regression coverage for disconnect/refcount handling, transaction finalization safety, cancellation behavior, SQL quoting paths, and overwrite driver upgrades.
2034

2135
## 0.11.5
2236

0 commit comments

Comments
 (0)