PostgreSQL Source Code
git master
|
#include "postgres.h"
#include "access/genam.h"
#include "access/heaptoast.h"
#include "access/relscan.h"
#include "access/sysattr.h"
#include "access/table.h"
#include "access/xact.h"
#include "catalog/pg_collation.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_type.h"
#include "common/hashfn.h"
#include "miscadmin.h"
#include "port/pg_bitutils.h"
#include "storage/lmgr.h"
#include "utils/builtins.h"
#include "utils/datum.h"
#include "utils/fmgroids.h"
#include "utils/inval.h"
#include "utils/memutils.h"
#include "utils/rel.h"
#include "utils/resowner_private.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 |
#define CACHE_elog | ( | ... | ) |
Definition at line 60 of file catcache.c.
#define CatalogCacheInitializeCache_DEBUG1 |
Definition at line 911 of file catcache.c.
#define CatalogCacheInitializeCache_DEBUG2 |
Definition at line 912 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 753 of file catcache.c.
|
inlinestatic |
Definition at line 368 of file catcache.c.
References catcache::cc_fastequal, and i.
Referenced by SearchCatCacheInternal(), and SearchCatCacheList().
|
static |
Definition at line 271 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 313 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 1799 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(), catctup::refcount, RehashCatCache(), 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 713 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 916 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 1930 of file catcache.c.
References attnum, datumCopy(), DatumGetCString(), i, NameGetDatum(), namestrcpy(), and TupleDescAttr.
Referenced by CatalogCacheCreateEntry(), and SearchCatCacheList().
Definition at line 1905 of file catcache.c.
References Assert(), attnum, DatumGetPointer(), i, pfree(), and TupleDescAttr.
Referenced by CatCacheRemoveCList(), and CatCacheRemoveCTup().
Definition at line 546 of file catcache.c.
References Assert(), catctup::c_list, CACHE_elog, CatCacheRemoveCList(), CatCacheRemoveCTup(), catcache::cc_bucket, catcache::cc_lists, catcache::cc_nbuckets, dlist_mutable_iter::cur, catctup::dead, catclist::dead, DEBUG2, dlist_container, dlist_foreach_modify, HASH_INDEX, catctup::hash_value, catctup::refcount, and catclist::refcount.
Referenced by SysCacheInvalidate().
Definition at line 493 of file catcache.c.
References Assert(), catctup::c_list, catclist::cache_elem, CatCacheFreeKeys(), CatCacheRemoveCTup(), catcache::cc_keyno, 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(), ReleaseCatCacheList(), and ResetCatalogCache().
Definition at line 451 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(), ReleaseCatCache(), ResetCatalogCache(), and SearchCatCacheList().
Definition at line 118 of file catcache.c.
References a, b, and DatumGetChar().
Referenced by GetCCHashEqFuncs().
Definition at line 124 of file catcache.c.
References DatumGetChar(), and murmurhash32().
Referenced by GetCCHashEqFuncs().
void CreateCacheMemoryContext | ( | void | ) |
Definition at line 614 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 1467 of file catcache.c.
References CatalogCacheComputeHashValue(), CatalogCacheInitializeCache(), catcache::cc_nkeys, and catcache::cc_tupdesc.
Referenced by GetSysCacheHashValue().
|
static |
Definition at line 201 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 1077 of file catcache.c.
References AMNAME, AMOID, AUTHMEMMEMROLE, AUTHNAME, AUTHOID, criticalRelcachesBuilt, criticalSharedRelcachesBuilt, DATABASEOID, catcache::id, and INDEXRELID.
Referenced by SearchCatCacheList(), and SearchCatCacheMiss().
CatCache* InitCatCache | ( | int | id, |
Oid | reloid, | ||
Oid | indexoid, | ||
int | nkeys, | ||
const int * | key, | ||
int | nbuckets | ||
) |
Definition at line 757 of file catcache.c.
References Assert(), CacheHdr, CacheMemoryContext, catcache::cc_bucket, catcache::cc_indexoid, catcache::cc_keyno, catcache::cc_nbuckets, catcache::cc_next, catcache::cc_nkeys, 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 1025 of file catcache.c.
References AccessShareLock, AMNAME, AMOID, 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 147 of file catcache.c.
References a, b, and DatumGetInt16().
Referenced by GetCCHashEqFuncs().
Definition at line 153 of file catcache.c.
References DatumGetInt16(), and murmurhash32().
Referenced by GetCCHashEqFuncs().
Definition at line 159 of file catcache.c.
References a, b, and DatumGetInt32().
Referenced by GetCCHashEqFuncs().
Definition at line 165 of file catcache.c.
References DatumGetInt32(), and murmurhash32().
Referenced by GetCCHashEqFuncs().
Definition at line 130 of file catcache.c.
References a, b, DatumGetName(), NAMEDATALEN, and NameStr.
Referenced by GetCCHashEqFuncs().
Definition at line 139 of file catcache.c.
References DatumGetName(), hash_any(), sort-test::key, and NameStr.
Referenced by GetCCHashEqFuncs().
Definition at line 188 of file catcache.c.
References a, b, DatumGetBool(), DirectFunctionCall2, and oidvectoreq().
Referenced by GetCCHashEqFuncs().
Definition at line 194 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 2000 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().
void PrintCatCacheLeakWarning | ( | HeapTuple | tuple | ) |
Definition at line 2064 of file catcache.c.
References Assert(), catcache::cc_relname, catctup::ct_magic, CT_MAGIC, elog(), catcache::id, ItemPointerGetBlockNumber(), ItemPointerGetOffsetNumber(), catctup::my_cache, catctup::refcount, HeapTupleData::t_self, and WARNING.
Referenced by ResourceOwnerReleaseInternal().
void PrintCatCacheListLeakWarning | ( | CatCList * | list | ) |
Definition at line 2080 of file catcache.c.
References elog(), sort-test::list, and WARNING.
Referenced by ResourceOwnerReleaseInternal().
|
static |
Definition at line 853 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().
void ReleaseCatCache | ( | HeapTuple | tuple | ) |
Definition at line 1435 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 ReleaseSysCache(), and ResourceOwnerReleaseInternal().
void ReleaseCatCacheList | ( | CatCList * | list | ) |
Definition at line 1776 of file catcache.c.
References Assert(), CatCacheRemoveCList(), CL_MAGIC, CurrentResourceOwner, sort-test::list, and ResourceOwnerForgetCatCacheListRef().
Referenced by AddEnumLabel(), blvalidate(), brinvalidate(), btvalidate(), ginvalidate(), gistvalidate(), hashvalidate(), opclass_for_family_datatype(), RenameEnumLabel(), ResourceOwnerReleaseInternal(), sepgsql_relation_drop(), spgvalidate(), and transformFrameOffset().
|
static |
Definition at line 636 of file catcache.c.
References Assert(), catctup::c_list, CatCacheRemoveCList(), CatCacheRemoveCTup(), catcache::cc_bucket, catcache::cc_lists, catcache::cc_nbuckets, 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 683 of file catcache.c.
References CACHE_elog, CacheHdr, catcacheheader::ch_caches, slist_iter::cur, DEBUG2, ResetCatalogCache(), slist_container, and slist_foreach.
Referenced by InvalidateSystemCachesExtended().
Definition at line 1142 of file catcache.c.
References catcache::cc_nkeys, and SearchCatCacheInternal().
Referenced by SearchSysCache().
Definition at line 1159 of file catcache.c.
References SearchCatCacheInternal().
Referenced by SearchSysCache1().
Definition at line 1167 of file catcache.c.
References SearchCatCacheInternal().
Referenced by SearchSysCache2().
Definition at line 1175 of file catcache.c.
References SearchCatCacheInternal().
Referenced by SearchSysCache3().
Definition at line 1183 of file catcache.c.
References SearchCatCacheInternal().
Referenced by SearchSysCache4().
|
inlinestatic |
Definition at line 1193 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, ResourceOwnerEnlargeCatCacheRefs(), ResourceOwnerRememberCatCacheRef(), SearchCatCacheMiss(), catctup::tuple, and unlikely.
Referenced by SearchCatCache(), SearchCatCache1(), SearchCatCache2(), SearchCatCache3(), and SearchCatCache4().
Definition at line 1501 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_lists, catcache::cc_nbuckets, catcache::cc_nkeys, 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, 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, ResourceOwnerEnlargeCatCacheListRefs(), ResourceOwnerRememberCatCacheListRef(), ScanKeyData::sk_argument, systable_beginscan(), systable_endscan(), systable_getnext(), HeapTupleData::t_self, table_close(), table_open(), and catctup::tuple.
Referenced by SearchSysCacheList().
|
static |
Definition at line 1305 of file catcache.c.
References AccessShareLock, 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, ResourceOwnerEnlargeCatCacheRefs(), ResourceOwnerRememberCatCacheRef(), ScanKeyData::sk_argument, systable_beginscan(), systable_endscan(), systable_getnext(), table_close(), table_open(), and catctup::tuple.
Referenced by SearchCatCacheInternal().
Definition at line 171 of file catcache.c.
References a, b, DatumGetBool(), DirectFunctionCall2Coll(), and texteq().
Referenced by GetCCHashEqFuncs().
Definition at line 181 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().