Обсуждение: Question about syscache

Поиск
Список
Период
Сортировка

Question about syscache

От
Peter Eisentraut
Дата:
In syscache.c, the structure cachedesc contains a field reloidattr that is
supposed to contain the number of an attribute that is an OID reference to
another table.  But what if there are two such attributes?

The concrete case is an index on pg_cast (castsource, casttarget), which
both reference pg_type.

-- 
Peter Eisentraut   peter_e@gmx.net



Re: Question about syscache

От
Tom Lane
Дата:
Peter Eisentraut <peter_e@gmx.net> writes:
> In syscache.c, the structure cachedesc contains a field reloidattr that is
> supposed to contain the number of an attribute that is an OID reference to
> another table.  But what if there are two such attributes?

Specifically, it is a reference to pg_class.

> The concrete case is an index on pg_cast (castsource, casttarget), which
> both reference pg_type.

That is not a reference to pg_class, so you should not make reloidattr
reference it.

The point of reloidattr is that during a relation cache clear event,
it allows catcache to find all catcache rows that are related to that
relation cache entry (eg, pg_attribute, pg_trigger, etc).  So far
there's not been need for more than one such attribute per tuple.
        regards, tom lane