PostgreSQL Source Code  git master
syscache.c File Reference
#include "postgres.h"
#include "access/htup_details.h"
#include "access/sysattr.h"
#include "catalog/pg_aggregate.h"
#include "catalog/pg_am.h"
#include "catalog/pg_amop.h"
#include "catalog/pg_amproc.h"
#include "catalog/pg_auth_members.h"
#include "catalog/pg_authid.h"
#include "catalog/pg_cast.h"
#include "catalog/pg_collation.h"
#include "catalog/pg_constraint.h"
#include "catalog/pg_conversion.h"
#include "catalog/pg_database.h"
#include "catalog/pg_db_role_setting.h"
#include "catalog/pg_default_acl.h"
#include "catalog/pg_depend.h"
#include "catalog/pg_description.h"
#include "catalog/pg_enum.h"
#include "catalog/pg_event_trigger.h"
#include "catalog/pg_foreign_data_wrapper.h"
#include "catalog/pg_foreign_server.h"
#include "catalog/pg_foreign_table.h"
#include "catalog/pg_language.h"
#include "catalog/pg_namespace.h"
#include "catalog/pg_opclass.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_opfamily.h"
#include "catalog/pg_parameter_acl.h"
#include "catalog/pg_partitioned_table.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_publication.h"
#include "catalog/pg_publication_namespace.h"
#include "catalog/pg_publication_rel.h"
#include "catalog/pg_range.h"
#include "catalog/pg_replication_origin.h"
#include "catalog/pg_rewrite.h"
#include "catalog/pg_seclabel.h"
#include "catalog/pg_sequence.h"
#include "catalog/pg_shdepend.h"
#include "catalog/pg_shdescription.h"
#include "catalog/pg_shseclabel.h"
#include "catalog/pg_statistic.h"
#include "catalog/pg_statistic_ext.h"
#include "catalog/pg_statistic_ext_data.h"
#include "catalog/pg_subscription.h"
#include "catalog/pg_subscription_rel.h"
#include "catalog/pg_tablespace.h"
#include "catalog/pg_transform.h"
#include "catalog/pg_ts_config.h"
#include "catalog/pg_ts_config_map.h"
#include "catalog/pg_ts_dict.h"
#include "catalog/pg_ts_parser.h"
#include "catalog/pg_ts_template.h"
#include "catalog/pg_type.h"
#include "catalog/pg_user_mapping.h"
#include "lib/qunique.h"
#include "utils/catcache.h"
#include "utils/rel.h"
#include "utils/syscache.h"
Include dependency graph for syscache.c:

Go to the source code of this file.

Data Structures

struct  cachedesc
 

Functions

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)
 
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 const struct cachedesc cacheinfo []
 
static CatCacheSysCache [SysCacheSize]
 
static bool CacheInitialized = false
 
static Oid SysCacheRelationOid [SysCacheSize]
 
static int SysCacheRelationOidSize
 
static Oid SysCacheSupportingRelOid [SysCacheSize *2]
 
static int SysCacheSupportingRelOidSize
 

Function Documentation

◆ GetSysCacheHashValue()

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

Definition at line 1469 of file syscache.c.

1474 {
1475  if (cacheId < 0 || cacheId >= SysCacheSize ||
1476  !PointerIsValid(SysCache[cacheId]))
1477  elog(ERROR, "invalid cache ID: %d", cacheId);
1478 
1479  return GetCatCacheHashValue(SysCache[cacheId], key1, key2, key3, key4);
1480 }
#define PointerIsValid(pointer)
Definition: c.h:698
uint32 GetCatCacheHashValue(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4)
Definition: catcache.c:1468
#define ERROR
Definition: elog.h:33
#define elog(elevel,...)
Definition: elog.h:218
static CatCache * SysCache[SysCacheSize]
Definition: syscache.c:1043
#define SysCacheSize
Definition: syscache.h:118

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

◆ GetSysCacheOid()

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

Definition at line 1282 of file syscache.c.

1288 {
1289  HeapTuple tuple;
1290  bool isNull;
1291  Oid result;
1292 
1293  tuple = SearchSysCache(cacheId, key1, key2, key3, key4);
1294  if (!HeapTupleIsValid(tuple))
1295  return InvalidOid;
1296  result = heap_getattr(tuple, oidcol,
1297  SysCache[cacheId]->cc_tupdesc,
1298  &isNull);
1299  Assert(!isNull); /* columns used as oids should never be NULL */
1300  ReleaseSysCache(tuple);
1301  return result;
1302 }
#define HeapTupleIsValid(tuple)
Definition: htup.h:78
static Datum heap_getattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
Definition: htup_details.h:788
Assert(fmt[strlen(fmt) - 1] !='\n')
#define InvalidOid
Definition: postgres_ext.h:36
unsigned int Oid
Definition: postgres_ext.h:31
void ReleaseSysCache(HeapTuple tuple)
Definition: syscache.c:1221
HeapTuple SearchSysCache(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
Definition: syscache.c:1160

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

◆ InitCatalogCache()

void InitCatalogCache ( void  )

Definition at line 1067 of file syscache.c.

1068 {
1069  int cacheId;
1070 
1072  "SysCacheSize does not match syscache.c's array");
1073 
1075 
1077 
1078  for (cacheId = 0; cacheId < SysCacheSize; cacheId++)
1079  {
1080  SysCache[cacheId] = InitCatCache(cacheId,
1081  cacheinfo[cacheId].reloid,
1082  cacheinfo[cacheId].indoid,
1083  cacheinfo[cacheId].nkeys,
1084  cacheinfo[cacheId].key,
1085  cacheinfo[cacheId].nbuckets);
1086  if (!PointerIsValid(SysCache[cacheId]))
1087  elog(ERROR, "could not initialize cache %u (%d)",
1088  cacheinfo[cacheId].reloid, cacheId);
1089  /* Accumulate data for OID lists, too */
1091  cacheinfo[cacheId].reloid;
1093  cacheinfo[cacheId].reloid;
1095  cacheinfo[cacheId].indoid;
1096  /* see comments for RelationInvalidatesSnapshotsOnly */
1098  }
1099 
1102 
1103  /* Sort and de-dup OID arrays, so we can use binary search. */
1105  sizeof(Oid), oid_compare);
1108  oid_compare);
1109 
1111  sizeof(Oid), oid_compare);
1114  sizeof(Oid), oid_compare);
1115 
1116  CacheInitialized = true;
1117 }
#define lengthof(array)
Definition: c.h:734
#define StaticAssertStmt(condition, errmessage)
Definition: c.h:918
CatCache * InitCatCache(int id, Oid reloid, Oid indexoid, int nkeys, const int *key, int nbuckets)
Definition: catcache.c:757
void pg_qsort(void *base, size_t nel, size_t elsize, int(*cmp)(const void *, const void *))
static size_t qunique(void *array, size_t elements, size_t width, int(*compare)(const void *, const void *))
Definition: qunique.h:21
Oid indoid
Definition: syscache.c:119
Oid reloid
Definition: syscache.c:118
static const struct cachedesc cacheinfo[]
Definition: syscache.c:125
static bool CacheInitialized
Definition: syscache.c:1045
static int oid_compare(const void *a, const void *b)
Definition: syscache.c:1603
static int SysCacheSupportingRelOidSize
Definition: syscache.c:1053
static Oid SysCacheRelationOid[SysCacheSize]
Definition: syscache.c:1048
static Oid SysCacheSupportingRelOid[SysCacheSize *2]
Definition: syscache.c:1052
static int SysCacheRelationOidSize
Definition: syscache.c:1049
bool RelationInvalidatesSnapshotsOnly(Oid relid)
Definition: syscache.c:1530

References Assert(), cacheinfo, CacheInitialized, elog, ERROR, cachedesc::indoid, InitCatCache(), sort-test::key, lengthof, cachedesc::nbuckets, cachedesc::nkeys, oid_compare(), pg_qsort(), PointerIsValid, qunique(), RelationInvalidatesSnapshotsOnly(), cachedesc::reloid, StaticAssertStmt, SysCache, SysCacheRelationOid, SysCacheRelationOidSize, SysCacheSize, SysCacheSupportingRelOid, and SysCacheSupportingRelOidSize.

Referenced by InitPostgres().

◆ InitCatalogCachePhase2()

void InitCatalogCachePhase2 ( void  )

Definition at line 1132 of file syscache.c.

1133 {
1134  int cacheId;
1135 
1137 
1138  for (cacheId = 0; cacheId < SysCacheSize; cacheId++)
1139  InitCatCachePhase2(SysCache[cacheId], true);
1140 }
void InitCatCachePhase2(CatCache *cache, bool touch_index)
Definition: catcache.c:1026

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

Referenced by RelationCacheInitializePhase3().

◆ oid_compare()

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

Definition at line 1603 of file syscache.c.

1604 {
1605  Oid oa = *((const Oid *) a);
1606  Oid ob = *((const Oid *) b);
1607 
1608  if (oa == ob)
1609  return 0;
1610  return (oa > ob) ? 1 : -1;
1611 }
int b
Definition: isn.c:70
int a
Definition: isn.c:69

References a, and b.

Referenced by InitCatalogCache().

◆ RelationHasSysCache()

bool RelationHasSysCache ( Oid  relid)

Definition at line 1553 of file syscache.c.

1554 {
1555  int low = 0,
1556  high = SysCacheRelationOidSize - 1;
1557 
1558  while (low <= high)
1559  {
1560  int middle = low + (high - low) / 2;
1561 
1562  if (SysCacheRelationOid[middle] == relid)
1563  return true;
1564  if (SysCacheRelationOid[middle] < relid)
1565  low = middle + 1;
1566  else
1567  high = middle - 1;
1568  }
1569 
1570  return false;
1571 }

References SysCacheRelationOid, and SysCacheRelationOidSize.

Referenced by GetNonHistoricCatalogSnapshot().

◆ RelationInvalidatesSnapshotsOnly()

bool RelationInvalidatesSnapshotsOnly ( Oid  relid)

Definition at line 1530 of file syscache.c.

1531 {
1532  switch (relid)
1533  {
1534  case DbRoleSettingRelationId:
1535  case DependRelationId:
1536  case SharedDependRelationId:
1537  case DescriptionRelationId:
1538  case SharedDescriptionRelationId:
1539  case SecLabelRelationId:
1540  case SharedSecLabelRelationId:
1541  return true;
1542  default:
1543  break;
1544  }
1545 
1546  return false;
1547 }

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

◆ RelationSupportsSysCache()

bool RelationSupportsSysCache ( Oid  relid)

Definition at line 1578 of file syscache.c.

1579 {
1580  int low = 0,
1581  high = SysCacheSupportingRelOidSize - 1;
1582 
1583  while (low <= high)
1584  {
1585  int middle = low + (high - low) / 2;
1586 
1587  if (SysCacheSupportingRelOid[middle] == relid)
1588  return true;
1589  if (SysCacheSupportingRelOid[middle] < relid)
1590  low = middle + 1;
1591  else
1592  high = middle - 1;
1593  }
1594 
1595  return false;
1596 }

References SysCacheSupportingRelOid, and SysCacheSupportingRelOidSize.

Referenced by RelationIdIsInInitFile().

◆ ReleaseSysCache()

void ReleaseSysCache ( HeapTuple  tuple)

Definition at line 1221 of file syscache.c.

1222 {
1223  ReleaseCatCache(tuple);
1224 }
void ReleaseCatCache(HeapTuple tuple)
Definition: catcache.c:1436

References ReleaseCatCache().

Referenced by aclitemout(), add_cast_to(), add_function_cost(), AddEnumLabel(), AddRoleMems(), AggregateCreate(), AlterDomainValidateConstraint(), AlterEnum(), AlterObjectRename_internal(), AlterOpFamily(), AlterPublicationOptions(), AlterPublicationTables(), AlterRole(), AlterRoleSet(), AlterSchemaOwner(), AlterSchemaOwner_oid(), AlterStatistics(), AlterTSConfiguration(), AlterTSDictionary(), AlterType(), AlterTypeOwner(), AlterTypeOwner_oid(), AlterTypeRecurse(), amvalidate(), appendFunctionName(), appendOrderBySuffix(), assignOperTypes(), assignProcTypes(), ATAddForeignKeyConstraint(), ATDetachCheckNoForeignKeyRefs(), ATExecAddColumn(), ATExecAddOf(), ATExecAlterColumnGenericOptions(), ATExecAlterColumnType(), ATExecAlterConstraint(), ATExecChangeOwner(), ATExecCheckNotNull(), ATExecDropColumn(), ATExecDropNotNull(), ATExecSetOptions(), ATExecSetRelOptions(), ATPostAlterTypeCleanup(), ATPrepAlterColumnType(), ATPrepSetNotNull(), blvalidate(), brincostestimate(), brinvalidate(), btcostestimate(), btvalidate(), build_coercion_expression(), CacheInvalidateRelcacheByRelid(), call_pltcl_start_proc(), CallStmtResultDesc(), check_amop_signature(), check_amproc_signature(), check_enable_rls(), check_for_column_name_collision(), check_hash_func_signature(), check_object_ownership(), check_role(), check_session_authorization(), check_TSCurrentConfig(), CheckFunctionValidatorAccess(), CheckIndexCompatible(), CheckMyDatabase(), CloneFkReferenced(), CloneFkReferencing(), coerce_type(), CollationIsVisible(), compatible_oper(), compatible_oper_opid(), compile_plperl_function(), compile_pltcl_function(), compute_return_type(), ComputeIndexAttrs(), ComputePartitionAttrs(), ConstraintSetParentConstraint(), ConstructTupleDescriptor(), ConversionIsVisible(), convert_column_name(), CreateCast(), CreateFunction(), CreateProceduralLanguage(), CreateRole(), CreateSchemaCommand(), CreateStatistics(), CreateTransform(), DefineCollation(), DefineDomain(), DefineIndex(), DefineOpClass(), DefineTSConfiguration(), DefineType(), DeleteRelationTuple(), DeleteSequenceTuple(), DelRoleMems(), deparseOpExpr(), deparseScalarArrayOpExpr(), DetachPartitionFinalize(), do_autovacuum(), do_compile(), do_setval(), dropdb(), DropObjectById(), DropRole(), DropSubscription(), enum_cmp_internal(), enum_in(), enum_out(), enum_recv(), enum_send(), errdatatype(), eval_const_expressions_mutator(), examine_simple_variable(), examine_variable(), ExecGrant_Attribute(), ExecGrant_Database(), ExecGrant_Fdw(), ExecGrant_ForeignServer(), ExecGrant_Function(), ExecGrant_Language(), ExecGrant_Namespace(), ExecGrant_Parameter(), ExecGrant_Relation(), ExecGrant_Tablespace(), ExecGrant_Type(), 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(), FunctionIsVisible(), 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_attstattarget(), 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_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_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_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_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_rolinherit(), 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(), IsBinaryCoercible(), 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(), op_hashjoinable(), op_input_types(), op_mergejoinable(), OpclassIsVisible(), OperatorGet(), OperatorIsVisible(), OpernameGetOprid(), OpfamilyIsVisible(), ParseFuncOrColumn(), parseTypeString(), pg_attribute_aclcheck_all(), pg_attribute_aclmask_ext(), pg_class_aclmask_ext(), pg_class_ownercheck(), pg_collation_actual_version(), pg_collation_ownercheck(), pg_conversion_ownercheck(), pg_database_aclmask(), pg_database_collation_actual_version(), pg_database_ownercheck(), pg_event_trigger_ownercheck(), pg_foreign_data_wrapper_aclmask(), pg_foreign_data_wrapper_ownercheck(), pg_foreign_server_aclmask(), pg_foreign_server_ownercheck(), 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_language_aclmask(), pg_language_ownercheck(), pg_namespace_aclmask(), pg_namespace_ownercheck(), pg_newlocale_from_collation(), pg_nextoid(), pg_opclass_ownercheck(), pg_oper_ownercheck(), pg_opfamily_ownercheck(), pg_parameter_acl_aclmask(), pg_parameter_aclmask(), pg_proc_aclmask(), pg_proc_ownercheck(), pg_publication_ownercheck(), pg_relation_filenode(), pg_relation_filepath(), pg_relation_is_publishable(), pg_sequence_parameters(), pg_statistics_object_ownercheck(), pg_subscription_ownercheck(), pg_tablespace_aclmask(), pg_tablespace_ownercheck(), pg_ts_config_ownercheck(), pg_ts_dict_ownercheck(), pg_type_aclmask(), pg_type_ownercheck(), pgoutput_column_list_init(), pgoutput_row_filter_init(), plperl_validator(), plpgsql_build_datatype(), plpgsql_compile(), plpgsql_parse_cwordtype(), plpgsql_parse_wordtype(), plpgsql_validator(), plpython3_validator(), plsample_func_handler(), plsample_trigger_handler(), PLy_procedure_create(), PLy_procedure_get(), prepare_column_cache(), preprocess_aggref(), print_function_arguments(), ProcedureCreate(), pub_collist_contains_invalid_column(), pub_rf_contains_invalid_column(), RangeVarCallbackForAlterRelation(), RangeVarCallbackForAttachIndex(), RangeVarCallbackForDropRelation(), RangeVarCallbackForPolicy(), RangeVarCallbackForRenameAttribute(), RangeVarCallbackForRenameRule(), RangeVarCallbackForRenameTrigger(), RangeVarCallbackForTruncate(), RangeVarCallbackOwnsRelation(), recomputeNamespacePath(), recordExtObjInitPriv(), refresh_by_match_merge(), regclassout(), regcollationout(), regconfigout(), regdictionaryout(), regoperout(), regprocout(), regtypeout(), relation_mark_replica_identity(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), RelationBuildPublicationDesc(), RelationCacheInitializePhase3(), RelationClearMissing(), relationHasPrimaryKey(), RelationInitIndexAccessInfo(), RelationInitTableAccessMethod(), RelationIsVisible(), RelationReloadIndexInfo(), RemoveConstraintById(), removeExtObjInitPriv(), RemoveFunctionById(), RemoveOperatorById(), RemovePartitionKeyByRelId(), RemovePublicationById(), RemovePublicationRelById(), RemovePublicationSchemaById(), RemoveRoleFromObjectPolicy(), RemoveStatisticsById(), RemoveStatisticsDataById(), RemoveTSConfigurationById(), RemoveTypeById(), rename_constraint_internal(), RenameConstraint(), RenameRole(), replorigin_by_name(), replorigin_by_oid(), replorigin_drop_guts(), 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(), StatisticsObjIsVisible(), superuser_arg(), transformCallStmt(), transformColumnDefinition(), transformColumnNameList(), transformColumnType(), transformFkeyCheckAttrs(), transformFkeyGetPrimaryKey(), transformOfType(), triggered_change_notification(), tryAttachPartitionForeignKey(), TryReuseForeignKey(), TSConfigIsVisible(), TSDictionaryIsVisible(), TSParserIsVisible(), TSTemplateIsVisible(), TupleDescInitEntry(), typeidTypeRelid(), typeIsOfTypedTable(), TypeIsVisible(), 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 1160 of file syscache.c.

1165 {
1166  Assert(cacheId >= 0 && cacheId < SysCacheSize &&
1167  PointerIsValid(SysCache[cacheId]));
1168 
1169  return SearchCatCache(SysCache[cacheId], key1, key2, key3, key4);
1170 }
HeapTuple SearchCatCache(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4)
Definition: catcache.c:1143

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

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

◆ SearchSysCache1()

HeapTuple SearchSysCache1 ( int  cacheId,
Datum  key1 
)

Definition at line 1173 of file syscache.c.

1175 {
1176  Assert(cacheId >= 0 && cacheId < SysCacheSize &&
1177  PointerIsValid(SysCache[cacheId]));
1178  Assert(SysCache[cacheId]->cc_nkeys == 1);
1179 
1180  return SearchCatCache1(SysCache[cacheId], key1);
1181 }
HeapTuple SearchCatCache1(CatCache *cache, Datum v1)
Definition: catcache.c:1160

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

Referenced by aclitemout(), add_cast_to(), add_function_cost(), 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_enable_rls(), check_hash_func_signature(), check_object_ownership(), check_role(), check_session_authorization(), check_TSCurrentConfig(), CheckFunctionValidatorAccess(), CheckIndexCompatible(), CheckMyDatabase(), CloneFkReferenced(), CloneFkReferencing(), CollationIsVisible(), compile_plperl_function(), compile_pltcl_function(), ComputeIndexAttrs(), ConstraintSetParentConstraint(), ConstructTupleDescriptor(), ConversionIsVisible(), CreateCast(), CreateEventTrigger(), CreateFunction(), CreateProceduralLanguage(), CreateSchemaCommand(), CreateTransform(), DefineCollation(), DefineIndex(), DefineOpClass(), DefineTSConfiguration(), DeleteRelationTuple(), DeleteSequenceTuple(), deparseOpExpr(), deparseScalarArrayOpExpr(), DetachPartitionFinalize(), do_autovacuum(), do_compile(), do_setval(), dropdb(), DropObjectById(), DropRole(), enum_cmp_internal(), enum_out(), enum_send(), errdatatype(), eval_const_expressions_mutator(), ExecGrant_Database(), ExecGrant_Fdw(), ExecGrant_ForeignServer(), ExecGrant_Function(), ExecGrant_Language(), ExecGrant_Namespace(), ExecGrant_Parameter(), ExecGrant_Relation(), ExecGrant_Tablespace(), ExecGrant_Type(), 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(), FunctionIsVisible(), 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_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_name(), get_opclass_opfamily_and_input_type(), get_opcode(), get_opname(), get_oprjoin(), get_oprrest(), 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_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_rolinherit(), 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(), op_hashjoinable(), op_input_types(), op_mergejoinable(), OpClassCacheLookup(), OpclassIsVisible(), oper(), OperatorIsVisible(), OpFamilyCacheLookup(), OpfamilyIsVisible(), ParseFuncOrColumn(), pg_attribute_aclcheck_all(), pg_attribute_aclmask_ext(), pg_class_aclmask_ext(), pg_class_ownercheck(), pg_collation_actual_version(), pg_collation_ownercheck(), pg_conversion_ownercheck(), pg_database_aclmask(), pg_database_collation_actual_version(), pg_database_ownercheck(), pg_event_trigger_ownercheck(), pg_foreign_data_wrapper_aclmask(), pg_foreign_data_wrapper_ownercheck(), pg_foreign_server_aclmask(), pg_foreign_server_ownercheck(), 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_language_aclmask(), pg_language_ownercheck(), pg_namespace_aclmask(), pg_namespace_ownercheck(), pg_newlocale_from_collation(), pg_opclass_ownercheck(), pg_oper_ownercheck(), pg_opfamily_ownercheck(), pg_parameter_acl_aclmask(), pg_parameter_aclmask(), pg_proc_aclmask(), pg_proc_ownercheck(), pg_publication_ownercheck(), pg_relation_filenode(), pg_relation_filepath(), pg_relation_is_publishable(), pg_sequence_parameters(), pg_statistics_object_ownercheck(), pg_subscription_ownercheck(), pg_tablespace_aclmask(), pg_tablespace_ownercheck(), pg_ts_config_ownercheck(), pg_ts_dict_ownercheck(), pg_type_aclmask(), pg_type_ownercheck(), 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(), print_function_arguments(), RangeVarCallbackForAlterRelation(), RangeVarCallbackForAttachIndex(), RangeVarCallbackForDropRelation(), RangeVarCallbackForPolicy(), RangeVarCallbackForRenameAttribute(), RangeVarCallbackForRenameRule(), RangeVarCallbackForRenameTrigger(), RangeVarCallbackForTruncate(), RangeVarCallbackOwnsRelation(), recomputeNamespacePath(), recordExtObjInitPriv(), refresh_by_match_merge(), regclassout(), regcollationout(), regconfigout(), regdictionaryout(), regoperout(), regprocout(), regtypeout(), relation_mark_replica_identity(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), RelationBuildPublicationDesc(), RelationCacheInitializePhase3(), relationHasPrimaryKey(), RelationInitIndexAccessInfo(), RelationInitTableAccessMethod(), RelationIsVisible(), RelationReloadIndexInfo(), RemoveConstraintById(), removeExtObjInitPriv(), RemoveFunctionById(), RemoveOperatorById(), RemovePartitionKeyByRelId(), RemovePublicationById(), RemovePublicationRelById(), RemovePublicationSchemaById(), RemoveRoleFromObjectPolicy(), RemoveStatisticsById(), RemoveTSConfigurationById(), RemoveTypeById(), rename_constraint_internal(), RenameConstraint(), RenameRole(), replorigin_by_name(), replorigin_by_oid(), replorigin_drop_guts(), ResetSequence(), ResolveOpClass(), ri_GenerateQualCollation(), ri_LoadConstraintInfo(), roles_is_member_of(), sepgsql_proc_setattr(), sepgsql_relation_setattr(), sequence_options(), simplify_function(), spgvalidate(), SPI_gettype(), StatisticsGetRelation(), StatisticsObjIsVisible(), superuser_arg(), transformCallStmt(), transformFkeyCheckAttrs(), transformFkeyGetPrimaryKey(), triggered_change_notification(), tryAttachPartitionForeignKey(), TryReuseForeignKey(), TSConfigIsVisible(), TSDictionaryIsVisible(), TSParserIsVisible(), TSTemplateIsVisible(), TupleDescInitEntry(), typeidType(), typeidTypeRelid(), typeIsOfTypedTable(), TypeIsVisible(), typeOrDomainTypeRelid(), validatePartitionedIndex(), and verify_dictoptions().

◆ SearchSysCache2()

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

Definition at line 1184 of file syscache.c.

1186 {
1187  Assert(cacheId >= 0 && cacheId < SysCacheSize &&
1188  PointerIsValid(SysCache[cacheId]));
1189  Assert(SysCache[cacheId]->cc_nkeys == 2);
1190 
1191  return SearchCatCache2(SysCache[cacheId], key1, key2);
1192 }
HeapTuple SearchCatCache2(CatCache *cache, Datum v1, Datum v2)
Definition: catcache.c:1168

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

Referenced by AddEnumLabel(), AddRoleMems(), AlterPublicationOptions(), AlterPublicationTables(), CastCreate(), check_for_column_name_collision(), convert_column_name(), CreateTransform(), DelRoleMems(), DropSubscription(), enum_in(), enum_recv(), 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_attstattarget(), 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(), InsertRule(), IsBinaryCoercible(), pg_attribute_aclcheck_all(), 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 1206 of file syscache.c.

1208 {
1209  Assert(cacheId >= 0 && cacheId < SysCacheSize &&
1210  PointerIsValid(SysCache[cacheId]));
1211  Assert(SysCache[cacheId]->cc_nkeys == 4);
1212 
1213  return SearchCatCache4(SysCache[cacheId], key1, key2, key3, key4);
1214 }
HeapTuple SearchCatCache4(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4)
Definition: catcache.c:1184

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

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 1314 of file syscache.c.

1315 {
1316  HeapTuple tuple;
1317 
1318  tuple = SearchSysCache2(ATTNAME,
1319  ObjectIdGetDatum(relid),
1321  if (!HeapTupleIsValid(tuple))
1322  return NULL;
1323  if (((Form_pg_attribute) GETSTRUCT(tuple))->attisdropped)
1324  {
1325  ReleaseSysCache(tuple);
1326  return NULL;
1327  }
1328  return tuple;
1329 }
#define GETSTRUCT(TUP)
Definition: htup_details.h:649
NameData attname
Definition: pg_attribute.h:41
FormData_pg_attribute * Form_pg_attribute
Definition: pg_attribute.h:207
#define CStringGetDatum(X)
Definition: postgres.h:622
#define ObjectIdGetDatum(X)
Definition: postgres.h:551
HeapTuple SearchSysCache2(int cacheId, Datum key1, Datum key2)
Definition: syscache.c:1184
@ ATTNAME
Definition: syscache.h:40

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

Referenced by ATExecAlterColumnGenericOptions(), ATExecCheckNotNull(), ATExecDropColumn(), ATExecSetOptions(), 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 1377 of file syscache.c.

1378 {
1379  HeapTuple tuple;
1380 
1381  tuple = SearchSysCache2(ATTNUM,
1382  ObjectIdGetDatum(relid),
1384  if (!HeapTupleIsValid(tuple))
1385  return NULL;
1386  if (((Form_pg_attribute) GETSTRUCT(tuple))->attisdropped)
1387  {
1388  ReleaseSysCache(tuple);
1389  return NULL;
1390  }
1391  return tuple;
1392 }
int16 attnum
Definition: pg_attribute.h:83
#define Int16GetDatum(X)
Definition: postgres.h:495
@ ATTNUM
Definition: syscache.h:41

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

Referenced by SearchSysCacheCopyAttNum().

◆ SearchSysCacheCopy()

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

Definition at line 1235 of file syscache.c.

1240 {
1241  HeapTuple tuple,
1242  newtuple;
1243 
1244  tuple = SearchSysCache(cacheId, key1, key2, key3, key4);
1245  if (!HeapTupleIsValid(tuple))
1246  return tuple;
1247  newtuple = heap_copytuple(tuple);
1248  ReleaseSysCache(tuple);
1249  return newtuple;
1250 }
HeapTuple heap_copytuple(HeapTuple tuple)
Definition: heaptuple.c:680

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

◆ SearchSysCacheCopyAttName()

HeapTuple SearchSysCacheCopyAttName ( Oid  relid,
const char *  attname 
)

Definition at line 1337 of file syscache.c.

1338 {
1339  HeapTuple tuple,
1340  newtuple;
1341 
1342  tuple = SearchSysCacheAttName(relid, attname);
1343  if (!HeapTupleIsValid(tuple))
1344  return tuple;
1345  newtuple = heap_copytuple(tuple);
1346  ReleaseSysCache(tuple);
1347  return newtuple;
1348 }
HeapTuple SearchSysCacheAttName(Oid relid, const char *attname)
Definition: syscache.c:1314

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

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

◆ SearchSysCacheCopyAttNum()

HeapTuple SearchSysCacheCopyAttNum ( Oid  relid,
int16  attnum 
)

Definition at line 1400 of file syscache.c.

1401 {
1402  HeapTuple tuple,
1403  newtuple;
1404 
1405  tuple = SearchSysCacheAttNum(relid, attnum);
1406  if (!HeapTupleIsValid(tuple))
1407  return NULL;
1408  newtuple = heap_copytuple(tuple);
1409  ReleaseSysCache(tuple);
1410  return newtuple;
1411 }
HeapTuple SearchSysCacheAttNum(Oid relid, int16 attnum)
Definition: syscache.c:1377

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

Referenced by ATExecSetStatistics(), and SetIndexStorageProperties().

◆ SearchSysCacheExists()

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

Definition at line 1259 of file syscache.c.

1264 {
1265  HeapTuple tuple;
1266 
1267  tuple = SearchSysCache(cacheId, key1, key2, key3, key4);
1268  if (!HeapTupleIsValid(tuple))
1269  return false;
1270  ReleaseSysCache(tuple);
1271  return true;
1272 }

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

◆ SearchSysCacheExistsAttName()

bool SearchSysCacheExistsAttName ( Oid  relid,
const char *  attname 
)

Definition at line 1356 of file syscache.c.

1357 {
1358  HeapTuple tuple;
1359 
1360  tuple = SearchSysCacheAttName(relid, attname);
1361  if (!HeapTupleIsValid(tuple))
1362  return false;
1363  ReleaseSysCache(tuple);
1364  return true;
1365 }

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 1486 of file syscache.c.

1488 {
1489  if (cacheId < 0 || cacheId >= SysCacheSize ||
1490  !PointerIsValid(SysCache[cacheId]))
1491  elog(ERROR, "invalid cache ID: %d", cacheId);
1492 
1493  return SearchCatCacheList(SysCache[cacheId], nkeys,
1494  key1, key2, key3);
1495 }
CatCList * SearchCatCacheList(CatCache *cache, int nkeys, Datum v1, Datum v2, Datum v3)
Definition: catcache.c:1502

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

◆ SysCacheGetAttr()

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

Definition at line 1434 of file syscache.c.

1437 {
1438  /*
1439  * We just need to get the TupleDesc out of the cache entry, and then we
1440  * can apply heap_getattr(). Normally the cache control data is already
1441  * valid (because the caller recently fetched the tuple via this same
1442  * cache), but there are cases where we have to initialize the cache here.
1443  */
1444  if (cacheId < 0 || cacheId >= SysCacheSize ||
1445  !PointerIsValid(SysCache[cacheId]))
1446  elog(ERROR, "invalid cache ID: %d", cacheId);
1447  if (!PointerIsValid(SysCache[cacheId]->cc_tupdesc))
1448  {
1449  InitCatCachePhase2(SysCache[cacheId], false);
1450  Assert(PointerIsValid(SysCache[cacheId]->cc_tupdesc));
1451  }
1452 
1453  return heap_getattr(tup, attributeNumber,
1454  SysCache[cacheId]->cc_tupdesc,
1455  isNull);
1456 }

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

Referenced by AlterCollation(), AlterDomainValidateConstraint(), AlterForeignDataWrapper(), AlterForeignServer(), AlterFunction(), AlterPublicationTables(), AlterRole(), AlterSchemaOwner_internal(), AlterTSDictionary(), AlterUserMapping(), ATExecAlterColumnGenericOptions(), ATExecChangeOwner(), ATExecGenericOptions(), ATExecSetOptions(), ATExecSetRelOptions(), ATExecValidateConstraint(), build_function_result_tupdesc_t(), build_replindex_scan_key(), CheckIndexCompatible(), CheckMyDatabase(), compile_plperl_function(), compile_pltcl_function(), DeconstructFkConstraintRow(), DefineCollation(), DefineDomain(), do_compile(), DropSubscription(), ExecGrant_Attribute(), ExecGrant_Fdw(), ExecGrant_ForeignServer(), ExecGrant_Function(), ExecGrant_Language(), ExecGrant_Namespace(), ExecGrant_Parameter(), ExecGrant_Relation(), ExecInitAgg(), expand_function_arguments(), fetch_function_defaults(), fetch_statentries_for_relation(), flatten_reloptions(), fmgr_c_validator(), fmgr_info_C_lang(), fmgr_info_cxt_security(), fmgr_internal_validator(), fmgr_security_definer(), fmgr_sql_validator(), fmgr_symbol(), func_get_detail(), FuncnameGetCandidates(), generate_partition_qual(), generateClonedExtStatsStmt(), generateClonedIndexStmt(), get_attoptions(), get_attribute_options(), get_attstatsslot(), get_db_info(), get_default_acl_internal(), get_func_arg_info(), get_func_result_name(), get_func_trftypes(), get_index_column_opclass(), get_object_namespace(), get_qual_for_range(), get_relation_statistics(), get_role_password(), get_tablespace(), get_typdefault(), GetForeignColumnOptions(), GetForeignDataWrapperExtended(), GetForeignServerExtended(), GetForeignTable(), getObjectDescription(), getObjectIdentityParts(), GetSubscription(), GetSubscriptionNotReadyRelations(), GetSubscriptionRelations(), GetSubscriptionRelState(), GetUserMapping(), inclusion_get_strategy_procinfo(), index_concurrently_create_copy(), index_opclass_options(), init_sql_fcache(), initialize_peragg(), inline_function(), inline_set_returning_function(), lookup_collation_cache(), lookup_ts_dictionary_cache(), make_new_heap(), MatchNamedCall(), minmax_get_strategy_procinfo(), minmax_multi_get_strategy_procinfo(), pg_attribute_aclmask_ext(), pg_class_aclmask_ext(), pg_collation_actual_version(), pg_database_aclmask(), pg_database_collation_actual_version(), pg_foreign_data_wrapper_aclmask(), pg_foreign_server_aclmask(), pg_get_constraintdef_worker(), pg_get_function_arg_default(), pg_get_function_sqlbody(), pg_get_functiondef(), pg_get_indexdef_worker(), pg_get_partkeydef_worker(), pg_get_publication_tables(), pg_get_statisticsobj_worker(), pg_get_statisticsobjdef_expressions(), pg_language_aclmask(), pg_namespace_aclmask(), pg_newlocale_from_collation(), pg_parameter_acl_aclmask(), pg_parameter_aclmask(), pg_proc_aclmask(), pg_tablespace_aclmask(), pg_type_aclmask(), 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(), print_function_sqlbody(), ProcedureCreate(), pub_collist_contains_invalid_column(), pub_rf_contains_invalid_column(), recordExtObjInitPriv(), refresh_by_match_merge(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), SetDefaultACL(), statext_dependencies_load(), statext_expressions_load(), statext_mcv_load(), statext_ndistinct_load(), StorePartitionBound(), test_indoption(), transformCallStmt(), transformFkeyCheckAttrs(), transformFkeyGetPrimaryKey(), transformIndexConstraint(), and TryReuseForeignKey().

◆ SysCacheInvalidate()

void SysCacheInvalidate ( int  cacheId,
uint32  hashValue 
)

Definition at line 1506 of file syscache.c.

1507 {
1508  if (cacheId < 0 || cacheId >= SysCacheSize)
1509  elog(ERROR, "invalid cache ID: %d", cacheId);
1510 
1511  /* if this cache isn't initialized yet, no need to do anything */
1512  if (!PointerIsValid(SysCache[cacheId]))
1513  return;
1514 
1515  CatCacheInvalidate(SysCache[cacheId], hashValue);
1516 }
void CatCacheInvalidate(CatCache *cache, uint32 hashValue)
Definition: catcache.c:546

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

Referenced by LocalExecuteInvalidationMessage().

Variable Documentation

◆ cacheinfo

const struct cachedesc cacheinfo[]
static

Definition at line 1 of file syscache.c.

Referenced by InitCatalogCache().

◆ CacheInitialized

bool CacheInitialized = false
static

Definition at line 1045 of file syscache.c.

Referenced by InitCatalogCache(), and InitCatalogCachePhase2().

◆ SysCache

◆ SysCacheRelationOid

Oid SysCacheRelationOid[SysCacheSize]
static

Definition at line 1048 of file syscache.c.

Referenced by InitCatalogCache(), and RelationHasSysCache().

◆ SysCacheRelationOidSize

int SysCacheRelationOidSize
static

Definition at line 1049 of file syscache.c.

Referenced by InitCatalogCache(), and RelationHasSysCache().

◆ SysCacheSupportingRelOid

Oid SysCacheSupportingRelOid[SysCacheSize *2]
static

Definition at line 1052 of file syscache.c.

Referenced by InitCatalogCache(), and RelationSupportsSysCache().

◆ SysCacheSupportingRelOidSize

int SysCacheSupportingRelOidSize
static

Definition at line 1053 of file syscache.c.

Referenced by InitCatalogCache(), and RelationSupportsSysCache().