Hiroshi Inoue <Inoue@tpf.co.jp> writes:
> RelationCacheInvalidate() is called from ResetSystemCaches()
> and calles RelationFlushRelation() for all relation descriptors
> except some nailed system relations.
> I'm wondering why nailed relations could be exceptions.
> Conversely why must RelationCacheInvalidate() call
> RelationFlushRelation() for other system relations ?
> Isn't it sufficient to call smgrclose() and replace rd_rel
> member of system relations by the latest ones instead
> of calling RelationFlushRelation() ?
Possibly you could do fixrdesc() instead of just ignoring the report
entirely for nailed-in relations. Not sure it's worth worrying about
though --- in practice, what is this going to make possible? You can't
change the structure of a nailed-in system catalog, nor will adding
triggers or rules to it work very well, so I'm not quite seeing the
point.
BTW, don't forget that there are nailed-in indexes as well as tables.
Not sure if that matters to this code, but it might.
regards, tom lane