Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Now, if we did proper locking, no SI message could arrive for such an
> entry.
> My assumption is that these are mostly system cache entries, and they
> rarely change, right? If someone is operating on a table that gets an
> SI entry, odds are that later on the system will fail because the table
> is changed in some way, right?
If the tuple is actually *changed* then that's true (and locking should
have prevented it anyway). But we also issue cache flushes against
whole system tables in order to handle VACUUM of a system table. There,
the only thing that's actually been modified is the tuple's physical
location (ctid). We don't want to blow away transactions that are just
looking at cache entries when a VACUUM happens.
Perhaps the caches shouldn't store ctid? Not sure.
regards, tom lane