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

Started by Dirk Lutzebaeckover 24 years ago3 messagesbugs
Jump to latest
#1Dirk Lutzebaeck
lutzeb@aeccom.com

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dirk Lutzebaeck (#1)
Re: cannot find attribute 1 of relation (of some user table) in 7.1.3

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

#3Dirk Lutzebaeck
lutzeb@aeccom.com
In reply to: Tom Lane (#2)
Re: cannot find attribute 1 of relation (of some user table) in 7.1.3

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