I wrote: > The missing piece in this is how to determine when the typcache entry > has to be flushed. That should be driven by sinval signalling.
On reflection that doesn't seem good enough. Immediately after someone else has committed an ALTER TYPE, your typcache entry is out of date, and won't be updated until you get around to noticing the SI signal. I was thinking that wouldn't matter because you'd never need to make a comparison involving the new enum value --- it couldn't be in any table rows you'd see as committed good. But this is wrong because you might have to make index comparisons involving the new value, even before you consider that the rows the index entries reference are good. We could fix that with Dean's idea of reloading the cache whenever we see that we are being asked to compare a value we don't have in the cache entry. However, that assumes that we even notice that it's not in the cache entry. If we're trying to use "fast" comparison then we wouldn't notice that. So the hard part of this really is to force other backends to switch from "fast" to "slow" comparison in a timely fashion when an ALTER makes that necessary. Right offhand I don't see any good way to do that, at least not while having the "fast" method as fast as it is now. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers