PostgreSQL Source Code
git master
|
#include "postgres.h"
#include "access/genam.h"
#include "access/heaptoast.h"
#include "access/relscan.h"
#include "access/table.h"
#include "access/xact.h"
#include "catalog/pg_collation.h"
#include "catalog/pg_type.h"
#include "common/hashfn.h"
#include "common/pg_prng.h"
#include "miscadmin.h"
#include "port/pg_bitutils.h"
#include "storage/lmgr.h"
#include "utils/builtins.h"
#include "utils/catcache.h"
#include "utils/datum.h"
#include "utils/fmgroids.h"
#include "utils/inval.h"
#include "utils/memutils.h"
#include "utils/rel.h"
#include "utils/resowner.h"
#include "utils/syscache.h"
Go to the source code of this file.
Macros | |
#define | HASH_INDEX(h, sz) ((Index) ((h) & ((sz) - 1))) |
#define | CACHE_elog(...) |
#define | InitCatCache_DEBUG2 |
#define | CatalogCacheInitializeCache_DEBUG1 |
#define | CatalogCacheInitializeCache_DEBUG2 |
Variables | |
static CatCacheHeader * | CacheHdr = NULL |
static const ResourceOwnerDesc | catcache_resowner_desc |
static const ResourceOwnerDesc | catlistref_resowner_desc |
#define CACHE_elog | ( | ... | ) |
Definition at line 60 of file catcache.c.
#define CatalogCacheInitializeCache_DEBUG1 |
Definition at line 1030 of file catcache.c.
#define CatalogCacheInitializeCache_DEBUG2 |
Definition at line 1031 of file catcache.c.
#define HASH_INDEX | ( | h, | |
sz | |||
) | ((Index) ((h) & ((sz) - 1))) |
Definition at line 50 of file catcache.c.
#define InitCatCache_DEBUG2 |
Definition at line 823 of file catcache.c.
|
inlinestatic |
Definition at line 422 of file catcache.c.
References catcache::cc_fastequal, and i.
Referenced by SearchCatCacheInternal(), and SearchCatCacheList().
|
static |
Definition at line 325 of file catcache.c.
References CACHE_elog, catcache::cc_hashfunc, catcache::cc_relname, DEBUG2, elog, FATAL, and pg_rotate_left32().
Referenced by CatalogCacheComputeTupleHashValue(), GetCatCacheHashValue(), SearchCatCacheInternal(), and SearchCatCacheList().
|
static |
Definition at line 367 of file catcache.c.
References Assert, CatalogCacheComputeHashValue(), catcache::cc_keyno, catcache::cc_tupdesc, elog, fastgetattr(), and FATAL.
Referenced by PrepareToInvalidateCacheTuple(), and SearchCatCacheList().
|
static |
Definition at line 2026 of file catcache.c.
References Assert, catctup::c_list, catctup::cache_elem, CacheHdr, CacheMemoryContext, CatCacheCopyKeys(), catcache::cc_bucket, catcache::cc_keyno, catcache::cc_nbuckets, catcache::cc_nkeys, catcache::cc_ntup, catcache::cc_tupdesc, catcacheheader::ch_ntup, catctup::ct_magic, CT_MAGIC, catctup::dead, dlist_push_head(), catctup::hash_value, heap_freetuple(), heap_getattr(), HeapTupleHasExternal, i, catctup::keys, MAXALIGN, MemoryContextSwitchTo(), catctup::my_cache, catctup::negative, palloc(), pg_global_prng_state, pg_prng_uint32(), PG_UINT32_MAX, catctup::refcount, RehashCatCache(), systable_recheck_tuple(), HeapTupleData::t_data, HeapTupleData::t_len, HeapTupleData::t_self, HeapTupleData::t_tableOid, toast_flatten_tuple(), and catctup::tuple.
Referenced by SearchCatCacheList(), and SearchCatCacheMiss().
void CatalogCacheFlushCatalog | ( | Oid | catId | ) |
Definition at line 783 of file catcache.c.
References CACHE_elog, CacheHdr, CallSyscacheCallbacks(), catcache::cc_reloid, catcacheheader::ch_caches, slist_iter::cur, DEBUG2, catcache::id, ResetCatalogCache(), slist_container, and slist_foreach.
Referenced by LocalExecuteInvalidationMessage().
|
static |
Definition at line 1035 of file catcache.c.
References AccessShareLock, Assert, BTEqualStrategyNumber, CACHE_elog, CacheMemoryContext, CatalogCacheInitializeCache_DEBUG1, CatalogCacheInitializeCache_DEBUG2, catcache::cc_fastequal, catcache::cc_hashfunc, catcache::cc_keyno, catcache::cc_nkeys, catcache::cc_relisshared, catcache::cc_relname, catcache::cc_reloid, catcache::cc_skey, catcache::cc_tupdesc, CreateTupleDescCopyConstr(), DEBUG2, elog, FATAL, fmgr_info_cxt(), GetCCHashEqFuncs(), i, InvalidOid, MemoryContextSwitchTo(), pstrdup(), RelationGetDescr, RelationGetForm, RelationGetRelationName, ScanKeyData::sk_attno, ScanKeyData::sk_collation, ScanKeyData::sk_func, ScanKeyData::sk_strategy, ScanKeyData::sk_subtype, table_close(), table_open(), and TupleDescAttr.
Referenced by GetCatCacheHashValue(), InitCatCachePhase2(), PrepareToInvalidateCacheTuple(), SearchCatCacheInternal(), and SearchCatCacheList().
|
static |
Definition at line 2180 of file catcache.c.
References attnum, datumCopy(), DatumGetCString(), i, NameGetDatum(), namestrcpy(), and TupleDescAttr.
Referenced by CatalogCacheCreateEntry(), and SearchCatCacheList().
Definition at line 2155 of file catcache.c.
References Assert, attnum, DatumGetPointer(), i, pfree(), and TupleDescAttr.
Referenced by CatCacheRemoveCList(), and CatCacheRemoveCTup().
Definition at line 606 of file catcache.c.
References Assert, catctup::c_list, CACHE_elog, CatCacheRemoveCList(), CatCacheRemoveCTup(), catcache::cc_bucket, catcache::cc_lbucket, catcache::cc_nbuckets, catcache::cc_nlbuckets, dlist_mutable_iter::cur, catctup::dead, catclist::dead, DEBUG2, dlist_container, dlist_foreach_modify, HASH_INDEX, catctup::hash_value, i, catctup::refcount, and catclist::refcount.
Referenced by SysCacheInvalidate().
Definition at line 551 of file catcache.c.
References Assert, catctup::c_list, catclist::cache_elem, CatCacheFreeKeys(), CatCacheRemoveCTup(), catcache::cc_keyno, catcache::cc_nlist, catcache::cc_tupdesc, catctup::dead, dlist_delete(), i, catclist::keys, catclist::members, catclist::my_cache, catclist::n_members, catclist::nkeys, pfree(), catctup::refcount, and catclist::refcount.
Referenced by CatCacheInvalidate(), CatCacheRemoveCTup(), ReleaseCatCacheListWithOwner(), and ResetCatalogCache().
Definition at line 509 of file catcache.c.
References Assert, catctup::c_list, catctup::cache_elem, CacheHdr, CatCacheFreeKeys(), CatCacheRemoveCList(), catcache::cc_keyno, catcache::cc_nkeys, catcache::cc_ntup, catcache::cc_tupdesc, catcacheheader::ch_ntup, catctup::dead, dlist_delete(), catctup::keys, catctup::my_cache, catctup::negative, pfree(), and catctup::refcount.
Referenced by CatCacheInvalidate(), CatCacheRemoveCList(), ReleaseCatCacheWithOwner(), ResetCatalogCache(), and SearchCatCacheList().
Definition at line 172 of file catcache.c.
References a, b, and DatumGetChar().
Referenced by GetCCHashEqFuncs().
Definition at line 178 of file catcache.c.
References DatumGetChar(), and murmurhash32().
Referenced by GetCCHashEqFuncs().
void CreateCacheMemoryContext | ( | void | ) |
Definition at line 679 of file catcache.c.
References ALLOCSET_DEFAULT_SIZES, AllocSetContextCreate, CacheMemoryContext, and TopMemoryContext.
Referenced by assign_record_type_typmod(), BuildEventTriggerCache(), init_ts_config_cache(), InitCatCache(), InitializeAttoptCache(), InitializeRelfilenumberMap(), InitializeTableSpaceCache(), lookup_ts_dictionary_cache(), lookup_ts_parser_cache(), lookup_type_cache(), LookupOpclassInfo(), RelationBuildLocalRelation(), and RelationCacheInitialize().
Definition at line 1612 of file catcache.c.
References CatalogCacheComputeHashValue(), CatalogCacheInitializeCache(), catcache::cc_nkeys, and catcache::cc_tupdesc.
Referenced by GetSysCacheHashValue().
|
static |
Definition at line 255 of file catcache.c.
References chareqfast(), charhashfast(), elog, FATAL, int2eqfast(), int2hashfast(), int4eqfast(), int4hashfast(), InvalidOid, nameeqfast(), namehashfast(), oidvectoreqfast(), oidvectorhashfast(), texteqfast(), and texthashfast().
Referenced by CatalogCacheInitializeCache().
Definition at line 1196 of file catcache.c.
References criticalRelcachesBuilt, criticalSharedRelcachesBuilt, and catcache::id.
Referenced by SearchCatCacheList(), and SearchCatCacheMiss().
CatCache* InitCatCache | ( | int | id, |
Oid | reloid, | ||
Oid | indexoid, | ||
int | nkeys, | ||
const int * | key, | ||
int | nbuckets | ||
) |
Definition at line 827 of file catcache.c.
References Assert, AttributeNumberIsValid, CacheHdr, CacheMemoryContext, catcache::cc_bucket, catcache::cc_indexoid, catcache::cc_keyno, catcache::cc_lbucket, catcache::cc_nbuckets, catcache::cc_next, catcache::cc_nkeys, catcache::cc_nlbuckets, catcache::cc_nlist, catcache::cc_ntup, catcache::cc_relisshared, catcache::cc_relname, catcache::cc_reloid, catcache::cc_tupdesc, catcacheheader::ch_caches, catcacheheader::ch_ntup, CreateCacheMemoryContext(), i, catcache::id, InitCatCache_DEBUG2, sort-test::key, MCXT_ALLOC_ZERO, MemoryContextSwitchTo(), on_proc_exit(), palloc(), palloc0(), palloc_aligned(), PG_CACHE_LINE_SIZE, slist_init(), and slist_push_head().
Referenced by InitCatalogCache().
Definition at line 1144 of file catcache.c.
References AccessShareLock, Assert, CatalogCacheInitializeCache(), catcache::cc_indexoid, catcache::cc_reloid, catcache::cc_tupdesc, catcache::id, index_close(), index_open(), LockRelationOid(), RelationData::rd_index, and UnlockRelationOid().
Referenced by InitCatalogCachePhase2(), and SysCacheGetAttr().
Definition at line 201 of file catcache.c.
References a, b, and DatumGetInt16().
Referenced by GetCCHashEqFuncs().
Definition at line 207 of file catcache.c.
References DatumGetInt16(), and murmurhash32().
Referenced by GetCCHashEqFuncs().
Definition at line 213 of file catcache.c.
References a, b, and DatumGetInt32().
Referenced by GetCCHashEqFuncs().
Definition at line 219 of file catcache.c.
References DatumGetInt32(), and murmurhash32().
Referenced by GetCCHashEqFuncs().
Definition at line 184 of file catcache.c.
References a, b, DatumGetName(), NAMEDATALEN, and NameStr.
Referenced by GetCCHashEqFuncs().
Definition at line 193 of file catcache.c.
References DatumGetName(), hash_any(), sort-test::key, and NameStr.
Referenced by GetCCHashEqFuncs().
Definition at line 242 of file catcache.c.
References a, b, DatumGetBool(), DirectFunctionCall2, and oidvectoreq().
Referenced by GetCCHashEqFuncs().
Definition at line 248 of file catcache.c.
References DatumGetInt32(), DirectFunctionCall1, and hashoidvector().
Referenced by GetCCHashEqFuncs().
void PrepareToInvalidateCacheTuple | ( | Relation | relation, |
HeapTuple | tuple, | ||
HeapTuple | newtuple, | ||
void(*)(int, uint32, Oid) | function | ||
) |
Definition at line 2250 of file catcache.c.
References Assert, CACHE_elog, CacheHdr, CatalogCacheComputeTupleHashValue(), CatalogCacheInitializeCache(), catcache::cc_nkeys, catcache::cc_relisshared, catcache::cc_reloid, catcache::cc_tupdesc, catcacheheader::ch_caches, slist_iter::cur, DEBUG2, HeapTupleIsValid, catcache::id, MyDatabaseId, PointerIsValid, RelationGetRelid, RelationIsValid, slist_container, and slist_foreach.
Referenced by CacheInvalidateHeapTuple().
|
static |
Definition at line 934 of file catcache.c.
References catctup::cache_elem, CacheMemoryContext, catcache::cc_bucket, catcache::cc_nbuckets, catcache::cc_ntup, catcache::cc_relname, dlist_mutable_iter::cur, DEBUG1, dlist_container, dlist_delete(), dlist_foreach_modify, dlist_push_head(), elog, HASH_INDEX, catctup::hash_value, i, catcache::id, MemoryContextAllocZero(), and pfree().
Referenced by CatalogCacheCreateEntry().
|
static |
Definition at line 972 of file catcache.c.
References catclist::cache_elem, CacheMemoryContext, catcache::cc_lbucket, catcache::cc_nlbuckets, catcache::cc_nlist, catcache::cc_relname, dlist_mutable_iter::cur, DEBUG1, dlist_container, dlist_delete(), dlist_foreach_modify, dlist_push_head(), elog, HASH_INDEX, catclist::hash_value, i, catcache::id, MemoryContextAllocZero(), and pfree().
Referenced by SearchCatCacheList().
void ReleaseCatCache | ( | HeapTuple | tuple | ) |
Definition at line 1573 of file catcache.c.
References CurrentResourceOwner, and ReleaseCatCacheWithOwner().
Referenced by ReleaseSysCache().
void ReleaseCatCacheList | ( | CatCList * | list | ) |
Definition at line 1986 of file catcache.c.
References CurrentResourceOwner, sort-test::list, and ReleaseCatCacheListWithOwner().
Referenced by AddEnumLabel(), blvalidate(), brinvalidate(), btvalidate(), ginvalidate(), gistvalidate(), hashvalidate(), opclass_for_family_datatype(), RenameEnumLabel(), sepgsql_relation_drop(), spgvalidate(), and transformFrameOffset().
|
static |
Definition at line 1992 of file catcache.c.
References Assert, CatCacheRemoveCList(), CL_MAGIC, CurrentResourceOwner, sort-test::list, and ResourceOwnerForgetCatCacheListRef().
Referenced by ReleaseCatCacheList(), and ResOwnerReleaseCatCacheList().
|
static |
Definition at line 1579 of file catcache.c.
References Assert, catctup::c_list, CatCacheRemoveCTup(), catctup::ct_magic, CT_MAGIC, CurrentResourceOwner, catctup::dead, catctup::my_cache, catctup::refcount, catclist::refcount, ResourceOwnerForgetCatCacheRef(), and catctup::tuple.
Referenced by ReleaseCatCache(), and ResOwnerReleaseCatCache().
|
static |
Definition at line 701 of file catcache.c.
References Assert, catctup::c_list, CatCacheRemoveCList(), CatCacheRemoveCTup(), catcache::cc_bucket, catcache::cc_lbucket, catcache::cc_nbuckets, catcache::cc_nlbuckets, dlist_mutable_iter::cur, catctup::dead, catclist::dead, dlist_container, dlist_foreach_modify, i, catctup::refcount, and catclist::refcount.
Referenced by CatalogCacheFlushCatalog(), and ResetCatalogCaches().
void ResetCatalogCaches | ( | void | ) |
Definition at line 753 of file catcache.c.
References CACHE_elog, CacheHdr, catcacheheader::ch_caches, slist_iter::cur, DEBUG2, ResetCatalogCache(), slist_container, and slist_foreach.
Referenced by InvalidateSystemCachesExtended().
|
inlinestatic |
Definition at line 155 of file catcache.c.
References catlistref_resowner_desc, sort-test::list, PointerGetDatum(), and ResourceOwnerForget().
Referenced by ReleaseCatCacheListWithOwner().
|
inlinestatic |
Definition at line 145 of file catcache.c.
References catcache_resowner_desc, PointerGetDatum(), and ResourceOwnerForget().
Referenced by ReleaseCatCacheWithOwner().
|
inlinestatic |
Definition at line 150 of file catcache.c.
References catlistref_resowner_desc, sort-test::list, PointerGetDatum(), and ResourceOwnerRemember().
Referenced by SearchCatCacheList().
|
inlinestatic |
Definition at line 140 of file catcache.c.
References catcache_resowner_desc, PointerGetDatum(), and ResourceOwnerRemember().
Referenced by SearchCatCacheInternal(), and SearchCatCacheMiss().
|
static |
Definition at line 2317 of file catcache.c.
References Assert, catcache::cc_relname, catctup::ct_magic, CT_MAGIC, DatumGetPointer(), catcache::id, ItemPointerGetBlockNumber(), ItemPointerGetOffsetNumber(), catctup::my_cache, psprintf(), catctup::refcount, res, and HeapTupleData::t_self.
|
static |
Definition at line 2340 of file catcache.c.
References DatumGetPointer(), sort-test::list, psprintf(), and res.
|
static |
Definition at line 2311 of file catcache.c.
References DatumGetPointer(), ReleaseCatCacheWithOwner(), and res.
|
static |
Definition at line 2334 of file catcache.c.
References DatumGetPointer(), ReleaseCatCacheListWithOwner(), and res.
Definition at line 1261 of file catcache.c.
References catcache::cc_nkeys, and SearchCatCacheInternal().
Referenced by SearchSysCache().
Definition at line 1278 of file catcache.c.
References SearchCatCacheInternal().
Referenced by SearchSysCache1().
Definition at line 1286 of file catcache.c.
References SearchCatCacheInternal().
Referenced by SearchSysCache2().
Definition at line 1294 of file catcache.c.
References SearchCatCacheInternal().
Referenced by SearchSysCache3().
Definition at line 1302 of file catcache.c.
References SearchCatCacheInternal().
Referenced by SearchSysCache4().
|
inlinestatic |
Definition at line 1312 of file catcache.c.
References Assert, catctup::cache_elem, CACHE_elog, CatalogCacheCompareTuple(), CatalogCacheComputeHashValue(), CatalogCacheInitializeCache(), CATCACHE_MAXKEYS, catcache::cc_bucket, catcache::cc_nbuckets, catcache::cc_nkeys, catcache::cc_relname, catcache::cc_tupdesc, dlist_iter::cur, CurrentResourceOwner, catctup::dead, DEBUG2, dlist_container, dlist_foreach, dlist_move_head(), HASH_INDEX, catctup::hash_value, IsTransactionState(), catctup::keys, catctup::negative, catctup::refcount, ResourceOwnerEnlarge(), ResourceOwnerRememberCatCacheRef(), SearchCatCacheMiss(), catctup::tuple, and unlikely.
Referenced by SearchCatCache(), SearchCatCache1(), SearchCatCache2(), SearchCatCache3(), and SearchCatCache4().
Definition at line 1646 of file catcache.c.
References AccessShareLock, Assert, catctup::c_list, catclist::cache_elem, CACHE_elog, CacheMemoryContext, CatalogCacheCompareTuple(), CatalogCacheComputeHashValue(), CatalogCacheComputeTupleHashValue(), CatalogCacheCreateEntry(), CatalogCacheInitializeCache(), CATCACHE_MAXKEYS, CatCacheCopyKeys(), CatCacheRemoveCTup(), catcache::cc_bucket, catcache::cc_indexoid, catcache::cc_keyno, catcache::cc_lbucket, catcache::cc_nbuckets, catcache::cc_nkeys, catcache::cc_nlbuckets, catcache::cc_nlist, catcache::cc_relname, catcache::cc_reloid, catcache::cc_skey, catcache::cc_tupdesc, catclist::cl_magic, CL_MAGIC, dlist_iter::cur, CurrentResourceOwner, catctup::dead, catclist::dead, DEBUG2, dlist_container, dlist_foreach, dlist_move_head(), dlist_push_head(), HASH_INDEX, catctup::hash_value, catclist::hash_value, HeapTupleIsValid, i, IndexScanOK(), SysScanDescData::irel, ItemPointerEquals(), catclist::keys, lappend(), lfirst, list_length(), catclist::members, MemoryContextAllocZero(), MemoryContextSwitchTo(), catclist::my_cache, catclist::n_members, catctup::negative, NIL, catclist::nkeys, catclist::ordered, palloc(), PG_CATCH, PG_END_TRY, PG_RE_THROW, PG_TRY, catctup::refcount, catclist::refcount, RehashCatCacheLists(), ResourceOwnerEnlarge(), ResourceOwnerRememberCatCacheListRef(), ScanKeyData::sk_argument, systable_beginscan(), systable_endscan(), systable_getnext(), HeapTupleData::t_self, table_close(), table_open(), catctup::tuple, and unlikely.
Referenced by SearchSysCacheList().
|
static |
Definition at line 1424 of file catcache.c.
References AccessShareLock, Assert, CACHE_elog, CacheHdr, CatalogCacheCreateEntry(), CATCACHE_MAXKEYS, catcache::cc_indexoid, catcache::cc_ntup, catcache::cc_relname, catcache::cc_reloid, catcache::cc_skey, catcacheheader::ch_ntup, CurrentResourceOwner, DEBUG2, HeapTupleIsValid, IndexScanOK(), IsBootstrapProcessingMode, catctup::refcount, ResourceOwnerEnlarge(), ResourceOwnerRememberCatCacheRef(), ScanKeyData::sk_argument, systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), table_open(), and catctup::tuple.
Referenced by SearchCatCacheInternal().
Definition at line 225 of file catcache.c.
References a, b, DatumGetBool(), DirectFunctionCall2Coll(), and texteq().
Referenced by GetCCHashEqFuncs().
Definition at line 235 of file catcache.c.
References DatumGetInt32(), DirectFunctionCall1Coll(), and hashtext().
Referenced by GetCCHashEqFuncs().
|
static |
Definition at line 64 of file catcache.c.
Referenced by CatalogCacheCreateEntry(), CatalogCacheFlushCatalog(), CatCacheRemoveCTup(), InitCatCache(), PrepareToInvalidateCacheTuple(), ResetCatalogCaches(), and SearchCatCacheMiss().
|
static |
Definition at line 118 of file catcache.c.
Referenced by ResourceOwnerForgetCatCacheRef(), and ResourceOwnerRememberCatCacheRef().
|
static |
Definition at line 128 of file catcache.c.
Referenced by ResourceOwnerForgetCatCacheListRef(), and ResourceOwnerRememberCatCacheListRef().