Bases y archivos de datos
DBReduce
De un volcado del tamaño de producción a un informe de error adjuntable. Reduce una base de datos PostgreSQL a las pocas filas y tablas que todavía reproducen una prueba fallida.
- Versión
- v0.5.1, 31 oct 2026
- Funciona en
- Python 3.10–3.15; PostgreSQL 13–18 con pg_dump, pg_restore y psql de la misma versión
- Licencia
- Apache-2.0
Cómo se ve
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: PASSQué hace
Proporciona a DBReduce una base PostgreSQL y un comando que falle por un defecto. Elimina filas siguiendo las claves foráneas y las relaciones que declares, y conserva solo los candidatos con el mismo fallo. También puede eliminar tablas completas. El resultado es un archivo SQL pequeño que reproduce el defecto.
Para quién es
- Desarrolladores que necesitan un caso mínimo para un fallo dependiente de los datos.
- Mantenedores que reciben informes de errores que solo ocurren en una base ajena.
Limitaciones
- El oráculo usa una copia desechable, pero las funciones SQL, los disparadores y los servicios externos aún pueden tener efectos secundarios. Usa comandos y volcados de confianza.
- Necesita un rol de base de datos con CREATEDB.
- DBReduce no promete un mínimo global; los informes indican cuándo no puede afirmarse la irreducibilidad local.
Usos habituales
Reducir un caso de prueba fallido
Indica una copia de la base y el comando de prueba. Reconoce el fallo por su salida o por un veredicto JSON para no aceptar otro error distinto.
Compartir un caso reproducible
Produce dbreduce.min.sql y un informe con números de filas y tiempos, sin la salida original de la prueba.
Instalar
Última versión estable v0.5.1, publicada el 31 oct 2026. Notas de la versión de v0.5.1. Datos de versiones consultados el 2 nov 2026 en GitHub Releases.
Primer uso
Instala la CLI como herramienta independiente:
uv tool install dbreduce dbreduce --helpComprueba que la prueba lea la URL de la base de DATABASE_URL o DBREDUCE_DATABASE_URL.
Ejecuta dbreduce reduce con una condición que identifique el error y adjunta dbreduce.min.sql al informe del fallo.
Plataformas y cómo se comprobaron
- PostgreSQL 13–18Se compila y supera las comprobaciones automáticas de CI
Aislamiento mediante instantáneas por defecto; el backend de clonación es experimental y requiere PostgreSQL 15+.
- Python 3.10–3.15Se compila y supera las comprobaciones automáticas de CI
Se instala como herramienta independiente; tu aplicación puede usar cualquier lenguaje.
Documentación y soporte
- Documentación
- Código fuente
- Incidencias y soporte
- Licencia (Apache-2.0)
- Registro de cambios
- Todas las versiones
Las preguntas y los informes de errores van al gestor de incidencias del proyecto. Informa de problemas de seguridad como se describe en su política de seguridad.