Un-break compression of plain-text output format in pg_dump.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 25 Sep 2011 17:59:17 +0000 (13:59 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 25 Sep 2011 17:59:17 +0000 (13:59 -0400)
pg_dump has historically understood -Z with no -F switch to mean that
it should emit a gzip-compressed version of its plain text output.
This got broken through a misunderstanding in the 9.1 patch that added
directory output format.  Restore the former behavior.

Per complaint from Roger Niederland and diagnosis by Adrian Klaver.

src/bin/pg_dump/pg_dump.c

index 56db6e54c143b00def57b0892331f9124f9cdd69..b4ab19d5e050ff624d78151ad8d94561dd92843d 100644 (file)
@@ -528,20 +528,14 @@ main(int argc, char **argv)
                exit(1);
        }
 
+       /* Identify archive format to emit */
        archiveFormat = parseArchiveFormat(format, &archiveMode);
 
        /* archiveFormat specific setup */
        if (archiveFormat == archNull)
                plainText = 1;
 
-       /*
-        * Ignore compression level for plain format. XXX: This is a bit
-        * inconsistent, tar-format throws an error instead.
-        */
-       if (archiveFormat == archNull)
-               compressLevel = 0;
-
-       /* Custom and directory formats are compressed by default */
+       /* Custom and directory formats are compressed by default, others not */
        if (compressLevel == -1)
        {
                if (archiveFormat == archCustom || archiveFormat == archDirectory)
@@ -550,7 +544,7 @@ main(int argc, char **argv)
                        compressLevel = 0;
        }
 
-       /* open the output file */
+       /* Open the output file */
        g_fout = CreateArchive(filename, archiveFormat, compressLevel, archiveMode);
 
        if (g_fout == NULL)