/* * SearchSysCache * * A layer on top of SearchCatCache that does the initialization and * key-setting for you. * * Returns the cache copy of the tuple if one is found, NULL if not. * The tuple is the 'cache' copy and must NOT be modified! * * When the caller is done using the tuple, call ReleaseSysCache() * to release the reference count grabbed by SearchSysCache(). If this * is not done, the tuple will remain locked in cache until end of * transaction, which is tolerable but not desirable. * * CAUTION: The tuple that is returned must NOT be freed by the caller! */ HeapTuple SearchSysCache(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4) { Assert(cacheId >= 0 && cacheId < SysCacheSize && PointerIsValid(SysCache[cacheId])); return SearchCatCache(SysCache[cacheId], key1, key2, key3, key4); }
/* * SearchSysCache * * A layer on top of SearchCatCache that does the initialization and * key-setting for you. * * Returns the cache copy of the tuple if one is found, NULL if not. * The tuple is the 'cache' copy and must NOT be modified! * * When the caller is done using the tuple, call ReleaseSysCache() * to release the reference count grabbed by SearchSysCache(). If this * is not done, the tuple will remain locked in cache until end of * transaction, which is tolerable but not desirable. * * CAUTION: The tuple that is returned must NOT be freed by the caller! */ HeapTuple SearchSysCache(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4) { if (cacheId < 0 || cacheId >= SysCacheSize || !PointerIsValid(SysCache[cacheId])) elog(ERROR, "invalid cache id: %d", cacheId); return SearchCatCache(SysCache[cacheId], key1, key2, key3, key4); }