Update header comment for lookup_type_cache()

Describe the way we handle concurrent invalidation messages.

Discussion: https://postgr.es/m/CAPpHfdsQhwUrnB3of862j9RgHoJM--eRbifvBMvtQxpC57dxCA%40mail.gmail.com
Reviewed-by: Andrei Lepikhov, Artur Zakirov, Pavel Borisov
pull/182/head
Alexander Korotkov 11 months ago
parent 499edb0974
commit c1500a1ba7
  1. 9
      src/backend/utils/cache/typcache.c

@ -351,6 +351,15 @@ type_cache_syshash(const void *key, Size keysize)
* invalid. Note however that we may fail to find one or more of the
* values requested by 'flags'; the caller needs to check whether the fields
* are InvalidOid or not.
*
* Note that while filling TypeCacheEntry we might process concurrent
* invalidation messages, causing our not-yet-filled TypeCacheEntry to be
* invalidated. In this case, we typically only clear flags while values are
* still available for the caller. It's expected that the caller holds
* enough locks on type-depending objects that the values are still relevant.
* It's also important that the tupdesc is filled after all other
* TypeCacheEntry items for TYPTYPE_COMPOSITE. So, tupdesc can't get
* invalidated during the lookup_type_cache() call.
*/
TypeCacheEntry *
lookup_type_cache(Oid type_id, int flags)

Loading…
Cancel
Save