Bases et fichiers de données
DBReduce
D’un dump de la taille de la production à un rapport de bogue joignable. Réduire une base PostgreSQL aux quelques lignes et tables qui reproduisent encore un test en échec.
- Version
- v0.5.1, 31 oct. 2026
- Fonctionne sur
- Python 3.10–3.15 ; PostgreSQL 13–18 avec pg_dump, pg_restore et psql de même version
- Licence
- Apache-2.0
Aperçu
dbreduce reduce \
--database postgresql://localhost/app_bug \
--oracle 'uv run pytest tests/test_checkout.py::test_negative_total' \
--match-stdout 'AssertionError: negative total' \
--confirm 3Wagtail #9208
Rows: 150,706 -> 3
Tables: 48 -> 1
Failure identity: preserved
Fresh SQL restore: PASSCe qu’il fait
Donnez à DBReduce une base PostgreSQL et une commande qui échoue à cause d’un bogue. Il retire des lignes en suivant les clés étrangères et les relations déclarées, et ne garde que les candidats qui reproduisent le même échec. Il peut aussi supprimer des tables entières. Le résultat est un petit fichier SQL reproduisant le bogue.
Pour qui
- Les développeurs qui cherchent un cas minimal pour un bogue dépendant des données.
- Les mainteneurs qui reçoivent des signalements ne se reproduisant que sur une base externe.
Limites
- L’oracle utilise une copie jetable, mais les fonctions SQL, déclencheurs et services externes peuvent toujours avoir des effets de bord. Utilisez des commandes et des dumps de confiance.
- Nécessite un rôle de base de données avec CREATEDB.
- DBReduce ne promet pas de minimum global ; les rapports précisent quand l’irréductibilité locale ne peut pas être affirmée.
Usages courants
Réduire un cas de test en échec
Indiquez une copie de la base et votre commande de test. Reconnaissez l’échec par sa sortie ou un verdict JSON pour ne pas compter une autre erreur.
Partager un cas reproductible
Produit dbreduce.min.sql et un rapport avec nombres de lignes et durées, sans la sortie brute du test.
Installer
Dernière version stable v0.5.1, publiée le 31 oct. 2026. Notes de version de v0.5.1. Données de version vérifiées le 2 nov. 2026 sur GitHub Releases.
Premier lancement
Installez la CLI comme outil autonome :
uv tool install dbreduce dbreduce --helpVérifiez que le test lit l’URL de base dans DATABASE_URL ou DBREDUCE_DATABASE_URL.
Lancez dbreduce reduce avec un critère identifiant le bogue, puis joignez dbreduce.min.sql au signalement.
Plateformes et manière dont elles ont été vérifiées
- PostgreSQL 13–18Compilé et validé par les contrôles automatiques de la CI
Isolation par instantané par défaut ; le moteur de clonage est expérimental et nécessite PostgreSQL 15+.
- Python 3.10–3.15Compilé et validé par les contrôles automatiques de la CI
Installé comme outil autonome ; votre application peut utiliser n’importe quel langage.
Documentation et assistance
- Documentation
- Code source
- Tickets et assistance
- Licence (Apache-2.0)
- Journal des modifications
- Toutes les versions
Les questions et rapports de bogue vont dans le gestionnaire de tickets du projet. Signalez les problèmes de sécurité comme indiqué dans sa politique de sécurité.