1515 *
1616 *
1717 * IDENTIFICATION
18- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.172 2009/06/11 14:49:07 momjian Exp $
18+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.173 2009/07/21 21:46:10 tgl Exp $
1919 *
2020 *-------------------------------------------------------------------------
2121 */
@@ -895,7 +895,7 @@ EndRestoreBlobs(ArchiveHandle *AH)
895895 * Called by a format handler to initiate restoration of a blob
896896 */
897897void
898- StartRestoreBlob (ArchiveHandle * AH , Oid oid )
898+ StartRestoreBlob (ArchiveHandle * AH , Oid oid , bool drop )
899899{
900900 Oid loOid ;
901901
@@ -906,6 +906,10 @@ StartRestoreBlob(ArchiveHandle *AH, Oid oid)
906906
907907 ahlog (AH , 2 , "restoring large object with OID %u\n" , oid );
908908
909+ if (drop )
910+ ahprintf (AH , "SELECT CASE WHEN EXISTS(SELECT 1 FROM pg_catalog.pg_largeobject WHERE loid = '%u') THEN pg_catalog.lo_unlink('%u') END;\n" ,
911+ oid , oid );
912+
909913 if (AH -> connection )
910914 {
911915 loOid = lo_create (AH -> connection , oid );
@@ -919,7 +923,8 @@ StartRestoreBlob(ArchiveHandle *AH, Oid oid)
919923 }
920924 else
921925 {
922- ahprintf (AH , "SELECT lo_open(lo_create(%u), %d);\n" , oid , INV_WRITE );
926+ ahprintf (AH , "SELECT pg_catalog.lo_open(pg_catalog.lo_create('%u'), %d);\n" ,
927+ oid , INV_WRITE );
923928 }
924929
925930 AH -> writingBlob = 1 ;
@@ -943,7 +948,7 @@ EndRestoreBlob(ArchiveHandle *AH, Oid oid)
943948 }
944949 else
945950 {
946- ahprintf (AH , "SELECT lo_close(0);\n\n" );
951+ ahprintf (AH , "SELECT pg_catalog. lo_close(0);\n\n" );
947952 }
948953}
949954
@@ -1254,7 +1259,7 @@ dump_lo_buf(ArchiveHandle *AH)
12541259
12551260 /* Hack: turn off writingBlob so ahwrite doesn't recurse to here */
12561261 AH -> writingBlob = 0 ;
1257- ahprintf (AH , "SELECT lowrite(0, '%s');\n" , str );
1262+ ahprintf (AH , "SELECT pg_catalog. lowrite(0, '%s');\n" , str );
12581263 AH -> writingBlob = 1 ;
12591264
12601265 free (str );
0 commit comments