Hi, Since pg_restore --clean doesn't delete existing large objects, restoring to an existing database with "pg_restore --clean -1" would fail if backup archive contains large objects. Some DBAs complain to the behavior because they expect all existing data conflicting with backup archive will be deleted automatically.
I'd like to improve the behavior if it is not intentional. The attached is a patch to execute lo_unlink() before lo_create() in pg_restore. To avoid transaction rollbacks, I added a test whether the large object exists with an EXISTS query. SELECT CASE WHEN EXISTS (SELECT 1 FROM pg_catalog.pg_largeobject WHERE loid = %u) THEN lo_unlink(%u) END; Comments welcome. Regards, --- ITAGAKI Takahiro NTT Open Source Software Center
pg_restore_clean_lo.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers