которой создано много вьюх, и при попытке изменить тип данных в каком то столбце данной таблицы или добавить новые столбцы запрос выполняется бесконечно долго. Если выполнить
SELECT activity.pid,
activity.usename,
activity.query,
blocking.pid AS blocking_id,
blocking.query AS blocking_query
FROM pg_stat_activity AS activity
JOIN pg_stat_activity AS blocking ON blocking.pid = ANY(pg_blocking_pids(activity.pid));
то видно, что эти самые вьюхи блочат добавление нового столбца. Подскажите пожалуйста как можно решить эту проблему без пересоздания всех вьюх?
По идее, никак. Вы на тестовой базе-то пробовали (по идее, в большинстве таких случае ALTER TABLE всё равно завершится с ошибкой)?
а не завершается, транзакция просто выполняется бесконечно долго, без ошибки
На тестовой базе (где никого больше нет), точно? А иначе это логично — обеспечить базовую корректность такой операции без блокировок нетривиально (да и не нужно, если оно всё равно не сработает). ;)
Обсуждают сегодня