Re: Cannot recreate DB scheme using pg_dump
От | Tom Lane |
---|---|
Тема | Re: Cannot recreate DB scheme using pg_dump |
Дата | |
Msg-id | 29645.1090271186@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Cannot recreate DB scheme using pg_dump (prakashn@uci.edu) |
Список | 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 по дате отправления: