Thread: Damaged table "pg_access"

Damaged table "pg_access"

From
Jens Hartwig
Date:
Hello all,

when I try to access the system-table "pg_class", I get the following
error:

zeda=# select * from pg_class;
NOTICE:  get_groname: group 1 not found
pqReadData() -- backend closed the channel unexpectedly.       This probably means the backend terminated abnormally
  before or while processing the request.
 
The connection to the server was lost. Attempting reset: Failed.
!#

What happened? Is there any way to repare the damaged table?

Thanks in advance for all of you, who spend their valuable time!

Best regards, Jens

=============================================
Jens Hartwig
---------------------------------------------
debis Systemhaus GEI mbH
10875 Berlin
Tel.     : +49 (0)30 2554-3282
Fax      : +49 (0)30 2554-3187
Mobil    : +49 (0)170 167-2648
E-Mail   : jhartwig@debis.com
=============================================


Re: Damaged table "pg_access"

From
Tom Lane
Date:
Jens Hartwig <jhartwig@debis.com> writes:
> when I try to access the system-table "pg_class", I get the following
> error:

> zeda=# select * from pg_class;
> NOTICE:  get_groname: group 1 not found
> pqReadData() -- backend closed the channel unexpectedly.

Evidently you had created a group with sysid 1, granted some permissions
on some table to that group, and then deleted the group.  Re-create the
group (CREATE GROUP foo WITH SYSID 1).

I thought the crash in this situation had been fixed long since, but
apparently not :-( ... it still fails in current sources.  I'll make
sure it's fixed for 7.1.
        regards, tom lane


Re: Damaged table "pg_access"

From
Jens Hartwig
Date:
Hello,

yes, you were completely right, thank you very much, you saved me from
spending much time on this problem! The recreation of the groups 1, 2, 3
and 4 resolved the problem :-) My next question is: how can I (as a
workaround till version 7.1) permanently remove a group without facing
this problem? Can I rudely remove the granted permissions by any command
(e.g. deleting it manually from the system catalogue)?

Best regards, Jens

Tom Lane schrieb:
> 
> Jens Hartwig <jhartwig@debis.com> writes:
> > when I try to access the system-table "pg_class", I get the following
> > error:
> 
> > zeda=# select * from pg_class;
> > NOTICE:  get_groname: group 1 not found
> > pqReadData() -- backend closed the channel unexpectedly.
> 
> Evidently you had created a group with sysid 1, granted some permissions
> on some table to that group, and then deleted the group.  Re-create the
> group (CREATE GROUP foo WITH SYSID 1).
> 
> I thought the crash in this situation had been fixed long since, but
> apparently not :-( ... it still fails in current sources.  I'll make
> sure it's fixed for 7.1.
> 
>                         regards, tom lane

=============================================
Jens Hartwig
---------------------------------------------
debis Systemhaus GEI mbH
10875 Berlin
Tel.     : +49 (0)30 2554-3282
Fax      : +49 (0)30 2554-3187
Mobil    : +49 (0)170 167-2648
E-Mail   : jhartwig@debis.com
=============================================


Re: Damaged table "pg_access"

From
Tom Lane
Date:
Jens Hartwig <jhartwig@debis.com> writes:
> My next question is: how can I (as a
> workaround till version 7.1) permanently remove a group without facing
> this problem? Can I rudely remove the granted permissions by any command
> (e.g. deleting it manually from the system catalogue)?

There isn't any code to scan through the table ACLs and remove
references to a particular group or user (if there were, DROP GROUP
would be invoking it already).  Feel free to submit some...
        regards, tom lane