Skip site navigation (1) Skip section navigation (2)

Re: pg_dumpall problem - duplicated users

From: GRUbY <grubby(at)epf(dot)pl>
To: pgsql-admin(at)postgresql(dot)org
Subject: Re: pg_dumpall problem - duplicated users
Date: 2005-09-01 19:08:54
Message-ID: 431751C6.9040902@epf.pl (view raw or flat)
Thread:
Lists: pgsql-admin
Tom Lane napisaƂ(a):

> Bartosz Nowak <grubby(at)go2(dot)pl> writes:
>  
>
>> postgres=> select ctid,xmin,xmax,cmin,xmax,* from pg_shadow where 
>> usename = 'postgres';
>> ctid  |    xmin    | xmax  | cmin  | xmax  | usename  | usesysid | 
>> usecreatedb | usesuper | usecatupd |               
>> passwd                | valuntil | useconfig
>> --------+------------+-------+-------+-------+----------+----------+-------------+----------+-----------+-------------------------------------+----------+----------- 
>>   
>
>
>  
>
>> (0,1) |          1 | 50469 | 50469 | 50469 | postgres |        1 | 
>> t           | t        | t         
>> |                                     |          |
>> (1,25) | 2559800612 |     0 |     0 |     0 | postgres |        1 | 
>> t           | t        | t         | 
>> md5c084502ed11efa9d3d96d29717a5e555 |          |
>> (2 rows)
>>   
>
>
> Hmm --- clearly, that second xmin is corrupt.  I'd venture that this
> is the result of a rolled-back (crashed?) ALTER USER SET PASSWORD
> operation, in which somehow the new tuple's xmin got clobbered ... and
> more than likely, its XMIN_COMMITTED bit got set at the same time.
>
> You could manually delete either row, probably better to zap the second
> one:
>     delete from pg_shadow where ctid = '(1,25)';
> and then things should be OK.  A dump and reload wouldn't be a bad idea
> though, since there may be other corruption elsewhere that you haven't
> noticed yet.
>
>             regards, tom lane
>  
>
Heh... i wish it was that easy - i tried it already :] When i delete the 
'second' postgres user (with passwd set) PG is acting like there is no 
postgres account at all:

pg_dumpall -i -U mw > test.sql
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR:  pg_class_aclcheck: invalid 
user id 1
pg_dump: The command was: SELECT (SELECT usename FROM pg_user WHERE 
usesysid = datdba) as dba, pg_encoding_to_char(encoding) as encoding, 
datpath FROM pg_database WHERE datname = 'alibi'
pg_dumpall: pg_dump failed on database "alibi", exiting

pg_dumpall -i -U postgres > test.sql
pg_dumpall: could not connect to database "template1": FATAL:  user 
"postgres" does not exist

psql -U postgres
psql: FATAL:  user "postgres" does not exist

And i cannot modify row of 'first' postgres user (without passwd set) 
with or without 'second' present:

mw=> delete from pg_shadow where ctid = '(0,1)' ;
DELETE 0

mw=> update pg_catalog.pg_shadow set passwd='test' where 
usename='postgres' and ctid = '(0,1)';
UPDATE 0

So further help will be welcomed :) And thank U for trying to help me.

Greetings,
Bartek

pgsql-admin by date

Next:From: Tom LaneDate: 2005-09-01 19:11:28
Subject: Re: pg_dumpall problem - duplicated users
Previous:From: Tom LaneDate: 2005-09-01 18:26:16
Subject: Re: pg_dumpall problem - duplicated users

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group