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 7c0fc99d8edf9f5846efefcd0565aa8ae75b33c6..4cd2a73c1917b983a5e7e589c995b00b69a1114a 100644 (file)
@@ -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'";