Alvaro Herrera <alvherre@commandprompt.com> writes:
> Anton Egorov escribi�:
>> I need to recover deleted rows from table. After I delete those rows I
>> stopped postgres immediately and create tar archive of database. I found
>> solution http://archives.postgresql.org/pgsql-hackers/2005-03/msg00965.php,
>> but is there another (easyer) way to do it?
> I guess you could figure out the Xid of the transaction that deleted the
> tuples, and mark it as aborted in pg_clog; you'd also need to reset the
> hint bits on the tuples themselves. Not necessarily any easier than the
> above, but at least you don't have to patch Postgres code.
The solution recommended in that message doesn't work anyway --- it will
consider *all* tuples visible, even ones you don't want. Reversing a
single transaction, or small number of transactions, as Alvaro suggests
is much less likely to create a huge mess.
regards, tom lane