|
8 | 8 | - Fixed transaction decorator (`Transaction.__call__`) silently discarding the decorated function's return value. `await func(...)` is now `return await func(...)`. |
9 | 9 | - 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. |
10 | 10 | - 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`. |
11 | 21 |
|
12 | 22 | ### Changed |
13 | 23 |
|
|
17 | 27 | - Tightened type annotations: `column: Any` → `column: int | str`, `template: Any` → `template: str | None`. |
18 | 28 | - Removed duplicated exception handling block in `AsyncWrapper.__getattribute__` (second block was unreachable dead code). |
19 | 29 | - 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. |
20 | 34 |
|
21 | 35 | ## 0.11.5 |
22 | 36 |
|
|
0 commit comments