]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Repair remarkably-inefficient query for dumping large object comments: it
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 9 Jun 2006 19:46:17 +0000 (19:46 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 9 Jun 2006 19:46:17 +0000 (19:46 +0000)
was invoking obj_description() for each large object chunk, instead of once
per large object.  This code is new as of 8.1, which may explain why the
problem hadn't been noticed already.

src/bin/pg_dump/pg_dump.c

index 8297fdaac6472de336adda8bb48fd09a54ce679d..9d371fa1c6b185a088b0915748dc98ea271605a3 100644 (file)
@@ -12,7 +12,7 @@
  *     by PostgreSQL
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.422.2.3 2006/02/21 18:01:41 tgl Exp $
+ *       $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.422.2.4 2006/06/09 19:46:17 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1480,9 +1480,9 @@ dumpBlobComments(Archive *AH, void *arg)
 
        /* Cursor to get all BLOB comments */
        if (AH->remoteVersion >= 70200)
-               blobQry = "DECLARE blobcmt CURSOR FOR SELECT DISTINCT loid, obj_description(loid, 'pg_largeobject') FROM pg_largeobject";
+               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 DISTINCT loid, obj_description(loid) FROM pg_largeobject";
+               blobQry = "DECLARE blobcmt CURSOR FOR SELECT loid, obj_description(loid) FROM (SELECT DISTINCT loid FROM pg_largeobject) ss";
        else
                blobQry = "DECLARE blobcmt CURSOR FOR SELECT oid, (SELECT description FROM pg_description pd WHERE pd.objoid=pc.oid) FROM pg_class pc WHERE relkind = 'l'";