postgres: import of previous dump fails

Charles Curley charlescurley at charlescurley.com
Tue Dec 9 23:09:33 UTC 2003


On Mon, Dec 08, 2003 at 04:02:44PM -0500, Lamar Owen wrote:
> On Monday 08 December 2003 01:54 pm, Charles Curley wrote:
> > 7.2.3. When I try to import the old dump as user postgres, I see the
> > following:
> 
> > CREATE USER "root" WITH SYSID 0 NOCREATEDB NOCREATEUSER;
> [Sorry it took me so long to reply to this; I had to do some research on it 
> (while working, too)....]
> 
> This is no longer supported, which is what the error message is telling you.  
> Trying this line at a psql prompt in 7.4, I find the same behavior.  The only 
> reason you didn't see this prior to 7.3 was that the use of CREATE USER 
> versus a COPY of the SYSIDs was done for 7.3, but the problem existed long 
> before that.
> 
> > I didn't see anything useful at http://www.postgresql.org.
> 
> This change happened a long time ago.  Specifically, file user.c in 
> src/backend/commands was changed on September 8, 2001 with this change. 
> (Reference the web CVS 
> URL:http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/commands/user.c?rev=1.83&content-type=text/x-cvsweb-markup 
> to see the code right after the change: to see the diff between that and the 
> previous version see 
> http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/commands/user.c.diff?r1=1.82&r2=1.83 
> and for the complete history see 
> http://developer.postgresql.org/cvsweb.cgi/pgsql-server/src/backend/commands/user.c 
> )
> 
>  There can be no database user ID less than 1; SYSID 1 is the user initdb 
> creates and is by default the database superuser (the PostgreSQL SYSID's do 
> not have to match the system UID for ident authentication to work; the names 
> must match: case in point, the default UID for the user postgres is 26, but 
> the SYSID for postgres is 1).
> 
> The last release that the use of SYSID of 0 was supported would have been 
> 7.1.x, and even then it wasn't supported.  Try it out yourself on your 7.2.3 
> database and see if the raw CREATE USER command you posted will execute (you 
> can see the error even if the SYSID of 0 already exists, since this test is 
> earlier in the codepath than the duplicate test).  It imported into 7.2 
> because the 7.1 pg_dump didn't create CREATE USER commands, it used COPY for 
> this functionality, which bypasses this test.
> 
> The only clue in the Release Notes for 7.2 that this happened is a line about 
> the SuperUser ID being fixed at 1; the fact that a SYSID of 0 was unavailable 
> is not mentioned.

Right. Someone on another list told me that there does not have to be
any correlation between the ID of a postgres user and a user on the
host computer. Workaround was to edit the dump file to give "root" a
SYSID of 2. It seems to be working but I haven't fully exercised the
system.

-- 

Charles Curley                  /"\    ASCII Ribbon Campaign
Looking for fine software       \ /    Respect for open standards
and/or writing?                  X     No HTML/RTF in email
http://www.charlescurley.com    / \    No M$ Word docs in email

Key fingerprint = CE5C 6645 A45A 64E4 94C0  809C FFF6 4C48 4ECD DFDB
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/fedora-list/attachments/20031209/6de41819/attachment-0001.sig>


More information about the fedora-list mailing list