Hi,
Please don't top-post on this list (and please trim quoted messages too).
On Fri, Aug 19, 2022 at 05:55:03AM +0700, milist ujang wrote:
> On Thu, Aug 18, 2022 at 5:33 PM milist ujang <ujang.milist@gmail.com> wrote:
> >
> > 3rd query ERROR same as subject (ERROR: catalog is missing 3 attribute(s)
> > for relid 150243)
>
> my version is 12.9 on x86_64.
>
> reading source code, got the message form RelationBuildTupleDesc() function:
>
> /*
> * end the scan and close the attribute relation
> */
> systable_endscan(pg_attribute_scan);
> table_close(pg_attribute_desc, AccessShareLock);
>
> if (need != 0)
> elog(ERROR, "pg_attribute catalog is missing %d attribute(s) for
> relation OID %u",
> need, RelationGetRelid(relation));
>
> I'm not sure whether this function will compare the mentioned relation
> attribute in pg_attribute and physical table (header) file?
No, this function is comparing pg_class.relnatts to rows fetched querying
pg_attribute for the given relation.
What it means is that you likely have data corruption. You could try to
reindex pg_attribute and see if that fixes that specific problems, but even if
it does you will have to investigate how data got corrupted, fix that root
problem, and then try to check for other corrupted data or restore from a sane
backup.