Fix oversight in pg_dump's handling of extension configuration tables.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 10 Feb 2012 20:22:14 +0000 (15:22 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 10 Feb 2012 20:22:14 +0000 (15:22 -0500)
If an extension has not been selected to be dumped (perhaps because of
a --schema or --table switch), the contents of its configuration tables
surely should not get dumped either.  Per gripe from
Hubert Depesz Lubaczewski.

src/bin/pg_dump/pg_dump.c

index 91ca9fdd895637aa8c002f9ac3a0439607656252..0175ce0173239f7892d0462db553844d267cdb96 100644 (file)
@@ -14179,13 +14179,18 @@ getExtensionMembership(Archive *fout, ExtensionInfo extinfo[],
     */
    for (i = 0; i < numExtensions; i++)
    {
-       char       *extconfig = extinfo[i].extconfig;
-       char       *extcondition = extinfo[i].extcondition;
+       ExtensionInfo *curext = &(extinfo[i]);
+       char       *extconfig = curext->extconfig;
+       char       *extcondition = curext->extcondition;
        char      **extconfigarray = NULL;
        char      **extconditionarray = NULL;
        int         nconfigitems;
        int         nconditionitems;
 
+       /* Tables of not-to-be-dumped extensions shouldn't be dumped */
+       if (!curext->dobj.dump)
+           continue;
+
        if (parsePGArray(extconfig, &extconfigarray, &nconfigitems) &&
          parsePGArray(extcondition, &extconditionarray, &nconditionitems) &&
            nconfigitems == nconditionitems)