]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Improve pg_dump's query for retrieving BLOB comments to be more efficient
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 1 Apr 2009 18:54:33 +0000 (18:54 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 1 Apr 2009 18:54:33 +0000 (18:54 +0000)
when there are many blobs and not so many comments.  Tamas Vincze

src/bin/pg_dump/pg_dump.c

index a0eb8b41cd6901bc3abb2ddb76d3a08355a3e2aa..14e1aec52e5943e547d62789f0a6bb1f6ff165eb 100644 (file)
@@ -12,7 +12,7 @@
  *     by PostgreSQL
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.482.2.1 2009/01/18 20:44:53 tgl Exp $
+ *       $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.482.2.2 2009/04/01 18:54:33 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1758,7 +1758,13 @@ dumpBlobComments(Archive *AH, void *arg)
        selectSourceSchema("pg_catalog");
 
        /* Cursor to get all BLOB comments */
-       if (AH->remoteVersion >= 70200)
+       if (AH->remoteVersion >= 70300)
+               blobQry = "DECLARE blobcmt CURSOR FOR SELECT loid, "
+                                 "obj_description(loid, 'pg_largeobject') "
+                                 "FROM (SELECT DISTINCT loid FROM "
+                                 "pg_description d JOIN pg_largeobject l ON (objoid = loid) "
+                                 "WHERE classoid = 'pg_largeobject'::regclass) ss";
+       else if (AH->remoteVersion >= 70200)
                blobQry = "DECLARE blobcmt CURSOR FOR SELECT loid, obj_description(loid, 'pg_largeobject') FROM (SELECT DISTINCT loid FROM pg_largeobject) ss";
        else if (AH->remoteVersion >= 70100)
                blobQry = "DECLARE blobcmt CURSOR FOR SELECT loid, obj_description(loid) FROM (SELECT DISTINCT loid FROM pg_largeobject) ss";