-
fix: A31 — transaction par migration + helper columns() (v7.6.0)
released this
2026-10-01 10:13:23 -04:00 | 114 commits to main since this release_apply_one(): BEGIN explicite →fn(conn)→ marqueschema_version→
commit ; rollback complet à l'échec. Avant le DDL sortait en autocommit
(isolation_level legacy) : un échec au milieu laissait un schéma partiel
commité SANS ligne de version, et la reprise rejouait un DDL déjà appliqué.
Si une transaction englobante subsiste (init_db commit juste avant), on la
vide d'abord plutôt que de l'englober.-
- Helper unique
columns(conn, table)(valide l'identifiant, ValueError sinon) - 25 copies de
{r[1] for r in conn.execute("PRAGMA table_info(...)")}
éliminées dans migrations.py (21 littéraux + 3 f-string + 1 variante row).
table_exists/column_existspréconisés par l'audit NON livrés : aucune
migration n'interroge sqlite_master, un contrôle unitaire se lit dans le set.
- Helper unique
- Smoke : DB fraîche → 28 migrations → version 29, ré-apply idempotent.
tests : test_migration_transaction_rolls_back (DDL partiel annulé + zéro marque
de version), test_columns_helper_validates_table_namesuite 1036/1036 ·
ruff check app testsOK · OpenAPI 511 chemins / 7.6.0
docs (ROADMAP/CHANGELOG/WORKLOAD/VERSION) à jourDownloads