Базы и файлы данных
DBReduce
От дампа рабочей базы к отчёту об ошибке, который можно приложить. Сократить базу PostgreSQL до нескольких строк и таблиц, на которых тест по-прежнему падает.
- Релиз
- v0.5.1, 31 окт. 2026 г.
- Где работает
- Python 3.10–3.15; PostgreSQL 13–18 с подходящими pg_dump, pg_restore и psql
- Лицензия
- Apache-2.0
Как это выглядит
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: PASSЧто делает
Укажите DBReduce базу PostgreSQL и команду, которая завершается с ошибкой из-за дефекта. Программа удаляет строки с учётом внешних ключей и заданных вами связей, сохраняя только варианты с той же ошибкой. При необходимости она удаляет и целые таблицы. Результат — небольшой SQL-файл, воспроизводящий дефект.
Для кого
- Разработчикам, которым нужен минимальный пример ошибки, зависящей от данных.
- Сопровождающим проекты, которым сообщают об ошибках, возникающих только на чужой базе.
Ограничения
- Проверяющая команда работает с временной копией, но SQL-функции, триггеры и внешние сервисы всё ещё могут иметь побочные эффекты. Используйте доверенные команды и дампы.
- Нужна роль базы данных с CREATEDB.
- DBReduce не обещает глобальный минимум; отчёт сообщает, когда нельзя утверждать локальную несократимость.
Типичные сценарии
Уменьшить пример с ошибкой
Укажите копию базы и тестовую команду. Опознавайте нужную ошибку по выводу или результату JSON, чтобы посторонний сбой не засчитался.
Передать пример для воспроизведения
На выходе получаются dbreduce.min.sql и отчёт с количеством строк и временем выполнения, без исходного вывода теста.
Установка
Последний стабильный релиз v0.5.1, опубликован 31 окт. 2026 г.. Примечания к релизу для v0.5.1. Данные о релизах проверены 2 нояб. 2026 г. по GitHub Releases.
Первый запуск
Установите консольную программу отдельно:
uv tool install dbreduce dbreduce --helpУбедитесь, что тест получает URL базы из DATABASE_URL или DBREDUCE_DATABASE_URL.
Запустите dbreduce reduce с условием, опознающим нужную ошибку, и приложите dbreduce.min.sql к сообщению об ошибке.
Платформы и как они проверены
- PostgreSQL 13–18Собирается и проходит автоматические проверки в CI
По умолчанию используется изоляция снимком; экспериментальный режим клонирования требует PostgreSQL 15+.
- Python 3.10–3.15Собирается и проходит автоматические проверки в CI
Устанавливается как отдельная программа; приложение может быть написано на любом языке.
Документация и поддержка
Вопросы и сообщения об ошибках — в трекер задач проекта. О проблемах безопасности сообщайте так, как описано в его политике безопасности.