Re: Cannot recreate DB scheme using pg_dump - Mailing list pgsql-bugs

From Tom Lane
Subject Re: Cannot recreate DB scheme using pg_dump
Date
Msg-id 29645.1090271186@sss.pgh.pa.us
Whole thread Raw
In response to Re: Cannot recreate DB scheme using pg_dump  (prakashn@uci.edu)
List pgsql-bugs
prakashn@uci.edu writes:
> I've attached the schema dump, and the corresponding psql output when
> run by the superuser as "psql -f schema_dump db_name >& psql_output".

Okay, I see the problem: pg_dump is losing track of which session
authorization it's currently got selected.  This is a consequence of
what the ACL-dumping code has to do to replicate GRANTs granted by
non-owners.  The attached patch (against 7.4 branch) seems to fix it.

            regards, tom lane

Index: pg_backup_archiver.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/bin/pg_dump/pg_backup_archiver.c,v
retrieving revision 1.79.2.2
diff -c -r1.79.2.2 pg_backup_archiver.c
*** pg_backup_archiver.c    24 Feb 2004 03:35:43 -0000    1.79.2.2
--- pg_backup_archiver.c    19 Jul 2004 20:56:06 -0000
***************
*** 2262,2267 ****
--- 2262,2278 ----
              ahprintf(AH, "%s\n\n", te->defn);
      }

+     /*
+      * If it's an ACL entry, it might contain SET SESSION AUTHORIZATION
+      * commands, so we can no longer assume we know the current auth setting.
+      */
+     if (strncmp(te->desc, "ACL", 3) == 0)
+     {
+         if (AH->currUser)
+             free(AH->currUser);
+         AH->currUser = NULL;
+     }
+
      return 1;
  }

pgsql-bugs by date:

Previous
From: prakashn@uci.edu
Date:
Subject: Re: Cannot recreate DB scheme using pg_dump
Next
From: "PostgreSQL Bugs List"
Date:
Subject: BUG #1197: index bug