pg_surgery. Операции над потенциально поврежденными данными#
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext.
Предоставляет инструменты для выполнения корректирующих действий над потенциально поврежденными данными.
Функции#
Функции предоставляемые расширением:
heap_force_kill(regclass, tid[]) return void- отмечает «использованные» указатели строк как «мертвые», не проверяя данные строк. Предполагаемое использование этой функции - принудительное удаление строк, которые иначе недоступны.heap_force_freeze(regclass, tid[]) return void- отмечает строки как замороженные, не проверяя данные строк. Предполагаемое использование этой функции - сделать доступными строки, которые иначе были бы недоступны из-за поврежденной информации о видимости, или которые препятствуют успешной очистке таблицы из-за поврежденной информации о видимости.
Доработка#
Доработка не проводилась.
Ограничения#
Ограничения отсутствуют.
Установка#
Для начала использования расширения необходимо выполнить команду активации расширения:
postgres=# CREATE EXTENSION pg_surgery;
CREATE EXTENSION
Проверьте, что расширение установлено:
postgres=# \dx pg_surgery
List of installed extensions
Name | Version | Schema | Description
------------+---------+--------+----------------------------------------------------
pg_surgery | 1.0 | public | extension to perform surgery on a damaged relation
(1 row)
Настройка#
Не требуется.
Использование модуля#
Далее приведены примеры использования функций предоставляемых модулем:
Пример использования функции
heap_force_kill:test=> select * from t1 where ctid = '(0, 1)'; ERROR: could not access status of transaction 4007513275 DETAIL: Could not open file "pg_xact/0EED": No such file or directory. test=# select heap_force_kill('t1'::regclass, ARRAY['(0, 1)']::tid[]); heap_force_kill ----------------- (1 row) test=# select * from t1 where ctid = '(0, 1)'; (0 rows)Пример использования функции
heap_force_freeze:test=> vacuum t1; ERROR: found xmin 507 from before relfrozenxid 515 CONTEXT: while scanning block 0 of relation "public.t1" test=# select ctid from t1 where xmin = 507; ctid ------- (0,3) (1 row) test=# select heap_force_freeze('t1'::regclass, ARRAY['(0, 3)']::tid[]); heap_force_freeze ------------------- (1 row) test=# select ctid from t1 where xmin = 2; ctid ------- (0,3) (1 row)
Ссылки на документацию разработчика#
Дополнительно поставляемый модуль pg_surgery.