Re: FATAL: catalog is missing 1 attribute(s) for relid 16396

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Marc G(dot) Fournier" <scrappy(at)postgresql(dot)org>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: FATAL: catalog is missing 1 attribute(s) for relid 16396
Date: 2005-01-15 20:15:05
Message-ID: 11184.1105820105@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

"Marc G. Fournier" <scrappy(at)postgresql(dot)org> writes:
> can I force the reuse of an OID? for instance, if I were to get the
> map'ngs for those toast files, and then 'drop' the old database (I've got
> several backups of it already), can I insert those records into pg_class,
> with the proper OID?

I was wondering about that myself. If you could relabel the pg_class
rows for the new TOAST tables with the OIDs of the old TOAST tables,
you'd be set. (You'd need to change the relfilenode fields of their
owning tables too, probably, although if you just want to dump out the
data you might not have to bother with that.) The problem is that there
is no way to do that within Postgres. The only way I can think of is to
shut down the postmaster and change pg_class with a hex editor, which
seems mighty tedious and error-prone. However, with any luck you'd only
need to fix half a dozen or so entries ... how many tables in this
database have nonempty TOAST tables?

If you try this, keep in mind that you'd have to REINDEX pg_class
afterwards.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Marc G. Fournier 2005-01-15 20:30:28 Re: FATAL: catalog is missing 1 attribute(s) for relid
Previous Message Marc G. Fournier 2005-01-15 20:05:40 Re: FATAL: catalog is missing 1 attribute(s) for relid