Bartosz Nowak <grubby@go2.pl> writes:
> Tom Lane napisa�(a):
>> You could manually delete either row, probably better to zap the second
>> one:
>> delete from pg_shadow where ctid = '(1,25)';
> 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:
> ...
> 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
Ugh. That's looking more like you have a transaction ID wraparound
problem. How long has it been since pg_shadow was last vacuumed?
You could try a "VACUUM FREEZE pg_shadow" and see if the rows act any
more normally after that. (Better take a filesystem-level backup
first, so you can get out of it if that makes things worse.)
regards, tom lane