Thread: cannot find attribute 1 of relation (of some user table) in 7.1.3

cannot find attribute 1 of relation (of some user table) in 7.1.3

From
Dirk Lutzebaeck
Date:
Hi, I have the follow problem when vacuum'ing on 7.1.3:

db1=# vacuum;
ERROR:  cannot find attribute 1 of relation docmatchsel

I cannot drop the table either and the system does not seem do know
the columns:

db1=# \d docmatchsel
Table "docmatchsel
 Attribute | Type | Modifier
-----------+------+----------

db1=#

Then I tried to reindex the table in standalone mode which gives:

backend> reindex table docmatchsel force
ERROR:  catalog is missing 4 attributes for relid 117042636

I also reindexed the system tables to no avail.

docmatchsel was created as a temporary table in the application. No
indexes were defined for this table.

I cannot get either run vacuum nor pg_dump with success.

Is there any insight to this? I looked up the email archives but could
find a way to get rid of this problem.

Dirk

Re: cannot find attribute 1 of relation (of some user table) in 7.1.3

From
Tom Lane
Date:
Dirk Lutzebaeck <lutzeb@aeccom.com> writes:
> Hi, I have the follow problem when vacuum'ing on 7.1.3:
> ERROR:  cannot find attribute 1 of relation docmatchsel
> Then I tried to reindex the table in standalone mode which gives:
> backend> reindex table docmatchsel force
> ERROR:  catalog is missing 4 attributes for relid 117042636

Bizarre.  Were there four columns altogether?

> docmatchsel was created as a temporary table in the application.

Since it's only a temporary table, my counsel is:

    1. delete from pg_class where relname = 'docmatchsel';

    2. pg_dump, initdb, reload.

You might be okay after just step 1, but given that we don't know what
caused this, an initdb seems like a good idea.

It would be interesting to go groveling through pg_attribute and see if
we can find any traces of the missing attribute rows, but unless you're
prepared to sift through the bits yourself (or give access to some
developer to do it), that's not going to happen.

            regards, tom lane

Re: cannot find attribute 1 of relation (of some user table) in 7.1.3

From
Dirk Lutzebaeck
Date:
Tom Lane writes:
 > Dirk Lutzebaeck <lutzeb@aeccom.com> writes:
 > > Hi, I have the follow problem when vacuum'ing on 7.1.3:
 > > ERROR:  cannot find attribute 1 of relation docmatchsel
 > > Then I tried to reindex the table in standalone mode which gives:
 > > backend> reindex table docmatchsel force
 > > ERROR:  catalog is missing 4 attributes for relid 117042636
 >
 > Bizarre.  Were there four columns altogether?

Yes.

 > > docmatchsel was created as a temporary table in the application.
 >
 > Since it's only a temporary table, my counsel is:
 >
 >     1. delete from pg_class where relname = 'docmatchsel';
 >
 >     2. pg_dump, initdb, reload.
 >
 > You might be okay after just step 1, but given that we don't know what
 > caused this, an initdb seems like a good idea.

Ok, I will do this tonight.

 > It would be interesting to go groveling through pg_attribute and see if
 > we can find any traces of the missing attribute rows, but unless you're
 > prepared to sift through the bits yourself (or give access to some
 > developer to do it), that's not going to happen.

I would like to go with your fixes above this time. If it happens
again we should take a closer look indeed.

Thanks,

Dirk