Size: a a a

pgsql – PostgreSQL

2020 May 21

W

Warstone in pgsql – PostgreSQL
Ув. тов. мозг, подскажите, в Пг уже можно подтранзакции делать? Если нет, то кто как тестирует софт?
Хочу уметь поднимать Пг, залить туда схему, а потом в транзакции залить тестовые данные, прогнать тест и откатить. Желательно чтобы рядом еще 5-10 потоков могли делать то-же самое без запуска кучи кластеров / баз / схем и т.д.
источник

Ð

Ð in pgsql – PostgreSQL
в пг нет вложенных транзакций
источник

Ð

Ð in pgsql – PostgreSQL
управление иозляцией на уровне сессии
источник

W

Warstone in pgsql – PostgreSQL
мм... У меня код может вызвать BEGIN / COMMIT так что изоляция на уровне сессии не подойдет
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Warstone
Ув. тов. мозг, подскажите, в Пг уже можно подтранзакции делать? Если нет, то кто как тестирует софт?
Хочу уметь поднимать Пг, залить туда схему, а потом в транзакции залить тестовые данные, прогнать тест и откатить. Желательно чтобы рядом еще 5-10 потоков могли делать то-же самое без запуска кучи кластеров / баз / схем и т.д.
SAVEPOINT, однако.
источник

W

Warstone in pgsql – PostgreSQL
И опять-таки это внутри транзакции
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
И всё унутре DO какого-нибудь
источник

W

Warstone in pgsql – PostgreSQL
Не сработает, к сожалению.
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Warstone
Ув. тов. мозг, подскажите, в Пг уже можно подтранзакции делать? Если нет, то кто как тестирует софт?
Хочу уметь поднимать Пг, залить туда схему, а потом в транзакции залить тестовые данные, прогнать тест и откатить. Желательно чтобы рядом еще 5-10 потоков могли делать то-же самое без запуска кучи кластеров / баз / схем и т.д.
поясните, что значит подтранзакции?
источник

W

Warstone in pgsql – PostgreSQL
То есть только создавать кучу баз, как я понимаю...
источник

W

Warstone in pgsql – PostgreSQL
Кейс использования:
Есть порядка 100 тестов приложения. Каждый тест устанавливает свои тестовые данные в базу, потом запускает сервер, общается с ним, проверяя результаты в БД, после чего чистит за собой.
Каждый тест может быть запущен параллельно (зависит от того как запустили).
Сам сервер умеет работать с транзакциями (то есть вызывать BEGIN/COMMIT).

Что хотел: Создать 1 базу, после чего для каждого теста открывать транзакцию, в ней все делать, после чего транзакцию откатывать.
источник

W

Warstone in pgsql – PostgreSQL
Судя по всему сейчас мне придется для каждого теста поднимать свою базу, в ней что-то делать, после чего чиститься за собой. Причем, чтобы процесс чистки был 100% - придется базу тупо грохать после использования. А это время
источник

VY

Victor Yegorov in pgsql – PostgreSQL
если у вас на таблицах есть уникальные индексы и данные в тестах частично пересекаются для таких уникальных индексов,
вы не уйдёте от блокровок.
почему бы не делать отдельную схему в рамках общей базы под каждый тест?
источник

W

Warstone in pgsql – PostgreSQL
Тогда уже отдельную базу... Отдельные схемы мы используем для партицирования в продакшене (и да, надо тестировать это партицирование).
Создавать отдельную базу можно, но все это время опять-же.
источник

ДЛ

Дмитрий Лукьянов... in pgsql – PostgreSQL
Народ, подскажите. БД при запуске валит ошибки.

FATAL:  the database system is starting up

Никакой дополнительной инфы нет...
источник

W

Warstone in pgsql – PostgreSQL
Ну и... А кто как решает вопрос тестов софта который использует Пг?
источник

EA

Erlan A in pgsql – PostgreSQL
Дмитрий Лукьянов
Народ, подскажите. БД при запуске валит ошибки.

FATAL:  the database system is starting up

Никакой дополнительной инфы нет...
ждите
источник

DG

Denis Girko ☕️ in pgsql – PostgreSQL
Warstone
Ну и... А кто как решает вопрос тестов софта который использует Пг?
Базу в докере подняли-потестировали-опустили.
источник

W

Warstone in pgsql – PostgreSQL
Denis Girko ☕️
Базу в докере подняли-потестировали-опустили.
Вам времени не жалко?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Дмитрий Лукьянов
Народ, подскажите. БД при запуске валит ошибки.

FATAL:  the database system is starting up

Никакой дополнительной инфы нет...
база делает replay WAL-ов после аварийной остановки. или же она думает, что она реплика и должна накатить WAL-ы до точки консистентности
источник