PostgreSQL Source Code  git master
syscache.c File Reference
#include "postgres.h"
#include "access/htup_details.h"
#include "catalog/pg_db_role_setting_d.h"
#include "catalog/pg_depend_d.h"
#include "catalog/pg_description_d.h"
#include "catalog/pg_seclabel_d.h"
#include "catalog/pg_shdepend_d.h"
#include "catalog/pg_shdescription_d.h"
#include "catalog/pg_shseclabel_d.h"
#include "common/int.h"
#include "lib/qunique.h"
#include "utils/catcache.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/syscache.h"
#include "catalog/syscache_info.h"
Include dependency graph for syscache.c:

Go to the source code of this file.

Data Structures

struct  cachedesc
 

Macros

#define KEY(...)   VA_ARGS_NARGS(__VA_ARGS__), { __VA_ARGS__ }
 

Functions

 StaticAssertDecl (lengthof(cacheinfo)==SysCacheSize, "SysCacheSize does not match syscache.c's array")
 
static int oid_compare (const void *a, const void *b)
 
void InitCatalogCache (void)
 
void InitCatalogCachePhase2 (void)
 
HeapTuple SearchSysCache (int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
 
HeapTuple SearchSysCache1 (int cacheId, Datum key1)
 
HeapTuple SearchSysCache2 (int cacheId, Datum key1, Datum key2)
 
HeapTuple SearchSysCache3 (int cacheId, Datum key1, Datum key2, Datum key3)
 
HeapTuple SearchSysCache4 (int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
 
void ReleaseSysCache (HeapTuple tuple)
 
HeapTuple SearchSysCacheCopy (int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
 
bool SearchSysCacheExists (int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
 
Oid GetSysCacheOid (int cacheId, AttrNumber oidcol, Datum key1, Datum key2, Datum key3, Datum key4)
 
HeapTuple SearchSysCacheAttName (Oid relid, const char *attname)
 
HeapTuple SearchSysCacheCopyAttName (Oid relid, const char *attname)
 
bool SearchSysCacheExistsAttName (Oid relid, const char *attname)
 
HeapTuple SearchSysCacheAttNum (Oid relid, int16 attnum)
 
HeapTuple SearchSysCacheCopyAttNum (Oid relid, int16 attnum)
 
Datum SysCacheGetAttr (int cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull)
 
Datum SysCacheGetAttrNotNull (int cacheId, HeapTuple tup, AttrNumber attributeNumber)
 
uint32 GetSysCacheHashValue (int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
 
struct catclistSearchSysCacheList (int cacheId, int nkeys, Datum key1, Datum key2, Datum key3)
 
void SysCacheInvalidate (int cacheId, uint32 hashValue)
 
bool RelationInvalidatesSnapshotsOnly (Oid relid)
 
bool RelationHasSysCache (Oid relid)
 
bool RelationSupportsSysCache (Oid relid)
 

Variables

static CatCacheSysCache [SysCacheSize]
 
static bool CacheInitialized = false
 
static Oid SysCacheRelationOid [SysCacheSize]
 
static int SysCacheRelationOidSize
 
static Oid SysCacheSupportingRelOid [SysCacheSize *2]
 
static int SysCacheSupportingRelOidSize
 

Macro Definition Documentation

◆ KEY

#define KEY (   ...)    VA_ARGS_NARGS(__VA_ARGS__), { __VA_ARGS__ }

Definition at line 76 of file syscache.c.

Function Documentation

◆ GetSysCacheHashValue()

uint32 GetSysCacheHashValue ( int  cacheId,
Datum  key1,
Datum  key2,
Datum  key3,
Datum  key4 
)

Definition at line 540 of file syscache.c.

545 {
546  if (cacheId < 0 || cacheId >= SysCacheSize ||
547  !PointerIsValid(SysCache[cacheId]))
548  elog(ERROR, "invalid cache ID: %d", cacheId);
549 
550  return GetCatCacheHashValue(SysCache[cacheId], key1, key2, key3, key4);
551 }
#define PointerIsValid(pointer)
Definition: c.h:763
uint32 GetCatCacheHashValue(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4)
Definition: catcache.c:1612
#define ERROR
Definition: elog.h:39
#define elog(elevel,...)
Definition: elog.h:224
static CatCache * SysCache[SysCacheSize]
Definition: syscache.c:83

References elog, ERROR, GetCatCacheHashValue(), PointerIsValid, and SysCache.

◆ GetSysCacheOid()

Oid GetSysCacheOid ( int  cacheId,
AttrNumber  oidcol,
Datum  key1,
Datum  key2,
Datum  key3,
Datum  key4 
)

Definition at line 327 of file syscache.c.

333 {
334  HeapTuple tuple;
335  bool isNull;
336  Oid result;
337 
338  tuple = SearchSysCache(cacheId, key1, key2, key3, key4);
339  if (!HeapTupleIsValid(tuple))
340  return InvalidOid;
341  result = heap_getattr(tuple, oidcol,
342  SysCache[cacheId]->cc_tupdesc,
343  &isNull);
344  Assert(!isNull); /* columns used as oids should never be NULL */
345  ReleaseSysCache(tuple);
346  return result;
347 }
#define Assert(condition)
Definition: c.h:858
#define HeapTupleIsValid(tuple)
Definition: htup.h:78
static Datum heap_getattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
Definition: htup_details.h:792
#define InvalidOid
Definition: postgres_ext.h:36
unsigned int Oid
Definition: postgres_ext.h:31
void ReleaseSysCache(HeapTuple tuple)
Definition: syscache.c:266
HeapTuple SearchSysCache(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
Definition: syscache.c:205

References Assert, heap_getattr(), HeapTupleIsValid, InvalidOid, ReleaseSysCache(), SearchSysCache(), and SysCache.

◆ InitCatalogCache()

void InitCatalogCache ( void  )

Definition at line 107 of file syscache.c.

108 {
109  int cacheId;
110 
112 
114 
115  for (cacheId = 0; cacheId < SysCacheSize; cacheId++)
116  {
117  /*
118  * Assert that every enumeration value defined in syscache.h has been
119  * populated in the cacheinfo array.
120  */
121  Assert(OidIsValid(cacheinfo[cacheId].reloid));
122  Assert(OidIsValid(cacheinfo[cacheId].indoid));
123  /* .nbuckets and .key[] are checked by InitCatCache() */
124 
125  SysCache[cacheId] = InitCatCache(cacheId,
126  cacheinfo[cacheId].reloid,
127  cacheinfo[cacheId].indoid,
128  cacheinfo[cacheId].nkeys,
129  cacheinfo[cacheId].key,
130  cacheinfo[cacheId].nbuckets);
131  if (!PointerIsValid(SysCache[cacheId]))
132  elog(ERROR, "could not initialize cache %u (%d)",
133  cacheinfo[cacheId].reloid, cacheId);
134  /* Accumulate data for OID lists, too */
136  cacheinfo[cacheId].reloid;
138  cacheinfo[cacheId].reloid;
140  cacheinfo[cacheId].indoid;
141  /* see comments for RelationInvalidatesSnapshotsOnly */
142  Assert(!RelationInvalidatesSnapshotsOnly(cacheinfo[cacheId].reloid));
143  }
144 
147 
148  /* Sort and de-dup OID arrays, so we can use binary search. */
150  sizeof(Oid), oid_compare);
153  oid_compare);
154 
156  sizeof(Oid), oid_compare);
159  sizeof(Oid), oid_compare);
160 
161  CacheInitialized = true;
162 }
#define lengthof(array)
Definition: c.h:788
#define OidIsValid(objectId)
Definition: c.h:775
CatCache * InitCatCache(int id, Oid reloid, Oid indexoid, int nkeys, const int *key, int nbuckets)
Definition: catcache.c:827
#define qsort(a, b, c, d)
Definition: port.h:449
static size_t qunique(void *array, size_t elements, size_t width, int(*compare)(const void *, const void *))
Definition: qunique.h:21
static bool CacheInitialized
Definition: syscache.c:85
static int oid_compare(const void *a, const void *b)
Definition: syscache.c:674
static int SysCacheSupportingRelOidSize
Definition: syscache.c:93
static Oid SysCacheRelationOid[SysCacheSize]
Definition: syscache.c:88
static Oid SysCacheSupportingRelOid[SysCacheSize *2]
Definition: syscache.c:92
static int SysCacheRelationOidSize
Definition: syscache.c:89
bool RelationInvalidatesSnapshotsOnly(Oid relid)
Definition: syscache.c:601

References Assert, CacheInitialized, elog, ERROR, InitCatCache(), sort-test::key, lengthof, oid_compare(), OidIsValid, PointerIsValid, qsort, qunique(), RelationInvalidatesSnapshotsOnly(), SysCache, SysCacheRelationOid, SysCacheRelationOidSize, SysCacheSupportingRelOid, and SysCacheSupportingRelOidSize.

Referenced by InitPostgres().

◆ InitCatalogCachePhase2()

void InitCatalogCachePhase2 ( void  )

Definition at line 177 of file syscache.c.

178 {
179  int cacheId;
180 
182 
183  for (cacheId = 0; cacheId < SysCacheSize; cacheId++)
184  InitCatCachePhase2(SysCache[cacheId], true);
185 }
void InitCatCachePhase2(CatCache *cache, bool touch_index)
Definition: catcache.c:1144

References Assert, CacheInitialized, InitCatCachePhase2(), and SysCache.

Referenced by RelationCacheInitializePhase3().

◆ oid_compare()

static int oid_compare ( const void *  a,
const void *  b 
)
static

Definition at line 674 of file syscache.c.

675 {
676  Oid oa = *((const Oid *) a);
677  Oid ob = *((const Oid *) b);
678 
679  return pg_cmp_u32(oa, ob);
680 }
static int pg_cmp_u32(uint32 a, uint32 b)
Definition: int.h:489
int b
Definition: isn.c:70
int a
Definition: isn.c:69

References a, b, and pg_cmp_u32().

Referenced by InitCatalogCache().

◆ RelationHasSysCache()

bool RelationHasSysCache ( Oid  relid)

Definition at line 624 of file syscache.c.

625 {
626  int low = 0,
627  high = SysCacheRelationOidSize - 1;
628 
629  while (low <= high)
630  {
631  int middle = low + (high - low) / 2;
632 
633  if (SysCacheRelationOid[middle] == relid)
634  return true;
635  if (SysCacheRelationOid[middle] < relid)
636  low = middle + 1;
637  else
638  high = middle - 1;
639  }
640 
641  return false;
642 }

References SysCacheRelationOid, and SysCacheRelationOidSize.

Referenced by GetNonHistoricCatalogSnapshot().

◆ RelationInvalidatesSnapshotsOnly()

bool RelationInvalidatesSnapshotsOnly ( Oid  relid)

Definition at line 601 of file syscache.c.

602 {
603  switch (relid)
604  {
605  case DbRoleSettingRelationId:
606  case DependRelationId:
607  case SharedDependRelationId:
608  case DescriptionRelationId:
609  case SharedDescriptionRelationId:
610  case SecLabelRelationId:
611  case SharedSecLabelRelationId:
612  return true;
613  default:
614  break;
615  }
616 
617  return false;
618 }

Referenced by CacheInvalidateHeapTuple(), GetNonHistoricCatalogSnapshot(), and InitCatalogCache().

◆ RelationSupportsSysCache()

bool RelationSupportsSysCache ( Oid  relid)

Definition at line 649 of file syscache.c.

650 {
651  int low = 0,
652  high = SysCacheSupportingRelOidSize - 1;
653 
654  while (low <= high)
655  {
656  int middle = low + (high - low) / 2;
657 
658  if (SysCacheSupportingRelOid[middle] == relid)
659  return true;
660  if (SysCacheSupportingRelOid[middle] < relid)
661  low = middle + 1;
662  else
663  high = middle - 1;
664  }
665 
666  return false;
667 }

References SysCacheSupportingRelOid, and SysCacheSupportingRelOidSize.

Referenced by RelationIdIsInInitFile().

◆ ReleaseSysCache()

void ReleaseSysCache ( HeapTuple  tuple)

Definition at line 266 of file syscache.c.

267 {
268  ReleaseCatCache(tuple);
269 }
void ReleaseCatCache(HeapTuple tuple)
Definition: catcache.c:1573

References ReleaseCatCache().

Referenced by aclitemout(), add_cast_to(), add_function_cost(), AddEnumLabel(), AddRoleMems(), agg_args_support_sendreceive(), AggregateCreate(), AlterDomainValidateConstraint(), AlterEnum(), AlterObjectRename_internal(), AlterOpFamily(), AlterPublicationOptions(), AlterPublicationSchemas(), AlterPublicationTables(), AlterRole(), AlterRoleSet(), AlterSchemaOwner(), AlterSchemaOwner_oid(), AlterStatistics(), AlterTSConfiguration(), AlterTSDictionary(), AlterType(), AlterTypeOwner(), AlterTypeOwner_oid(), AlterTypeRecurse(), amvalidate(), appendFunctionName(), appendOrderBySuffix(), assignOperTypes(), assignProcTypes(), ATAddForeignKeyConstraint(), ATDetachCheckNoForeignKeyRefs(), ATExecAddOf(), ATExecAlterColumnGenericOptions(), ATExecAlterColumnType(), ATExecAlterConstraint(), ATExecChangeOwner(), ATExecCheckNotNull(), ATExecDropColumn(), ATExecDropNotNull(), ATExecSetExpression(), ATExecSetOptions(), ATExecSetRelOptions(), ATExecSetStatistics(), ATPostAlterTypeCleanup(), ATPrepAlterColumnType(), ATPrepSetNotNull(), blvalidate(), brincostestimate(), brinvalidate(), btcostestimate(), btvalidate(), build_coercion_expression(), CacheInvalidateRelcacheByRelid(), call_pltcl_start_proc(), CallStmtResultDesc(), check_amop_signature(), check_amproc_signature(), check_default_text_search_config(), check_enable_rls(), check_for_column_name_collision(), check_hash_func_signature(), check_object_ownership(), check_role(), check_session_authorization(), CheckFunctionValidatorAccess(), CheckIndexCompatible(), CheckMyDatabase(), CloneFkReferenced(), CloneFkReferencing(), coerce_type(), CollationIsVisibleExt(), compatible_oper(), compatible_oper_opid(), compile_plperl_function(), compile_pltcl_function(), compute_return_type(), ComputeIndexAttrs(), ComputePartitionAttrs(), ConstraintSetParentConstraint(), ConstructTupleDescriptor(), ConversionIsVisibleExt(), convert_column_name(), CreateCast(), CreateFunction(), CreateProceduralLanguage(), CreateRole(), CreateSchemaCommand(), CreateStatistics(), CreateTransform(), database_is_invalid_oid(), DefineCollation(), DefineDomain(), DefineIndex(), DefineOpClass(), DefineTSConfiguration(), DefineType(), DeleteRelationTuple(), DeleteSequenceTuple(), deparseOpExpr(), deparseScalarArrayOpExpr(), DetachPartitionFinalize(), do_autovacuum(), do_compile(), do_setval(), DropObjectById(), DropRole(), DropSubscription(), enum_cmp_internal(), enum_in(), enum_out(), enum_recv(), enum_send(), errdatatype(), eval_const_expressions_mutator(), examine_attribute(), examine_simple_variable(), examine_variable(), ExecGrant_Attribute(), ExecGrant_common(), ExecGrant_Parameter(), ExecGrant_Relation(), ExecHashBuildSkewHash(), ExecInitAgg(), ExecuteCallStmt(), ExecuteDoStmt(), expand_all_col_privileges(), expand_vacuum_rel(), fetch_agg_sort_op(), fetch_fp_info(), fillTypeDesc(), find_coercion_pathway(), find_typmod_coercion_function(), fixup_whole_row_references(), flatten_reloptions(), fmgr_c_validator(), fmgr_info_cxt_security(), fmgr_info_other_lang(), fmgr_internal_validator(), fmgr_security_definer(), fmgr_sql_validator(), fmgr_symbol(), format_operator_extended(), format_operator_parts(), format_procedure_extended(), format_procedure_parts(), format_type_extended(), func_get_detail(), func_parallel(), func_strict(), func_volatile(), FuncNameAsType(), FunctionIsVisibleExt(), generate_collation_name(), generate_function_name(), generate_operator_clause(), generate_operator_name(), generate_partition_qual(), generate_qualified_relation_name(), generate_qualified_type_name(), generate_relation_name(), generateClonedExtStatsStmt(), generateClonedIndexStmt(), get_am_name(), get_am_type_oid(), get_array_type(), get_attavgwidth(), get_attgenerated(), get_attname(), get_attnum(), get_attoptions(), get_attribute_options(), get_attstatsslot(), get_atttype(), get_atttypetypmodcoll(), get_base_element_type(), get_collation(), get_collation_isdeterministic(), get_collation_name(), get_commutator(), get_constraint_index(), get_constraint_name(), get_constraint_type(), get_database_name(), get_db_info(), get_default_acl_internal(), get_default_partition_oid(), get_element_type(), get_func_leakproof(), get_func_name(), get_func_namespace(), get_func_nargs(), get_func_prokind(), get_func_result_name(), get_func_retset(), get_func_rettype(), get_func_signature(), get_func_support(), get_func_variadictype(), get_function_rows(), get_index_column_opclass(), get_index_isclustered(), get_index_isreplident(), get_index_isvalid(), get_language_name(), get_multirange_range(), get_namespace_name(), get_negator(), get_object_address_defacl(), get_object_address_opf_member(), get_object_address_type(), get_object_address_usermapping(), get_object_namespace(), get_op_opfamily_properties(), get_op_opfamily_sortfamily(), get_op_opfamily_strategy(), get_op_rettype(), get_opclass(), get_opclass_family(), get_opclass_input_type(), get_opclass_method(), get_opclass_name(), get_opclass_oid(), get_opclass_opfamily_and_input_type(), get_opcode(), get_opfamily_member(), get_opfamily_oid(), get_opfamily_proc(), get_opname(), get_oprjoin(), get_oprrest(), get_partition_bound_spec(), get_publication_name(), get_qual_for_range(), get_range_collation(), get_range_multirange(), get_range_subtype(), get_rel_name(), get_rel_namespace(), get_rel_persistence(), get_rel_relam(), get_rel_relispartition(), get_rel_relkind(), get_rel_tablespace(), get_rel_type_id(), get_relation_statistics(), get_relation_statistics_worker(), get_rewrite_oid(), get_ri_constraint_root(), get_role_password(), get_rolespec_name(), get_rte_attribute_is_dropped(), get_subscription_name(), get_tablespace(), get_transform_fromsql(), get_transform_tosql(), get_typ_typrelid(), get_typbyval(), get_typcollation(), get_typdefault(), get_type_category_preferred(), get_type_io_data(), get_typisdefined(), get_typlen(), get_typlenbyval(), get_typlenbyvalalign(), get_typmodin(), get_typstorage(), get_typsubscript(), get_typtype(), getBaseTypeAndTypmod(), GetFdwRoutineByServerId(), GetForeignColumnOptions(), GetForeignDataWrapperExtended(), GetForeignServerExtended(), GetForeignServerIdByRelId(), GetForeignTable(), GetIndexAmRoutineByAmId(), getObjectDescription(), getObjectIdentityParts(), getOpFamilyDescription(), getOpFamilyIdentity(), getProcedureTypeDescription(), GetPublication(), getPublicationSchemaInfo(), getRelationDescription(), getRelationIdentity(), getRelationTypeDescription(), GetSubscription(), GetSubscriptionRelState(), GetSysCacheOid(), getTypeBinaryInputInfo(), getTypeBinaryOutputInfo(), getTypeInputInfo(), getTypeOutputInfo(), GetUserMapping(), GetUserNameFromId(), ginvalidate(), gistvalidate(), has_bypassrls_privilege(), has_createrole_privilege(), has_rolreplication(), has_subclass(), hash_ok_operator(), hashvalidate(), have_createdb_privilege(), heap_drop_with_catalog(), inclusion_get_strategy_procinfo(), index_check_primary_key(), index_concurrently_create_copy(), index_create(), index_drop(), index_get_partition(), indexam_property(), IndexGetRelation(), IndexSupportsBackwardScan(), init_sql_fcache(), initialize_peragg(), InitializeSessionUserId(), inline_set_returning_function(), InsertRule(), internal_get_result_type(), interpret_function_parameter_list(), IsBinaryCoercibleWithCast(), load_domaintype_info(), load_rangetype_info(), logicalrep_write_tuple(), logicalrep_write_typ(), lookup_collation(), lookup_collation_cache(), lookup_ts_config_cache(), lookup_ts_dictionary_cache(), lookup_ts_parser_cache(), lookup_type_cache(), LookupTypeNameOid(), make_callstmt_target(), make_inh_translation_list(), make_new_heap(), make_op(), make_scalar_array_op(), map_sql_table_to_xmlschema(), map_sql_type_to_xml_name(), minmax_get_strategy_procinfo(), minmax_multi_get_strategy_procinfo(), nextval_internal(), object_aclmask_ext(), object_ownercheck(), op_hashjoinable(), op_input_types(), op_mergejoinable(), OpclassIsVisibleExt(), OperatorGet(), OperatorIsVisibleExt(), OpernameGetOprid(), OpfamilyIsVisibleExt(), ParseFuncOrColumn(), parseTypeString(), pg_attribute_aclcheck_all_ext(), pg_attribute_aclmask_ext(), pg_basetype(), pg_class_aclmask_ext(), pg_collation_actual_version(), pg_database_collation_actual_version(), pg_get_constraintdef_worker(), pg_get_function_arg_default(), pg_get_function_arguments(), pg_get_function_identity_arguments(), pg_get_function_result(), pg_get_function_sqlbody(), pg_get_functiondef(), pg_get_indexdef_worker(), pg_get_partkeydef_worker(), pg_get_statisticsobj_worker(), pg_get_statisticsobjdef_expressions(), pg_get_userbyid(), pg_namespace_aclmask_ext(), pg_newlocale_from_collation(), pg_nextoid(), pg_parameter_acl_aclmask(), pg_parameter_aclmask(), pg_relation_filenode(), pg_relation_filepath(), pg_relation_is_publishable(), pg_sequence_parameters(), pg_type_aclmask_ext(), pgoutput_column_list_init(), pgoutput_row_filter_init(), plperl_validator(), plpgsql_build_datatype(), plpgsql_compile(), plpgsql_parse_cwordtype(), plpgsql_validator(), plpython3_validator(), plsample_func_handler(), plsample_trigger_handler(), PLy_procedure_create(), PLy_procedure_get(), prepare_column_cache(), preprocess_aggref(), preprocessNamespacePath(), print_function_arguments(), ProcedureCreate(), pub_collist_contains_invalid_column(), pub_rf_contains_invalid_column(), RangeVarCallbackForAlterRelation(), RangeVarCallbackForAttachIndex(), RangeVarCallbackForDropRelation(), RangeVarCallbackForPolicy(), RangeVarCallbackForRenameAttribute(), RangeVarCallbackForRenameRule(), RangeVarCallbackForRenameTrigger(), RangeVarCallbackForTruncate(), RangeVarCallbackOwnsRelation(), recordExtObjInitPriv(), refresh_by_match_merge(), regclassout(), regcollationout(), regconfigout(), regdictionaryout(), regoperout(), regprocout(), regtypeout(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), RelationBuildPublicationDesc(), RelationCacheInitializePhase3(), RelationClearMissing(), relationHasPrimaryKey(), RelationInitIndexAccessInfo(), RelationInitTableAccessMethod(), RelationIsVisibleExt(), RelationReloadIndexInfo(), RemoveConstraintById(), removeExtObjInitPriv(), RemoveFunctionById(), RemoveOperatorById(), RemovePartitionKeyByRelId(), RemovePublicationById(), RemovePublicationRelById(), RemovePublicationSchemaById(), RemoveRoleFromInitPriv(), RemoveRoleFromObjectPolicy(), RemoveStatisticsById(), RemoveStatisticsDataById(), RemoveTSConfigurationById(), RemoveTypeById(), rename_constraint_internal(), RenameConstraint(), RenameRole(), replorigin_by_name(), replorigin_by_oid(), replorigin_drop_by_name(), ResetSequence(), ResolveOpClass(), ri_GenerateQualCollation(), ri_LoadConstraintInfo(), roles_is_member_of(), SearchSysCacheAttName(), SearchSysCacheAttNum(), SearchSysCacheCopy(), SearchSysCacheCopyAttName(), SearchSysCacheCopyAttNum(), SearchSysCacheExists(), SearchSysCacheExistsAttName(), sepgsql_proc_setattr(), sepgsql_relation_setattr(), sequence_options(), SetAttrMissing(), SetDefaultACL(), simplify_function(), spgvalidate(), SPI_gettype(), statext_dependencies_load(), statext_expressions_load(), statext_mcv_load(), statext_ndistinct_load(), StatisticsGetRelation(), StatisticsObjIsVisibleExt(), superuser_arg(), transformCallStmt(), transformColumnDefinition(), transformColumnNameList(), transformColumnType(), transformFkeyCheckAttrs(), transformFkeyGetPrimaryKey(), transformOfType(), triggered_change_notification(), tryAttachPartitionForeignKey(), TryReuseForeignKey(), TSConfigIsVisibleExt(), TSDictionaryIsVisibleExt(), TSParserIsVisibleExt(), TSTemplateIsVisibleExt(), TupleDescInitEntry(), typeidTypeRelid(), typeIsOfTypedTable(), TypeIsVisibleExt(), typenameTypeId(), typenameTypeIdAndMod(), typeOrDomainTypeRelid(), update_attstats(), validatePartitionedIndex(), and verify_dictoptions().

◆ SearchSysCache()

HeapTuple SearchSysCache ( int  cacheId,
Datum  key1,
Datum  key2,
Datum  key3,
Datum  key4 
)

Definition at line 205 of file syscache.c.

210 {
211  Assert(cacheId >= 0 && cacheId < SysCacheSize &&
212  PointerIsValid(SysCache[cacheId]));
213 
214  return SearchCatCache(SysCache[cacheId], key1, key2, key3, key4);
215 }
HeapTuple SearchCatCache(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4)
Definition: catcache.c:1261

References Assert, PointerIsValid, SearchCatCache(), and SysCache.

Referenced by GetSysCacheOid(), SearchSysCacheCopy(), and SearchSysCacheExists().

◆ SearchSysCache1()

HeapTuple SearchSysCache1 ( int  cacheId,
Datum  key1 
)

Definition at line 218 of file syscache.c.

220 {
221  Assert(cacheId >= 0 && cacheId < SysCacheSize &&
222  PointerIsValid(SysCache[cacheId]));
223  Assert(SysCache[cacheId]->cc_nkeys == 1);
224 
225  return SearchCatCache1(SysCache[cacheId], key1);
226 }
HeapTuple SearchCatCache1(CatCache *cache, Datum v1)
Definition: catcache.c:1278

References Assert, PointerIsValid, SearchCatCache1(), and SysCache.

Referenced by aclitemout(), add_cast_to(), add_function_cost(), AddRoleMems(), agg_args_support_sendreceive(), AggregateCreate(), AlterDomainValidateConstraint(), AlterEnum(), AlterObjectRename_internal(), AlterOpFamily(), AlterSchemaOwner(), AlterSchemaOwner_oid(), AlterStatistics(), AlterTSDictionary(), AlterTypeOwner_oid(), AlterTypeRecurse(), amvalidate(), appendFunctionName(), appendOrderBySuffix(), assignOperTypes(), assignProcTypes(), ATAddForeignKeyConstraint(), ATDetachCheckNoForeignKeyRefs(), ATExecAlterColumnGenericOptions(), ATExecAlterConstraint(), ATExecChangeOwner(), ATExecDropNotNull(), ATExecSetRelOptions(), ATPostAlterTypeCleanup(), blvalidate(), brinvalidate(), btvalidate(), build_coercion_expression(), CacheInvalidateRelcacheByRelid(), call_pltcl_start_proc(), CallStmtResultDesc(), check_amop_signature(), check_amproc_signature(), check_default_text_search_config(), check_enable_rls(), check_hash_func_signature(), check_object_ownership(), check_role(), check_session_authorization(), CheckFunctionValidatorAccess(), CheckIndexCompatible(), CheckMyDatabase(), CloneFkReferenced(), CloneFkReferencing(), CollationIsVisibleExt(), compile_plperl_function(), compile_pltcl_function(), ComputeIndexAttrs(), ConstraintSetParentConstraint(), ConstructTupleDescriptor(), ConversionIsVisibleExt(), CreateCast(), CreateEventTrigger(), CreateFunction(), CreateProceduralLanguage(), CreateSchemaCommand(), CreateTransform(), database_is_invalid_oid(), DefineCollation(), DefineIndex(), DefineOpClass(), DefineTSConfiguration(), DeleteRelationTuple(), DeleteSequenceTuple(), deparseOpExpr(), deparseScalarArrayOpExpr(), DetachPartitionFinalize(), do_autovacuum(), do_compile(), do_setval(), DropObjectById(), DropRole(), enum_cmp_internal(), enum_out(), enum_send(), errdatatype(), eval_const_expressions_mutator(), ExecGrant_common(), ExecGrant_Parameter(), ExecGrant_Relation(), ExecInitAgg(), ExecuteCallStmt(), ExecuteDoStmt(), expand_vacuum_rel(), fetch_agg_sort_op(), fetch_fp_info(), fillTypeDesc(), fixup_whole_row_references(), flatten_reloptions(), fmgr_c_validator(), fmgr_info_cxt_security(), fmgr_info_other_lang(), fmgr_internal_validator(), fmgr_security_definer(), fmgr_sql_validator(), fmgr_symbol(), format_operator_extended(), format_operator_parts(), format_procedure_extended(), format_procedure_parts(), format_type_extended(), func_get_detail(), func_parallel(), func_strict(), func_volatile(), FunctionIsVisibleExt(), generate_collation_name(), generate_function_name(), generate_operator_clause(), generate_operator_name(), generate_partition_qual(), generate_qualified_relation_name(), generate_qualified_type_name(), generate_relation_name(), generateClonedExtStatsStmt(), generateClonedIndexStmt(), get_am_name(), get_am_type_oid(), get_array_type(), get_attstatsslot(), get_base_element_type(), get_collation(), get_collation_isdeterministic(), get_collation_name(), get_commutator(), get_constraint_index(), get_constraint_name(), get_constraint_type(), get_database_name(), get_db_info(), get_default_partition_oid(), get_element_type(), get_func_leakproof(), get_func_name(), get_func_namespace(), get_func_nargs(), get_func_prokind(), get_func_result_name(), get_func_retset(), get_func_rettype(), get_func_signature(), get_func_support(), get_func_variadictype(), get_function_rows(), get_index_column_opclass(), get_index_isclustered(), get_index_isreplident(), get_index_isvalid(), get_language_name(), get_multirange_range(), get_namespace_name(), get_negator(), get_object_address_defacl(), get_object_address_usermapping(), get_object_namespace(), get_op_rettype(), get_opclass(), get_opclass_family(), get_opclass_input_type(), get_opclass_method(), get_opclass_name(), get_opclass_opfamily_and_input_type(), get_opcode(), get_opname(), get_oprjoin(), get_oprrest(), get_partition_bound_spec(), get_publication_name(), get_qual_for_range(), get_range_collation(), get_range_multirange(), get_range_subtype(), get_rel_name(), get_rel_namespace(), get_rel_persistence(), get_rel_relam(), get_rel_relispartition(), get_rel_relkind(), get_rel_tablespace(), get_rel_type_id(), get_relation_statistics(), get_ri_constraint_root(), get_role_password(), get_rolespec_tuple(), get_subscription_name(), get_tablespace(), get_typ_typrelid(), get_typbyval(), get_typcollation(), get_typdefault(), get_type_category_preferred(), get_type_io_data(), get_typisdefined(), get_typlen(), get_typlenbyval(), get_typlenbyvalalign(), get_typmodin(), get_typstorage(), get_typsubscript(), get_typtype(), getBaseTypeAndTypmod(), GetFdwRoutineByServerId(), GetForeignDataWrapperExtended(), GetForeignServerExtended(), GetForeignServerIdByRelId(), GetForeignTable(), GetIndexAmRoutineByAmId(), getObjectDescription(), getObjectIdentityParts(), getOpFamilyDescription(), getOpFamilyIdentity(), getProcedureTypeDescription(), GetPublication(), getPublicationSchemaInfo(), getRelationDescription(), getRelationIdentity(), getRelationTypeDescription(), GetSubscription(), GetTSConfigTuple(), getTypeBinaryInputInfo(), getTypeBinaryOutputInfo(), getTypeInputInfo(), getTypeOutputInfo(), GetUserNameFromId(), ginvalidate(), gistvalidate(), has_bypassrls_privilege(), has_createrole_privilege(), has_rolreplication(), has_subclass(), hash_ok_operator(), hashvalidate(), have_createdb_privilege(), heap_drop_with_catalog(), index_concurrently_create_copy(), index_create(), index_drop(), index_get_partition(), indexam_property(), IndexGetRelation(), IndexSupportsBackwardScan(), init_sql_fcache(), initialize_peragg(), InitializeSessionUserId(), inline_set_returning_function(), internal_get_result_type(), left_oper(), load_domaintype_info(), load_rangetype_info(), logicalrep_write_tuple(), logicalrep_write_typ(), lookup_collation_cache(), lookup_ts_config_cache(), lookup_ts_dictionary_cache(), lookup_ts_parser_cache(), lookup_type_cache(), LookupTypeNameExtended(), make_callstmt_target(), make_new_heap(), map_sql_table_to_xmlschema(), map_sql_type_to_xml_name(), nextval_internal(), object_aclmask_ext(), object_ownercheck(), op_hashjoinable(), op_input_types(), op_mergejoinable(), OpClassCacheLookup(), OpclassIsVisibleExt(), oper(), OperatorIsVisibleExt(), OpFamilyCacheLookup(), OpfamilyIsVisibleExt(), ParseFuncOrColumn(), pg_attribute_aclcheck_all_ext(), pg_attribute_aclmask_ext(), pg_basetype(), pg_class_aclmask_ext(), pg_collation_actual_version(), pg_database_collation_actual_version(), pg_get_constraintdef_worker(), pg_get_function_arg_default(), pg_get_function_arguments(), pg_get_function_identity_arguments(), pg_get_function_result(), pg_get_function_sqlbody(), pg_get_functiondef(), pg_get_indexdef_worker(), pg_get_partkeydef_worker(), pg_get_statisticsobj_worker(), pg_get_statisticsobjdef_expressions(), pg_get_userbyid(), pg_namespace_aclmask_ext(), pg_newlocale_from_collation(), pg_parameter_acl_aclmask(), pg_parameter_aclmask(), pg_relation_filenode(), pg_relation_filepath(), pg_relation_is_publishable(), pg_sequence_parameters(), pg_type_aclmask_ext(), plperl_validator(), plpgsql_build_datatype(), plpgsql_compile(), plpgsql_parse_cwordtype(), plpgsql_validator(), plpython3_validator(), plsample_func_handler(), plsample_trigger_handler(), PLy_procedure_create(), PLy_procedure_get(), prepare_column_cache(), preprocess_aggref(), preprocessNamespacePath(), print_function_arguments(), RangeVarCallbackForAlterRelation(), RangeVarCallbackForAttachIndex(), RangeVarCallbackForDropRelation(), RangeVarCallbackForPolicy(), RangeVarCallbackForRenameAttribute(), RangeVarCallbackForRenameRule(), RangeVarCallbackForRenameTrigger(), RangeVarCallbackForTruncate(), RangeVarCallbackOwnsRelation(), recordExtObjInitPriv(), refresh_by_match_merge(), regclassout(), regcollationout(), regconfigout(), regdictionaryout(), regoperout(), regprocout(), regtypeout(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), RelationBuildPublicationDesc(), RelationCacheInitializePhase3(), relationHasPrimaryKey(), RelationInitIndexAccessInfo(), RelationInitTableAccessMethod(), RelationIsVisibleExt(), RelationReloadIndexInfo(), RemoveConstraintById(), removeExtObjInitPriv(), RemoveFunctionById(), RemoveOperatorById(), RemovePartitionKeyByRelId(), RemovePublicationById(), RemovePublicationRelById(), RemovePublicationSchemaById(), RemoveRoleFromInitPriv(), RemoveRoleFromObjectPolicy(), RemoveStatisticsById(), RemoveTSConfigurationById(), RemoveTypeById(), rename_constraint_internal(), RenameConstraint(), RenameRole(), replorigin_by_name(), replorigin_by_oid(), replorigin_drop_by_name(), ResetSequence(), ResolveOpClass(), ri_GenerateQualCollation(), ri_LoadConstraintInfo(), roles_is_member_of(), sepgsql_proc_setattr(), sepgsql_relation_setattr(), sequence_options(), simplify_function(), spgvalidate(), SPI_gettype(), StatisticsGetRelation(), StatisticsObjIsVisibleExt(), superuser_arg(), transformCallStmt(), transformFkeyCheckAttrs(), transformFkeyGetPrimaryKey(), triggered_change_notification(), tryAttachPartitionForeignKey(), TryReuseForeignKey(), TSConfigIsVisibleExt(), TSDictionaryIsVisibleExt(), TSParserIsVisibleExt(), TSTemplateIsVisibleExt(), TupleDescInitEntry(), typeidType(), typeidTypeRelid(), typeIsOfTypedTable(), TypeIsVisibleExt(), typeOrDomainTypeRelid(), validatePartitionedIndex(), and verify_dictoptions().

◆ SearchSysCache2()

HeapTuple SearchSysCache2 ( int  cacheId,
Datum  key1,
Datum  key2 
)

Definition at line 229 of file syscache.c.

231 {
232  Assert(cacheId >= 0 && cacheId < SysCacheSize &&
233  PointerIsValid(SysCache[cacheId]));
234  Assert(SysCache[cacheId]->cc_nkeys == 2);
235 
236  return SearchCatCache2(SysCache[cacheId], key1, key2);
237 }
HeapTuple SearchCatCache2(CatCache *cache, Datum v1, Datum v2)
Definition: catcache.c:1286

References Assert, PointerIsValid, SearchCatCache2(), and SysCache.

Referenced by AddEnumLabel(), AlterPublicationOptions(), AlterPublicationSchemas(), AlterPublicationTables(), CastCreate(), check_for_column_name_collision(), convert_column_name(), CreateTransform(), DropSubscription(), enum_in(), enum_recv(), examine_attribute(), ExecGrant_Attribute(), expand_all_col_privileges(), find_coercion_pathway(), find_typmod_coercion_function(), fixup_whole_row_references(), get_attgenerated(), get_attname(), get_attoptions(), get_attribute_options(), get_atttype(), get_atttypetypmodcoll(), get_object_address_usermapping(), get_relation_statistics_worker(), get_rewrite_oid(), get_rte_attribute_is_dropped(), get_transform_fromsql(), get_transform_tosql(), GetForeignColumnOptions(), GetSubscriptionRelState(), GetUserMapping(), index_check_primary_key(), index_concurrently_create_copy(), InsertRule(), IsBinaryCoercibleWithCast(), pg_attribute_aclcheck_all_ext(), pg_attribute_aclmask_ext(), pgoutput_column_list_init(), pgoutput_row_filter_init(), pub_collist_contains_invalid_column(), pub_rf_contains_invalid_column(), recordExtObjInitPriv(), RelationClearMissing(), removeExtObjInitPriv(), RemoveStatisticsDataById(), SearchSysCacheAttName(), SearchSysCacheAttNum(), statext_dependencies_load(), statext_expressions_load(), statext_mcv_load(), and statext_ndistinct_load().

◆ SearchSysCache3()

HeapTuple SearchSysCache3 ( int  cacheId,
Datum  key1,
Datum  key2,
Datum  key3 
)

◆ SearchSysCache4()

HeapTuple SearchSysCache4 ( int  cacheId,
Datum  key1,
Datum  key2,
Datum  key3,
Datum  key4 
)

Definition at line 251 of file syscache.c.

253 {
254  Assert(cacheId >= 0 && cacheId < SysCacheSize &&
255  PointerIsValid(SysCache[cacheId]));
256  Assert(SysCache[cacheId]->cc_nkeys == 4);
257 
258  return SearchCatCache4(SysCache[cacheId], key1, key2, key3, key4);
259 }
HeapTuple SearchCatCache4(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4)
Definition: catcache.c:1302

References Assert, PointerIsValid, SearchCatCache4(), and SysCache.

Referenced by get_object_address_opf_member(), get_opfamily_member(), get_opfamily_proc(), inclusion_get_strategy_procinfo(), minmax_get_strategy_procinfo(), minmax_multi_get_strategy_procinfo(), OperatorGet(), and OpernameGetOprid().

◆ SearchSysCacheAttName()

HeapTuple SearchSysCacheAttName ( Oid  relid,
const char *  attname 
)

Definition at line 359 of file syscache.c.

360 {
361  HeapTuple tuple;
362 
363  tuple = SearchSysCache2(ATTNAME,
364  ObjectIdGetDatum(relid),
366  if (!HeapTupleIsValid(tuple))
367  return NULL;
368  if (((Form_pg_attribute) GETSTRUCT(tuple))->attisdropped)
369  {
370  ReleaseSysCache(tuple);
371  return NULL;
372  }
373  return tuple;
374 }
#define GETSTRUCT(TUP)
Definition: htup_details.h:653
NameData attname
Definition: pg_attribute.h:41
FormData_pg_attribute * Form_pg_attribute
Definition: pg_attribute.h:209
static Datum ObjectIdGetDatum(Oid X)
Definition: postgres.h:252
static Datum CStringGetDatum(const char *X)
Definition: postgres.h:350
HeapTuple SearchSysCache2(int cacheId, Datum key1, Datum key2)
Definition: syscache.c:229

References attname, CStringGetDatum(), GETSTRUCT, HeapTupleIsValid, ObjectIdGetDatum(), ReleaseSysCache(), and SearchSysCache2().

Referenced by ATExecAlterColumnGenericOptions(), ATExecCheckNotNull(), ATExecDropColumn(), ATExecSetExpression(), ATExecSetOptions(), ATExecSetStatistics(), ATPrepAlterColumnType(), ATPrepSetNotNull(), ComputeIndexAttrs(), ComputePartitionAttrs(), CreateStatistics(), get_attnum(), make_inh_translation_list(), pg_nextoid(), plpgsql_parse_cwordtype(), SearchSysCacheCopyAttName(), SearchSysCacheExistsAttName(), SetAttrMissing(), and transformColumnNameList().

◆ SearchSysCacheAttNum()

HeapTuple SearchSysCacheAttNum ( Oid  relid,
int16  attnum 
)

Definition at line 422 of file syscache.c.

423 {
424  HeapTuple tuple;
425 
426  tuple = SearchSysCache2(ATTNUM,
427  ObjectIdGetDatum(relid),
429  if (!HeapTupleIsValid(tuple))
430  return NULL;
431  if (((Form_pg_attribute) GETSTRUCT(tuple))->attisdropped)
432  {
433  ReleaseSysCache(tuple);
434  return NULL;
435  }
436  return tuple;
437 }
int16 attnum
Definition: pg_attribute.h:74
static Datum Int16GetDatum(int16 X)
Definition: postgres.h:172

References attnum, GETSTRUCT, HeapTupleIsValid, Int16GetDatum(), ObjectIdGetDatum(), ReleaseSysCache(), and SearchSysCache2().

Referenced by ATExecSetStatistics(), and SearchSysCacheCopyAttNum().

◆ SearchSysCacheCopy()

HeapTuple SearchSysCacheCopy ( int  cacheId,
Datum  key1,
Datum  key2,
Datum  key3,
Datum  key4 
)

Definition at line 280 of file syscache.c.

285 {
286  HeapTuple tuple,
287  newtuple;
288 
289  tuple = SearchSysCache(cacheId, key1, key2, key3, key4);
290  if (!HeapTupleIsValid(tuple))
291  return tuple;
292  newtuple = heap_copytuple(tuple);
293  ReleaseSysCache(tuple);
294  return newtuple;
295 }
HeapTuple heap_copytuple(HeapTuple tuple)
Definition: heaptuple.c:776

References heap_copytuple(), HeapTupleIsValid, ReleaseSysCache(), and SearchSysCache().

◆ SearchSysCacheCopyAttName()

HeapTuple SearchSysCacheCopyAttName ( Oid  relid,
const char *  attname 
)

Definition at line 382 of file syscache.c.

383 {
384  HeapTuple tuple,
385  newtuple;
386 
387  tuple = SearchSysCacheAttName(relid, attname);
388  if (!HeapTupleIsValid(tuple))
389  return tuple;
390  newtuple = heap_copytuple(tuple);
391  ReleaseSysCache(tuple);
392  return newtuple;
393 }
HeapTuple SearchSysCacheAttName(Oid relid, const char *attname)
Definition: syscache.c:359

References attname, heap_copytuple(), HeapTupleIsValid, ReleaseSysCache(), and SearchSysCacheAttName().

Referenced by ATExecAddColumn(), ATExecAddIdentity(), ATExecAlterColumnType(), ATExecDropColumn(), ATExecDropExpression(), ATExecDropIdentity(), ATExecDropNotNull(), ATExecSetCompression(), ATExecSetIdentity(), ATExecSetNotNull(), ATExecSetStorage(), ATPrepDropExpression(), MergeAttributesIntoExisting(), and renameatt_internal().

◆ SearchSysCacheCopyAttNum()

HeapTuple SearchSysCacheCopyAttNum ( Oid  relid,
int16  attnum 
)

Definition at line 445 of file syscache.c.

446 {
447  HeapTuple tuple,
448  newtuple;
449 
450  tuple = SearchSysCacheAttNum(relid, attnum);
451  if (!HeapTupleIsValid(tuple))
452  return NULL;
453  newtuple = heap_copytuple(tuple);
454  ReleaseSysCache(tuple);
455  return newtuple;
456 }
HeapTuple SearchSysCacheAttNum(Oid relid, int16 attnum)
Definition: syscache.c:422

References attnum, heap_copytuple(), HeapTupleIsValid, ReleaseSysCache(), and SearchSysCacheAttNum().

Referenced by SetIndexStorageProperties().

◆ SearchSysCacheExists()

bool SearchSysCacheExists ( int  cacheId,
Datum  key1,
Datum  key2,
Datum  key3,
Datum  key4 
)

Definition at line 304 of file syscache.c.

309 {
310  HeapTuple tuple;
311 
312  tuple = SearchSysCache(cacheId, key1, key2, key3, key4);
313  if (!HeapTupleIsValid(tuple))
314  return false;
315  ReleaseSysCache(tuple);
316  return true;
317 }

References HeapTupleIsValid, ReleaseSysCache(), and SearchSysCache().

◆ SearchSysCacheExistsAttName()

bool SearchSysCacheExistsAttName ( Oid  relid,
const char *  attname 
)

Definition at line 401 of file syscache.c.

402 {
403  HeapTuple tuple;
404 
405  tuple = SearchSysCacheAttName(relid, attname);
406  if (!HeapTupleIsValid(tuple))
407  return false;
408  ReleaseSysCache(tuple);
409  return true;
410 }

References attname, HeapTupleIsValid, ReleaseSysCache(), and SearchSysCacheAttName().

Referenced by RemoveInheritance().

◆ SearchSysCacheList()

struct catclist* SearchSysCacheList ( int  cacheId,
int  nkeys,
Datum  key1,
Datum  key2,
Datum  key3 
)

Definition at line 557 of file syscache.c.

559 {
560  if (cacheId < 0 || cacheId >= SysCacheSize ||
561  !PointerIsValid(SysCache[cacheId]))
562  elog(ERROR, "invalid cache ID: %d", cacheId);
563 
564  return SearchCatCacheList(SysCache[cacheId], nkeys,
565  key1, key2, key3);
566 }
CatCList * SearchCatCacheList(CatCache *cache, int nkeys, Datum v1, Datum v2, Datum v3)
Definition: catcache.c:1646

References elog, ERROR, catclist::nkeys, PointerIsValid, SearchCatCacheList(), and SysCache.

◆ StaticAssertDecl()

StaticAssertDecl ( lengthof(cacheinfo)  = =SysCacheSize,
"SysCacheSize does not match syscache.c's array"   
)

◆ SysCacheGetAttr()

Datum SysCacheGetAttr ( int  cacheId,
HeapTuple  tup,
AttrNumber  attributeNumber,
bool isNull 
)

Definition at line 479 of file syscache.c.

482 {
483  /*
484  * We just need to get the TupleDesc out of the cache entry, and then we
485  * can apply heap_getattr(). Normally the cache control data is already
486  * valid (because the caller recently fetched the tuple via this same
487  * cache), but there are cases where we have to initialize the cache here.
488  */
489  if (cacheId < 0 || cacheId >= SysCacheSize ||
490  !PointerIsValid(SysCache[cacheId]))
491  elog(ERROR, "invalid cache ID: %d", cacheId);
492  if (!PointerIsValid(SysCache[cacheId]->cc_tupdesc))
493  {
494  InitCatCachePhase2(SysCache[cacheId], false);
495  Assert(PointerIsValid(SysCache[cacheId]->cc_tupdesc));
496  }
497 
498  return heap_getattr(tup, attributeNumber,
499  SysCache[cacheId]->cc_tupdesc,
500  isNull);
501 }

References Assert, elog, ERROR, heap_getattr(), InitCatCachePhase2(), PointerIsValid, and SysCache.

Referenced by AlterCollation(), AlterForeignDataWrapper(), AlterForeignServer(), AlterFunction(), AlterPublicationTables(), AlterRole(), AlterSchemaOwner_internal(), AlterTSDictionary(), AlterUserMapping(), ATExecAlterColumnGenericOptions(), ATExecChangeOwner(), ATExecGenericOptions(), ATExecSetOptions(), ATExecSetRelOptions(), build_function_result_tupdesc_t(), CheckMyDatabase(), compile_plperl_function(), DeconstructFkConstraintRow(), DefineCollation(), DefineDomain(), DropSubscription(), examine_attribute(), ExecGrant_Attribute(), ExecGrant_common(), ExecGrant_Parameter(), ExecGrant_Relation(), ExecInitAgg(), expand_function_arguments(), fetch_statentries_for_relation(), flatten_reloptions(), fmgr_security_definer(), fmgr_sql_validator(), FuncnameGetCandidates(), generate_partition_qual(), generateClonedExtStatsStmt(), generateClonedIndexStmt(), get_attoptions(), get_attribute_options(), get_db_info(), get_default_acl_internal(), get_func_arg_info(), get_func_trftypes(), get_partition_bound_spec(), get_relation_statistics(), get_role_password(), get_tablespace(), get_typdefault(), GetForeignColumnOptions(), GetForeignDataWrapperExtended(), GetForeignServerExtended(), GetForeignTable(), GetSubscription(), GetSubscriptionRelations(), GetSubscriptionRelState(), GetUserMapping(), index_concurrently_create_copy(), init_sql_fcache(), initialize_peragg(), inline_function(), inline_set_returning_function(), lookup_ts_dictionary_cache(), make_new_heap(), MatchNamedCall(), object_aclmask_ext(), pg_attribute_aclcheck_all_ext(), pg_attribute_aclmask_ext(), pg_class_aclmask_ext(), pg_get_constraintdef_worker(), pg_get_function_arg_default(), pg_get_function_sqlbody(), pg_get_functiondef(), pg_get_publication_tables(), pg_namespace_aclmask_ext(), pg_newlocale_from_collation(), pg_parameter_acl_aclmask(), pg_parameter_aclmask(), pg_type_aclmask_ext(), pgoutput_column_list_init(), pgoutput_row_filter_init(), plsample_func_handler(), plsample_trigger_handler(), PLy_procedure_create(), prepare_sql_fn_parse_info(), preprocess_aggref(), print_function_arguments(), ProcedureCreate(), pub_collist_contains_invalid_column(), pub_rf_contains_invalid_column(), recordExtObjInitPriv(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), SetDefaultACL(), statext_dependencies_load(), statext_expressions_load(), statext_mcv_load(), statext_ndistinct_load(), StorePartitionBound(), SysCacheGetAttrNotNull(), and transformCallStmt().

◆ SysCacheGetAttrNotNull()

Datum SysCacheGetAttrNotNull ( int  cacheId,
HeapTuple  tup,
AttrNumber  attributeNumber 
)

Definition at line 510 of file syscache.c.

512 {
513  bool isnull;
514  Datum attr;
515 
516  attr = SysCacheGetAttr(cacheId, tup, attributeNumber, &isnull);
517 
518  if (isnull)
519  {
520  elog(ERROR,
521  "unexpected null value in cached tuple for catalog %s column %s",
522  get_rel_name(cacheinfo[cacheId].reloid),
523  NameStr(TupleDescAttr(SysCache[cacheId]->cc_tupdesc, attributeNumber - 1)->attname));
524  }
525 
526  return attr;
527 }
#define NameStr(name)
Definition: c.h:746
char * get_rel_name(Oid relid)
Definition: lsyscache.c:1928
uintptr_t Datum
Definition: postgres.h:64
Datum SysCacheGetAttr(int cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull)
Definition: syscache.c:479
#define TupleDescAttr(tupdesc, i)
Definition: tupdesc.h:92

References attname, elog, ERROR, get_rel_name(), NameStr, SysCache, SysCacheGetAttr(), and TupleDescAttr.

Referenced by AlterCollation(), AlterDomainValidateConstraint(), ATExecValidateConstraint(), build_function_result_tupdesc_t(), build_replindex_scan_key(), CheckIndexCompatible(), CheckMyDatabase(), compile_plperl_function(), compile_pltcl_function(), DeconstructFkConstraintRow(), do_compile(), DropSubscription(), ExecGrant_common(), ExecGrant_Parameter(), fetch_function_defaults(), fetch_statentries_for_relation(), fmgr_c_validator(), fmgr_info_C_lang(), fmgr_info_cxt_security(), fmgr_internal_validator(), fmgr_sql_validator(), fmgr_symbol(), func_get_detail(), generateClonedExtStatsStmt(), generateClonedIndexStmt(), get_attstatsslot(), get_db_info(), get_func_result_name(), get_index_column_opclass(), get_object_namespace(), get_qual_for_range(), getObjectDescription(), getObjectIdentityParts(), GetSubscription(), inclusion_get_strategy_procinfo(), index_concurrently_create_copy(), index_opclass_options(), init_sql_fcache(), inline_function(), inline_set_returning_function(), lookup_collation_cache(), minmax_get_strategy_procinfo(), minmax_multi_get_strategy_procinfo(), object_aclmask_ext(), object_ownercheck(), pg_collation_actual_version(), pg_database_collation_actual_version(), pg_get_constraintdef_worker(), pg_get_functiondef(), pg_get_indexdef_worker(), pg_get_partkeydef_worker(), pg_get_statisticsobj_worker(), pg_get_statisticsobjdef_expressions(), pg_newlocale_from_collation(), PLy_procedure_create(), print_function_sqlbody(), ProcedureCreate(), refresh_by_match_merge(), RelationBuildPartitionKey(), RemoveRoleFromInitPriv(), test_indoption(), transformFkeyCheckAttrs(), transformFkeyGetPrimaryKey(), transformIndexConstraint(), and TryReuseForeignKey().

◆ SysCacheInvalidate()

void SysCacheInvalidate ( int  cacheId,
uint32  hashValue 
)

Definition at line 577 of file syscache.c.

578 {
579  if (cacheId < 0 || cacheId >= SysCacheSize)
580  elog(ERROR, "invalid cache ID: %d", cacheId);
581 
582  /* if this cache isn't initialized yet, no need to do anything */
583  if (!PointerIsValid(SysCache[cacheId]))
584  return;
585 
586  CatCacheInvalidate(SysCache[cacheId], hashValue);
587 }
void CatCacheInvalidate(CatCache *cache, uint32 hashValue)
Definition: catcache.c:606

References CatCacheInvalidate(), elog, ERROR, PointerIsValid, and SysCache.

Referenced by LocalExecuteInvalidationMessage().

Variable Documentation

◆ CacheInitialized

bool CacheInitialized = false
static

Definition at line 85 of file syscache.c.

Referenced by InitCatalogCache(), and InitCatalogCachePhase2().

◆ SysCache

◆ SysCacheRelationOid

Oid SysCacheRelationOid[SysCacheSize]
static

Definition at line 88 of file syscache.c.

Referenced by InitCatalogCache(), and RelationHasSysCache().

◆ SysCacheRelationOidSize

int SysCacheRelationOidSize
static

Definition at line 89 of file syscache.c.

Referenced by InitCatalogCache(), and RelationHasSysCache().

◆ SysCacheSupportingRelOid

Oid SysCacheSupportingRelOid[SysCacheSize *2]
static

Definition at line 92 of file syscache.c.

Referenced by InitCatalogCache(), and RelationSupportsSysCache().

◆ SysCacheSupportingRelOidSize

int SysCacheSupportingRelOidSize
static

Definition at line 93 of file syscache.c.

Referenced by InitCatalogCache(), and RelationSupportsSysCache().