Le module pg_surgery fournit différentes fonctions pour
  réaliser des opérations sur une relation endommagée. Ces fonctions sont
  dangereuses de par leur concept et les utiliser pourrait corrompre
  (ou corrompre encore plus) votre base de données. Par exemple, ces
  fonctions peuvent facilement être utilisées pour rendre une table
  incohérente avec ses propres index, causant des violations de contraintes
  UNIQUE ou FOREIGN KEY, voire même de
  rendre des lignes visibles qui, lorsqu'elles sont lues, vont causer un
  crash du serveur de bases de données. Vous devez faire très attention en
  les utilisant. Leur utilisation doit rester pour les cas désespérés.
 
heap_force_kill(regclass, tid[]) returns void
    
      heap_force_kill marque les pointeurs de lignes
      « utilisées » comme « mortes » sans examiner les
      lignes. Le but de cette fonction est de forcer la suppression de lignes
      autrement inaccessibles. Par exemple :
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(regclass, tid[]) returns void
    
      heap_force_freeze marque les lignes comme gelées
      sans examiner les données des lignes. Le but de cette fonction est de
      rendre accessibles des lignes qui étaient auparavant inaccessibles à
      cause de la corruption des informations de visibilité, ou qui
      empêchaient la réussite d'un vacuum sur la table à cause de corruption
      sur les informations de visibilité. Par exemple :
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)
   Ashutosh Sharma <ashu.coek88@gmail.com>