PostgreSQL Source Code  git master
rel.h File Reference
#include "access/tupdesc.h"
#include "access/xlog.h"
#include "catalog/pg_class.h"
#include "catalog/pg_index.h"
#include "catalog/pg_publication.h"
#include "fmgr.h"
#include "nodes/bitmapset.h"
#include "rewrite/prs2lock.h"
#include "storage/block.h"
#include "storage/relfilenode.h"
#include "utils/relcache.h"
#include "utils/reltrigger.h"
Include dependency graph for rel.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  LockRelId
 
struct  LockInfoData
 
struct  RelationData
 
struct  ForeignKeyCacheInfo
 
struct  AutoVacOpts
 
struct  StdRdOptions
 
struct  ViewOptions
 

Macros

#define HEAP_MIN_FILLFACTOR   10
 
#define HEAP_DEFAULT_FILLFACTOR   100
 
#define RelationGetToastTupleTarget(relation, defaulttarg)
 
#define RelationGetFillFactor(relation, defaultff)
 
#define RelationGetTargetPageUsage(relation, defaultff)   (BLCKSZ * RelationGetFillFactor(relation, defaultff) / 100)
 
#define RelationGetTargetPageFreeSpace(relation, defaultff)   (BLCKSZ * (100 - RelationGetFillFactor(relation, defaultff)) / 100)
 
#define RelationIsUsedAsCatalogTable(relation)
 
#define RelationGetParallelWorkers(relation, defaultpw)
 
#define RelationIsSecurityView(relation)
 
#define RelationHasCheckOption(relation)
 
#define RelationHasLocalCheckOption(relation)
 
#define RelationHasCascadedCheckOption(relation)
 
#define RelationIsValid(relation)   PointerIsValid(relation)
 
#define InvalidRelation   ((Relation) NULL)
 
#define RelationHasReferenceCountZero(relation)   ((bool)((relation)->rd_refcnt == 0))
 
#define RelationGetForm(relation)   ((relation)->rd_rel)
 
#define RelationGetRelid(relation)   ((relation)->rd_id)
 
#define RelationGetNumberOfAttributes(relation)   ((relation)->rd_rel->relnatts)
 
#define IndexRelationGetNumberOfAttributes(relation)   ((relation)->rd_index->indnatts)
 
#define IndexRelationGetNumberOfKeyAttributes(relation)   ((relation)->rd_index->indnkeyatts)
 
#define RelationGetDescr(relation)   ((relation)->rd_att)
 
#define RelationGetRelationName(relation)   (NameStr((relation)->rd_rel->relname))
 
#define RelationGetNamespace(relation)   ((relation)->rd_rel->relnamespace)
 
#define RelationIsMapped(relation)
 
#define RelationOpenSmgr(relation)
 
#define RelationCloseSmgr(relation)
 
#define RelationGetTargetBlock(relation)   ( (relation)->rd_smgr != NULL ? (relation)->rd_smgr->smgr_targblock : InvalidBlockNumber )
 
#define RelationSetTargetBlock(relation, targblock)
 
#define RelationNeedsWAL(relation)   ((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT)
 
#define RelationUsesLocalBuffers(relation)   ((relation)->rd_rel->relpersistence == RELPERSISTENCE_TEMP)
 
#define RELATION_IS_LOCAL(relation)
 
#define RELATION_IS_OTHER_TEMP(relation)
 
#define RelationIsScannable(relation)   ((relation)->rd_rel->relispopulated)
 
#define RelationIsPopulated(relation)   ((relation)->rd_rel->relispopulated)
 
#define RelationIsAccessibleInLogicalDecoding(relation)
 
#define RelationIsLogicallyLogged(relation)
 
#define RelationGetPartitionKey(relation)   ((relation)->rd_partkey)
 
#define RelationGetPartitionDesc(relation)   ((relation)->rd_partdesc)
 

Typedefs

typedef struct LockRelId LockRelId
 
typedef struct LockInfoData LockInfoData
 
typedef LockInfoDataLockInfo
 
typedef struct RelationData RelationData
 
typedef struct ForeignKeyCacheInfo ForeignKeyCacheInfo
 
typedef struct AutoVacOpts AutoVacOpts
 
typedef struct StdRdOptions StdRdOptions
 
typedef struct ViewOptions ViewOptions
 

Functions

void RelationIncrementReferenceCount (Relation rel)
 
void RelationDecrementReferenceCount (Relation rel)
 
bool RelationHasUnloggedIndex (Relation rel)
 
ListRelationGetRepsetList (Relation rel)
 

Macro Definition Documentation

◆ HEAP_DEFAULT_FILLFACTOR

#define HEAP_DEFAULT_FILLFACTOR   100

◆ HEAP_MIN_FILLFACTOR

#define HEAP_MIN_FILLFACTOR   10

Definition at line 275 of file rel.h.

◆ IndexRelationGetNumberOfAttributes

#define IndexRelationGetNumberOfAttributes (   relation)    ((relation)->rd_index->indnatts)

◆ IndexRelationGetNumberOfKeyAttributes

◆ InvalidRelation

#define InvalidRelation   ((Relation) NULL)

Definition at line 389 of file rel.h.

◆ RELATION_IS_LOCAL

#define RELATION_IS_LOCAL (   relation)
Value:
((relation)->rd_islocaltemp || \
(relation)->rd_createSubid != InvalidSubTransactionId)
#define InvalidSubTransactionId
Definition: c.h:513

Definition at line 534 of file rel.h.

Referenced by _bt_getbuf(), BloomNewBuffer(), brin_getinsertbuffer(), btvacuumscan(), GinNewBuffer(), ginvacuumcleanup(), gistNewBuffer(), gistvacuumscan(), RelationGetBufferForTuple(), revmap_physical_extend(), SpGistNewBuffer(), and spgvacuumscan().

◆ RELATION_IS_OTHER_TEMP

◆ RelationCloseSmgr

#define RelationCloseSmgr (   relation)
Value:
do { \
if ((relation)->rd_smgr != NULL) \
{ \
smgrclose((relation)->rd_smgr); \
Assert((relation)->rd_smgr == NULL); \
} \
} while (0)

Definition at line 483 of file rel.h.

Referenced by RelationCacheInvalidate(), RelationClearRelation(), RelationCloseSmgrByOid(), RelationDestroyRelation(), RelationDropStorage(), and RelationReloadIndexInfo().

◆ RelationGetDescr

#define RelationGetDescr (   relation)    ((relation)->rd_att)

Definition at line 440 of file rel.h.

Referenced by _bt_check_unique(), _bt_checkkeys(), _bt_compare(), _bt_keep_natts(), _bt_keep_natts_fast(), _bt_load(), _bt_mkscankey(), _bt_truncate(), _hash_checkqual(), acquire_inherited_sample_rows(), AddEnumLabel(), addFkRecurseReferenced(), addFkRecurseReferencing(), AddRelationNewConstraints(), AddRoleMems(), AddSubscriptionRelState(), AlterCollation(), AlterDatabase(), AlterDatabaseOwner(), AlterDomainDefault(), AlterDomainNotNull(), AlterForeignDataWrapper(), AlterForeignDataWrapperOwner_internal(), AlterForeignServer(), AlterForeignServerOwner_internal(), AlterFunction(), AlterObjectNamespace_internal(), AlterObjectOwner_internal(), AlterObjectRename_internal(), AlterOperator(), AlterPolicy(), AlterPublicationOptions(), AlterRole(), AlterSchemaOwner_internal(), AlterSetting(), AlterSubscription(), AlterTableSpaceOptions(), AlterTSDictionary(), AlterTypeOwnerInternal(), AlterUserMapping(), AppendAttributeTuples(), apply_handle_delete(), apply_handle_insert(), apply_handle_update(), apply_returning_filter(), ApplyExtensionUpdates(), ApplySetting(), ATAddForeignKeyConstraint(), ATExecAddOf(), ATExecAlterColumnGenericOptions(), ATExecAlterColumnType(), ATExecAttachPartition(), ATExecAttachPartitionIdx(), ATExecChangeOwner(), ATExecColumnDefault(), ATExecDetachPartition(), ATExecDropNotNull(), ATExecGenericOptions(), ATExecSetOptions(), ATExecSetRelOptions(), ATGetQueueEntry(), ATPrepAlterColumnType(), ATRewriteTable(), AttachPartitionEnsureIndexes(), BeginCopy(), BeginCopyFrom(), brin_build_desc(), brin_page_items(), bt_normalize_tuple(), bt_tuple_present_callback(), btbeginscan(), btinsert(), build_remote_returning(), BuildEventTriggerCache(), CatalogCacheInitializeCache(), CatalogIndexInsert(), change_owner_fix_column_acls(), check_selective_binary_conversion(), CheckAttributeType(), CloneFkReferenced(), CloneFkReferencing(), CloneRowTriggersToPartition(), CollationCreate(), comparetup_index_btree(), compute_index_stats(), ComputePartitionAttrs(), ConstraintImpliedByRelConstraint(), ConstructTupleDescriptor(), conversion_error_callback(), copy_table_data(), copyTemplateDependencies(), CopyTo(), copytup_index(), create_foreign_modify(), create_proc_lang(), CreateAccessMethod(), CreateCast(), CreateComments(), CreateConstraintEntry(), createdb(), CreatePolicy(), CreatePublication(), CreateRole(), CreateSharedComments(), CreateSubscription(), CreateTransform(), CreateTrigger(), currtid_for_view(), DefineIndex(), DefineQueryRewrite(), DefineRelation(), DefineSequence(), DelRoleMems(), deparseAnalyzeSql(), deparseTargetList(), do_autovacuum(), DoCopy(), EnumValuesCreate(), errtablecol(), EventTriggerSQLDropAddObject(), ExecAlterExtensionStmt(), ExecCheckPlanOutput(), ExecComputeStoredGenerated(), ExecConstraints(), ExecGetReturningSlot(), ExecGetTriggerNewSlot(), ExecGetTriggerOldSlot(), ExecGrant_Attribute(), ExecGrant_Database(), ExecGrant_Fdw(), ExecGrant_ForeignServer(), ExecGrant_Function(), ExecGrant_Language(), ExecGrant_Largeobject(), ExecGrant_Namespace(), ExecGrant_Relation(), ExecGrant_Tablespace(), ExecGrant_Type(), ExecInitBitmapHeapScan(), ExecInitCustomScan(), ExecInitForeignScan(), ExecInitIndexOnlyScan(), ExecInitIndexScan(), ExecInitPartitionDispatchInfo(), ExecInitPartitionInfo(), ExecInitRoutingInfo(), ExecInitSampleScan(), ExecInitSeqScan(), ExecInitTidScan(), ExecPartitionCheckEmitError(), ExecSetupChildParentMapForSubplan(), ExecWithCheckOptions(), extension_config_remove(), ExtractReplicaIdentity(), file_acquire_sample_rows(), find_language_template(), generateClonedIndexStmt(), get_file_fdw_attribute_options(), get_object_address_attrdef(), get_primary_key_attnos(), get_relation_constraint_attnos(), GetComment(), GetSecurityLabel(), GetSharedSecurityLabel(), has_stored_generated_columns(), hashbuildCallback(), hashinsert(), heapam_index_validate_scan(), heapam_relation_copy_for_cluster(), HeapDetermineModifiedColumns(), heapgettup(), heapgettup_pagemode(), index_concurrently_create_copy(), index_concurrently_swap(), index_drop(), IndexSetParentIndex(), init_returning_filter(), initGinState(), InitializeAttributeOids(), InsertPgAttributeTuple(), InsertPgClassTuple(), InsertRule(), inv_truncate(), inv_write(), LargeObjectCreate(), load_typcache_tupdesc(), logicalrep_rel_open(), logicalrep_write_attrs(), logicalrep_write_tuple(), make_inh_translation_list(), make_new_heap(), make_ruledef(), make_tuple_from_result_row(), make_viewdef(), MakeConfigurationMapping(), map_partition_varattnos(), maybe_send_schema(), MergeAttributes(), MergeAttributesIntoExisting(), MergeConstraintsIntoExisting(), movedb(), NextCopyFrom(), OperatorCreate(), PartConstraintImpliedByRelConstraint(), pg_decode_change(), pg_event_trigger_ddl_commands(), pg_extension_config_dump(), pg_identify_object(), pg_largeobject_aclmask_snapshot(), pgstat_collect_oids(), plpgsql_exec_trigger(), pltcl_build_tuple_result(), pltcl_trigger_handler(), PLy_exec_trigger(), PLy_modify_tuple(), PLy_trigger_build_args(), postgresAcquireSampleRowsFunc(), postgresBeginDirectModify(), postgresBeginForeignInsert(), postgresBeginForeignScan(), postgresPlanForeignModify(), ProcedureCreate(), publication_add_relation(), RangeCreate(), readtup_index(), recordExtensionInitPrivWorker(), recordExtObjInitPriv(), reform_and_rewrite_tuple(), RelationBuildPartitionDesc(), RelationBuildRowSecurity(), RelationBuildRuleLock(), RelationClearMissing(), RelationFindReplTupleSeq(), RelationNameGetTupleDesc(), RemoveAttributeById(), RemoveRoleFromObjectPolicy(), RenameRole(), ReorderBufferToastAppendChunk(), ReorderBufferToastReplace(), replorigin_create(), ri_Check_Pk_Match(), RI_FKey_check(), RI_FKey_fk_upd_check_required(), RI_FKey_pk_upd_check_required(), sepgsql_relation_setattr_extra(), set_relation_column_names(), SetAttrMissing(), SetDefaultACL(), SetSecurityLabel(), SetSharedSecurityLabel(), shdepChangeDep(), slot_fill_defaults(), spgbeginscan(), statext_store(), StoreAttrDefault(), StorePartitionBound(), StorePartitionKey(), StoreSingleInheritance(), table_slot_create(), transformAlterTableStmt(), transformTableLikeClause(), tuple_data_split_internal(), tuplesort_putindextuplevalues(), TypeCreate(), update_attstats(), UpdateIndexRelation(), UpdateStatisticsForTypeChange(), UpdateSubscriptionRelState(), and validateDomainConstraint().

◆ RelationGetFillFactor

#define RelationGetFillFactor (   relation,
  defaultff 
)
Value:
((relation)->rd_options ? \
((StdRdOptions *) (relation)->rd_options)->fillfactor : (defaultff))

Definition at line 290 of file rel.h.

Referenced by _bt_findsplitloc().

◆ RelationGetForm

◆ RelationGetNamespace

◆ RelationGetNumberOfAttributes

◆ RelationGetParallelWorkers

#define RelationGetParallelWorkers (   relation,
  defaultpw 
)
Value:
((relation)->rd_options ? \
((StdRdOptions *) (relation)->rd_options)->parallel_workers : (defaultpw))

Definition at line 324 of file rel.h.

Referenced by get_relation_info().

◆ RelationGetPartitionDesc

◆ RelationGetPartitionKey

◆ RelationGetRelationName

#define RelationGetRelationName (   relation)    (NameStr((relation)->rd_rel->relname))

Definition at line 448 of file rel.h.

Referenced by _bt_check_third_page(), _bt_check_unique(), _bt_checkpage(), _bt_findsplitloc(), _bt_first(), _bt_get_endpoint(), _bt_getmeta(), _bt_getroot(), _bt_gettrueroot(), _bt_insert_parent(), _bt_insertonpg(), _bt_lock_branch_parent(), _bt_mark_page_halfdead(), _bt_moveright(), _bt_newroot(), _bt_pagedel(), _bt_split(), _bt_start_vacuum(), _bt_stepright(), _bt_unlink_halfdead_page(), _bt_walk_left(), _hash_addovflpage(), _hash_checkpage(), _hash_datum2hashkey_type(), _hash_getnewbuf(), _hash_init(), _hash_pgaddmultitup(), _hash_pgaddtup(), acquire_inherited_sample_rows(), acquire_sample_rows(), add_with_check_options(), addFkRecurseReferenced(), addFkRecurseReferencing(), addRangeTableEntryForRelation(), AddRelationNewConstraints(), AlterDomainNotNull(), AlterObjectNamespace_internal(), AlterObjectOwner_internal(), AlterObjectRename_internal(), AlterPolicy(), AlterTableNamespace(), analyze_rel(), apply_handle_delete(), apply_handle_update(), ATAddForeignKeyConstraint(), AtEOSubXact_cleanup(), AtEOXact_cleanup(), ATExecAddColumn(), ATExecAddConstraint(), ATExecAddIdentity(), ATExecAddIndexConstraint(), ATExecAddInherit(), ATExecAddOf(), ATExecAlterColumnGenericOptions(), ATExecAlterColumnType(), ATExecAlterConstraint(), ATExecAttachPartition(), ATExecAttachPartitionIdx(), ATExecChangeOwner(), ATExecCheckNotNull(), ATExecClusterOn(), ATExecColumnDefault(), ATExecDropColumn(), ATExecDropConstraint(), ATExecDropIdentity(), ATExecDropNotNull(), ATExecDropOf(), ATExecGenericOptions(), ATExecReplicaIdentity(), ATExecSetIdentity(), ATExecSetNotNull(), ATExecSetOptions(), ATExecSetRelOptions(), ATExecSetStatistics(), ATExecSetStorage(), ATExecSetTableSpace(), ATExecValidateConstraint(), ATPrepAlterColumnType(), ATPrepChangePersistence(), ATPrepSetStatistics(), ATRewriteTable(), ATRewriteTables(), ATSimplePermissions(), AttrDefaultFetch(), ATTypedTableRecursion(), ATWrongRelkindError(), BeginCopyFrom(), BeginCopyTo(), blbuild(), brin_desummarize_range(), brin_doinsert(), brin_doupdate(), brin_getinsertbuffer(), brin_summarize_range(), brinbuild(), brininsert(), brinRevmapDesummarizeRange(), bt_check_every_level(), bt_check_level_from_leftmost(), bt_downlink_check(), bt_downlink_missing_check(), bt_index_check_internal(), bt_metap(), bt_normalize_tuple(), bt_page_items(), bt_page_stats(), bt_right_page_check_scankey(), bt_target_page_check(), bt_tuple_present_callback(), btbuild(), btree_index_checkable(), BTreeTupleGetHeapTIDCareful(), BuildRelationExtStatistics(), CatalogCacheInitializeCache(), check_default_partition_contents(), check_exclusion_or_unique_constraint(), check_for_column_name_collision(), check_index_is_clusterable(), check_object_ownership(), check_publication_add_relation(), check_relation_relkind(), CheckCmdReplicaIdentity(), CheckConstraintFetch(), checkFkeyPermissions(), checkInsertTargets(), CheckRelationLockedByMe(), CheckTableNotInUse(), CheckValidResultRel(), CheckValidRowMarkRel(), CloneFkReferenced(), CloneFkReferencing(), closerel(), CommentObject(), comparetup_index_btree(), conversion_error_callback(), copy_table(), copy_table_data(), CopyFrom(), CopyGetAttnums(), count_nondeletable_pages(), CreateFakeRelcacheEntry(), CreateInheritance(), CreatePolicy(), CreateStatistics(), CreateTrigger(), currtid_byrelname(), currtid_byreloid(), currval_oid(), DefineIndex(), DefineQueryRewrite(), DefineRelation(), DefineVirtualRelation(), deparseRelation(), do_analyze_rel(), do_setval(), DoCopy(), EnableDisableTrigger(), entryExecPlaceToPage(), entrySplitPage(), errtable(), EvalPlanQualFetchRowMarks(), ExecCheckIndexConstraints(), ExecComputeStoredGenerated(), ExecConstraints(), ExecFindPartition(), ExecLockRows(), ExecOpenScanRelation(), ExecPartitionCheckEmitError(), ExecRefreshMatView(), ExecSecLabelStmt(), ExecuteTruncateGuts(), ExtractReplicaIdentity(), file_acquire_sample_rows(), find_composite_type_dependencies(), fireRIRrules(), generate_partition_qual(), generate_relation_name(), generateClonedIndexStmt(), get_actual_variable_range(), get_object_address_publication_rel(), get_raw_page_internal(), get_rel_from_relname(), get_relation_by_qualified_name(), gin_clean_pending_list(), ginbuild(), ginFinishSplit(), GinFormTuple(), ginHeapTupleFastInsert(), ginNewScanKey(), ginVacuumEntryPage(), gistbuild(), gistcheckpage(), gistdoinsert(), gistFindPath(), gistfixsplit(), gistplacetopage(), gistrescan(), gistSplit(), gistUserPicksplit(), gistvacuumpage(), hash_bitmap_info(), hashbuild(), heap_acquire_tuplock(), heap_lock_tuple(), heap_vacuum_rel(), heapam_index_build_range_scan(), heapam_index_validate_scan(), heapam_relation_copy_for_cluster(), heapam_tuple_lock(), index_build(), index_check_primary_key(), index_create(), index_getprocinfo(), index_open(), init_sequence(), initGinState(), InsertOneNull(), lastval(), lazy_cleanup_index(), lazy_scan_heap(), lazy_truncate_heap(), lazy_vacuum_heap(), lazy_vacuum_index(), load_relcache_init_file(), logicalrep_write_rel(), make_inh_translation_list(), MergeAttributes(), MergeAttributesIntoExisting(), MergeConstraintsIntoExisting(), MergeWithExistingConstraint(), nextval_internal(), NotNullImpliedByRelConstraints(), PageGetItemIdCareful(), palloc_btree_page(), pg_nextoid(), pg_sequence_last_value(), pgrowlocks(), pgstat_relation(), pgstatginindex_internal(), pgstathashindex(), pgstatindex_impl(), pgstattuple_approx_internal(), plpgsql_fulfill_promise(), postgresAcquireSampleRowsFunc(), postgresBeginForeignInsert(), PrintRelCacheLeakWarning(), process_owned_by(), publication_add_relation(), PublicationAddTables(), PublicationDropTables(), QueuePartitionConstraintValidation(), quoteRelationName(), read_seq_tuple(), RebuildConstraintComment(), refresh_by_match_merge(), refuseDupeIndexAttach(), reindex_index(), reindex_relation(), relation_mark_replica_identity(), RelationAddExtraBlocks(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), RelationBuildRowSecurity(), RelationBuildRuleLock(), RelationBuildTriggers(), RelationBuildTupleDesc(), RelationCacheInitializePhase3(), RelationGetBufferForTuple(), RelationGetExclusionInfo(), RelationInitIndexAccessInfo(), RelationInitPhysicalAddr(), RelationSetNewRelfilenode(), RemoveConstraintById(), RemoveInheritance(), RemovePolicyById(), RemoveRoleFromObjectPolicy(), RemoveTriggerById(), rename_policy(), renameatt_internal(), RenameRewriteRule(), renametrig(), report_triggers(), ResourceOwnerForgetRelationRef(), revmap_physical_extend(), RewriteQuery(), rewriteTargetView(), ri_FetchConstraintInfo(), RI_FKey_check(), RI_Initial_Check(), ri_PerformCheck(), ri_ReportViolation(), sepgsql_relation_setattr_extra(), spgbuild(), spgdoinsert(), spgGetCache(), spgprocesspending(), SPI_getrelname(), ss_get_location(), ss_report_location(), StoreRelCheck(), systable_beginscan_ordered(), table_open(), table_openrv(), table_openrv_extended(), table_tuple_get_latest_tid(), test_rls_hooks_permissive(), test_rls_hooks_restrictive(), toast_fetch_datum(), toast_fetch_datum_slice(), transformFkeyCheckAttrs(), transformFkeyGetPrimaryKey(), transformIndexConstraint(), transformOnConflictArbiter(), transformPartitionBound(), transformPartitionCmd(), transformPartitionRangeBounds(), transformTableLikeClause(), transformUpdateTargetList(), triggered_change_notification(), vacuum_rel(), vacuumLeafPage(), validateDomainConstraint(), visibilitymap_clear(), visibilitymap_get_status(), visibilitymap_set(), visibilitymap_truncate(), writeListPage(), and XactLockTableWaitErrorCb().

◆ RelationGetRelid

#define RelationGetRelid (   relation)    ((relation)->rd_id)

Definition at line 414 of file rel.h.

Referenced by _bt_begin_parallel(), acquire_inherited_sample_rows(), addFkRecurseReferenced(), addFkRecurseReferencing(), addRangeTableEntry(), addRangeTableEntryForRelation(), AddRelationNewConstraints(), afterTriggerInvokeEvents(), AfterTriggerSaveEvent(), AlterObjectNamespace_internal(), AlterObjectOwner_internal(), AlterObjectRename_internal(), AlterPublicationTables(), AlterSchemaOwner_internal(), AlterSeqNamespaces(), AlterTableNamespaceInternal(), analyze_rel(), ATAddCheckConstraint(), ATAddForeignKeyConstraint(), ATDetachCheckNoForeignKeyRefs(), ATExecAddColumn(), ATExecAddConstraint(), ATExecAddIdentity(), ATExecAddIndex(), ATExecAddInherit(), ATExecAddOf(), ATExecAlterColumnGenericOptions(), ATExecAlterColumnType(), ATExecAlterConstraint(), ATExecAttachPartition(), ATExecAttachPartitionIdx(), ATExecCheckNotNull(), ATExecCmd(), ATExecColumnDefault(), ATExecDetachPartition(), ATExecDisableRowSecurity(), ATExecDropColumn(), ATExecDropConstraint(), ATExecDropIdentity(), ATExecDropInherit(), ATExecDropNotNull(), ATExecDropOf(), ATExecEnableRowSecurity(), ATExecForceNoForceRowSecurity(), ATExecGenericOptions(), ATExecReplicaIdentity(), ATExecSetIdentity(), ATExecSetNotNull(), ATExecSetOptions(), ATExecSetRelOptions(), ATExecSetStatistics(), ATExecSetStorage(), ATExecSetTableSpace(), ATExecSetTableSpaceNoStorage(), ATExecValidateConstraint(), ATGetQueueEntry(), ATPrepAlterColumnType(), ATPrepChangePersistence(), ATPrepSetStatistics(), ATRewriteTable(), ATSimplePermissions(), ATSimpleRecursion(), AttachPartitionEnsureIndexes(), AttrDefaultFetch(), bringetbitmap(), brininsert(), brinvacuumcleanup(), build_column_default(), build_replindex_scan_key(), BuildIndexInfo(), BuildIndexValueDescription(), BuildRelationExtStatistics(), CacheInvalidateHeapTuple(), CacheInvalidateRelcache(), CatalogIndexInsert(), check_default_partition_contents(), check_for_column_name_collision(), check_index_is_clusterable(), check_object_ownership(), CheckConstraintFetch(), checkFkeyPermissions(), CheckTableNotInUse(), CloneFkReferenced(), CloneFkReferencing(), CloneRowTriggersToPartition(), ComputePartitionAttrs(), CopyFrom(), create_estate_for_relation(), create_foreign_modify(), create_toast_table(), createForeignKeyActionTriggers(), CreateInheritance(), CreateStatistics(), CreateTrigger(), currtid_byrelname(), currtid_byreloid(), DefineRelation(), deparseAnalyzeSql(), deparseRelation(), do_analyze_rel(), DoCopy(), EnableDisableRule(), EnableDisableTrigger(), errtablecol(), ExecBSDeleteTriggers(), ExecBSInsertTriggers(), ExecBSUpdateTriggers(), ExecBuildSlotPartitionKeyDescription(), ExecCleanupTupleRouting(), ExecConstraints(), ExecDelete(), ExecFindPartition(), ExecGetTriggerResultRel(), ExecHashSubPlanResultRelsByOid(), ExecInitPartitionDispatchInfo(), ExecInsert(), ExecInsertIndexTuples(), ExecModifyTable(), ExecPartitionCheckEmitError(), ExecProcessReturning(), ExecSetupPartitionTupleRouting(), ExecSetupTransitionCaptureState(), ExecUpdate(), ExecuteTruncate(), ExecuteTruncateGuts(), ExecWithCheckOptions(), expand_single_inheritance_child(), file_acquire_sample_rows(), fileAnalyzeForeignTable(), fileBeginForeignScan(), fileExplainForeignScan(), fireRIRrules(), ForeignNext(), formrdesc(), generate_partition_qual(), generate_relation_name(), generateClonedIndexStmt(), get_catalog_object_by_oid(), get_object_address_attrdef(), get_object_address_attribute(), get_object_address_publication_rel(), get_object_address_relobject(), get_pkey_attnames(), get_qual_for_hash(), get_rel_data_width(), get_rel_from_relname(), get_relation_by_qualified_name(), get_relation_foreign_keys(), get_relation_info(), get_rels_with_domain(), GetFdwRoutineForRelation(), GetNewOidWithIndex(), GetParentedForeignKeyRefs(), GetRelationPublicationActions(), heap_abort_speculative(), heap_beginscan(), heap_create_with_catalog(), heap_delete(), heap_fetch(), heap_get_latest_tid(), heap_hot_search_buffer(), heap_lock_tuple(), heap_multi_insert(), heap_page_is_all_visible(), heap_prepare_insert(), heap_prune_chain(), heap_truncate_check_FKs(), heap_update(), heap_vacuum_rel(), heapam_fetch_row_version(), heapam_index_fetch_tuple(), heapam_relation_copy_for_cluster(), heapam_scan_analyze_next_tuple(), heapam_tuple_insert(), heapam_tuple_insert_speculative(), heapam_tuple_lock(), heapam_tuple_update(), heapgetpage(), index_beginscan_parallel(), index_build(), index_check_primary_key(), index_constraint_create(), index_create(), index_parallelscan_initialize(), index_update_stats(), IndexCheckExclusion(), IndexSetParentIndex(), is_publishable_relation(), IsCatalogRelation(), IsSystemRelation(), lazy_scan_heap(), logical_heap_rewrite_flush_mappings(), logical_rewrite_log_mapping(), logicalrep_write_delete(), logicalrep_write_insert(), logicalrep_write_rel(), logicalrep_write_update(), make_append_rel_info(), make_inh_translation_list(), MergeAttributes(), MergeAttributesIntoExisting(), MergeConstraintsIntoExisting(), MergeWithExistingConstraint(), OpenTableList(), PartitionDirectoryLookup(), pg_decode_change(), pg_nextoid(), pgoutput_change(), pgoutput_truncate(), pgrowlocks(), pgstat_report_analyze(), plpython_call_handler(), pltcl_trigger_handler(), postgresAcquireSampleRowsFunc(), postgresAnalyzeForeignTable(), postgresBeginDirectModify(), postgresBeginForeignInsert(), postgresIsForeignRelUpdatable(), PrepareToInvalidateCacheTuple(), process_owned_by(), publication_add_relation(), PublicationAddTables(), PublicationDropTables(), rebuild_relation(), refuseDupeIndexAttach(), ReindexRelationConcurrently(), relation_has_policies(), relation_mark_replica_identity(), RelationBuildDesc(), RelationBuildLocalRelation(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), RelationBuildRowSecurity(), RelationBuildRuleLock(), RelationBuildTriggers(), RelationBuildTupleDesc(), RelationCacheInitializePhase3(), RelationCacheInvalidate(), RelationClearMissing(), RelationClearRelation(), RelationGetExclusionInfo(), RelationGetFKeyList(), RelationGetIndexList(), RelationGetStatExtList(), RelationInitIndexAccessInfo(), RelationInitLockInfo(), RelationInitPhysicalAddr(), RelationReloadIndexInfo(), RelationReloadNailed(), RelationSetNewRelfilenode(), RemoveInheritance(), RewriteQuery(), ri_FetchConstraintInfo(), RI_Initial_Check(), RI_PartitionRemove_Check(), search_plan_tree(), SetMatViewPopulatedState(), SetRelationNumChecks(), statapprox_heap(), StoreAttrDefault(), StorePartitionBound(), StorePartitionKey(), StoreRelCheck(), systable_beginscan(), systable_beginscan_ordered(), systable_recheck_tuple(), table_beginscan_catalog(), table_beginscan_parallel(), table_block_parallelscan_initialize(), table_scan_getnextslot(), TidListEval(), toast_get_valid_index(), toast_open_indexes(), toast_save_datum(), toastrel_valueid_exists(), transformIndexConstraint(), transformOnConflictArbiter(), transformPartitionBound(), transformPartitionRangeBounds(), transformTableLikeClause(), vac_update_relstats(), vacuum_rel(), validateForeignKeyConstraint(), validatePartitionedIndex(), and write_relcache_init_file().

◆ RelationGetTargetBlock

#define RelationGetTargetBlock (   relation)    ( (relation)->rd_smgr != NULL ? (relation)->rd_smgr->smgr_targblock : InvalidBlockNumber )

◆ RelationGetTargetPageFreeSpace

#define RelationGetTargetPageFreeSpace (   relation,
  defaultff 
)    (BLCKSZ * (100 - RelationGetFillFactor(relation, defaultff)) / 100)

◆ RelationGetTargetPageUsage

#define RelationGetTargetPageUsage (   relation,
  defaultff 
)    (BLCKSZ * RelationGetFillFactor(relation, defaultff) / 100)

Definition at line 298 of file rel.h.

Referenced by _hash_init().

◆ RelationGetToastTupleTarget

#define RelationGetToastTupleTarget (   relation,
  defaulttarg 
)
Value:
((relation)->rd_options ? \
((StdRdOptions *) (relation)->rd_options)->toast_tuple_target : (defaulttarg))

Definition at line 282 of file rel.h.

Referenced by toast_insert_or_update().

◆ RelationHasCascadedCheckOption

#define RelationHasCascadedCheckOption (   relation)
Value:
((relation)->rd_options && \
((ViewOptions *) (relation)->rd_options)->check_option_offset != 0 ? \
strcmp((char *) (relation)->rd_options + \
((ViewOptions *) (relation)->rd_options)->check_option_offset, \
"cascaded") == 0 : false)

Definition at line 375 of file rel.h.

Referenced by rewriteTargetView().

◆ RelationHasCheckOption

#define RelationHasCheckOption (   relation)
Value:
((relation)->rd_options && \
((ViewOptions *) (relation)->rd_options)->check_option_offset != 0)

Definition at line 354 of file rel.h.

Referenced by rewriteTargetView().

◆ RelationHasLocalCheckOption

#define RelationHasLocalCheckOption (   relation)
Value:
((relation)->rd_options && \
((ViewOptions *) (relation)->rd_options)->check_option_offset != 0 ? \
strcmp((char *) (relation)->rd_options + \
((ViewOptions *) (relation)->rd_options)->check_option_offset, \
"local") == 0 : false)

Definition at line 363 of file rel.h.

◆ RelationHasReferenceCountZero

#define RelationHasReferenceCountZero (   relation)    ((bool)((relation)->rd_refcnt == 0))

◆ RelationIsAccessibleInLogicalDecoding

#define RelationIsAccessibleInLogicalDecoding (   relation)
Value:
RelationNeedsWAL(relation) && \
bool IsCatalogRelation(Relation relation)
Definition: catalog.c:100
#define XLogLogicalInfoActive()
Definition: xlog.h:198
#define RelationIsUsedAsCatalogTable(relation)
Definition: rel.h:313

Definition at line 570 of file rel.h.

Referenced by GetOldestXmin(), heap_delete(), heap_insert(), heap_multi_insert(), heap_page_prune_opt(), heap_update(), logical_begin_heap_rewrite(), and RelationInitPhysicalAddr().

◆ RelationIsLogicallyLogged

#define RelationIsLogicallyLogged (   relation)
Value:
RelationNeedsWAL(relation) && \
!IsCatalogRelation(relation))
bool IsCatalogRelation(Relation relation)
Definition: catalog.c:100
#define XLogLogicalInfoActive()
Definition: xlog.h:198

Definition at line 586 of file rel.h.

Referenced by apply_handle_truncate(), ExecuteTruncate(), ExecuteTruncateGuts(), ExtractReplicaIdentity(), heap_insert(), heap_multi_insert(), log_heap_update(), and ReorderBufferCommit().

◆ RelationIsMapped

#define RelationIsMapped (   relation)
Value:
(RELKIND_HAS_STORAGE((relation)->rd_rel->relkind) && \
((relation)->rd_rel->relfilenode == InvalidOid))
#define InvalidOid
Definition: postgres_ext.h:36

Definition at line 463 of file rel.h.

Referenced by ATExecSetTableSpace(), create_toast_table(), index_create(), make_new_heap(), RelationCacheInvalidate(), and RelationSetNewRelfilenode().

◆ RelationIsPopulated

#define RelationIsPopulated (   relation)    ((relation)->rd_rel->relispopulated)

Definition at line 563 of file rel.h.

Referenced by cluster_rel(), and ExecRefreshMatView().

◆ RelationIsScannable

#define RelationIsScannable (   relation)    ((relation)->rd_rel->relispopulated)

Definition at line 555 of file rel.h.

Referenced by ExecOpenScanRelation().

◆ RelationIsSecurityView

#define RelationIsSecurityView (   relation)
Value:
((relation)->rd_options ? \
((ViewOptions *) (relation)->rd_options)->security_barrier : false)

Definition at line 345 of file rel.h.

Referenced by ApplyRetrieveRule(), and rewriteTargetView().

◆ RelationIsUsedAsCatalogTable

#define RelationIsUsedAsCatalogTable (   relation)
Value:
((relation)->rd_options && \
((relation)->rd_rel->relkind == RELKIND_RELATION || \
(relation)->rd_rel->relkind == RELKIND_MATVIEW) ? \
((StdRdOptions *) (relation)->rd_options)->user_catalog_table : false)

Definition at line 313 of file rel.h.

Referenced by ATRewriteTables(), and transformOnConflictArbiter().

◆ RelationIsValid

◆ RelationNeedsWAL

#define RelationNeedsWAL (   relation)    ((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT)

Definition at line 516 of file rel.h.

Referenced by _bt_delitems_delete(), _bt_delitems_vacuum(), _bt_drop_lock_and_maybe_pin(), _bt_getbuf(), _bt_getroot(), _bt_insertonpg(), _bt_leafbuild(), _bt_load(), _bt_mark_page_halfdead(), _bt_newroot(), _bt_split(), _bt_unlink_halfdead_page(), _bt_update_meta_cleanup_info(), _hash_addovflpage(), _hash_alloc_buckets(), _hash_doinsert(), _hash_expandtable(), _hash_freeovflpage(), _hash_init(), _hash_splitbucket(), _hash_squeezebucket(), _hash_vacuum_one_page(), addLeafTuple(), AlterSequence(), brin_doinsert(), brin_doupdate(), brinbuild(), brinRevmapDesummarizeRange(), check_publication_add_relation(), createPostingTree(), dataBeginPlaceToPageLeaf(), dataExecPlaceToPageInternal(), dataExecPlaceToPageLeaf(), do_setval(), doPickSplit(), end_heap_rewrite(), entryExecPlaceToPage(), fill_seq_with_data(), FreeSpaceMapTruncateRel(), GenericXLogStart(), get_relation_info(), ginbuild(), ginDeletePage(), ginHeapTupleFastInsert(), ginPlaceToPage(), ginUpdateStats(), ginVacuumPostingTreeLeaf(), gistbuild(), gistdeletepage(), gistdoinsert(), gistNewBuffer(), gistplacetopage(), gistprunepage(), gistvacuumpage(), gistvacuumscan(), hashbucketcleanup(), hashbulkdelete(), heap_abort_speculative(), heap_delete(), heap_finish_speculative(), heap_inplace_update(), heap_insert(), heap_lock_tuple(), heap_lock_updated_tuple_rec(), heap_multi_insert(), heap_page_prune(), heap_sync(), heap_update(), heapam_relation_copy_for_cluster(), lazy_scan_heap(), lazy_vacuum_page(), log_heap_clean(), log_heap_freeze(), log_heap_update(), log_split_page(), moveLeafs(), nextval_internal(), pg_truncate_visibility_map(), RelationTruncate(), revmap_physical_extend(), shiftList(), spgAddNodeAction(), spgbuild(), spgSplitNodeAction(), vacuum_log_cleanup_info(), vacuumLeafPage(), vacuumLeafRoot(), vacuumRedirectAndPlaceholder(), visibilitymap_set(), visibilitymap_truncate(), writeListPage(), and xlogVacuumPage().

◆ RelationOpenSmgr

#define RelationOpenSmgr (   relation)

◆ RelationSetTargetBlock

#define RelationSetTargetBlock (   relation,
  targblock 
)
Value:
do { \
RelationOpenSmgr(relation); \
(relation)->rd_smgr->smgr_targblock = (targblock); \
} while (0)

Definition at line 506 of file rel.h.

Referenced by _bt_doinsert(), _bt_insertonpg(), brin_getinsertbuffer(), and RelationGetBufferForTuple().

◆ RelationUsesLocalBuffers

#define RelationUsesLocalBuffers (   relation)    ((relation)->rd_rel->relpersistence == RELPERSISTENCE_TEMP)

Typedef Documentation

◆ AutoVacOpts

◆ ForeignKeyCacheInfo

◆ LockInfo

Definition at line 47 of file rel.h.

◆ LockInfoData

◆ LockRelId

◆ RelationData

◆ StdRdOptions

◆ ViewOptions

Function Documentation

◆ RelationDecrementReferenceCount()

void RelationDecrementReferenceCount ( Relation  rel)

Definition at line 2070 of file relcache.c.

References Assert, CurrentResourceOwner, IsBootstrapProcessingMode, RelationData::rd_refcnt, and ResourceOwnerForgetRelationRef().

Referenced by DestroyPartitionDirectory(), heap_endscan(), index_endscan(), RelationCacheInitializePhase3(), RelationClose(), and RelationFlushRelation().

2071 {
2072  Assert(rel->rd_refcnt > 0);
2073  rel->rd_refcnt -= 1;
2076 }
ResourceOwner CurrentResourceOwner
Definition: resowner.c:142
void ResourceOwnerForgetRelationRef(ResourceOwner owner, Relation rel)
Definition: resowner.c:1072
#define Assert(condition)
Definition: c.h:732
#define IsBootstrapProcessingMode()
Definition: miscadmin.h:374
int rd_refcnt
Definition: rel.h:58

◆ RelationGetRepsetList()

List* RelationGetRepsetList ( Relation  rel)

◆ RelationHasUnloggedIndex()

bool RelationHasUnloggedIndex ( Relation  rel)

Definition at line 5946 of file relcache.c.

References elog, ERROR, GETSTRUCT, HeapTupleIsValid, lfirst_oid, list_free(), ObjectIdGetDatum, RelationGetIndexList(), ReleaseSysCache(), RELOID, and SearchSysCache1().

5947 {
5948  List *indexoidlist;
5949  ListCell *indexoidscan;
5950  bool result = false;
5951 
5952  indexoidlist = RelationGetIndexList(rel);
5953 
5954  foreach(indexoidscan, indexoidlist)
5955  {
5956  Oid indexoid = lfirst_oid(indexoidscan);
5957  HeapTuple tp;
5958  Form_pg_class reltup;
5959 
5960  tp = SearchSysCache1(RELOID, ObjectIdGetDatum(indexoid));
5961  if (!HeapTupleIsValid(tp))
5962  elog(ERROR, "cache lookup failed for relation %u", indexoid);
5963  reltup = (Form_pg_class) GETSTRUCT(tp);
5964 
5965  if (reltup->relpersistence == RELPERSISTENCE_UNLOGGED)
5966  result = true;
5967 
5968  ReleaseSysCache(tp);
5969 
5970  if (result == true)
5971  break;
5972  }
5973 
5974  list_free(indexoidlist);
5975 
5976  return result;
5977 }
#define GETSTRUCT(TUP)
Definition: htup_details.h:655
unsigned int Oid
Definition: postgres_ext.h:31
#define ObjectIdGetDatum(X)
Definition: postgres.h:507
#define ERROR
Definition: elog.h:43
HeapTuple SearchSysCache1(int cacheId, Datum key1)
Definition: syscache.c:1124
void ReleaseSysCache(HeapTuple tuple)
Definition: syscache.c:1172
#define HeapTupleIsValid(tuple)
Definition: htup.h:78
List * RelationGetIndexList(Relation relation)
Definition: relcache.c:4342
FormData_pg_class * Form_pg_class
Definition: pg_class.h:150
void list_free(List *list)
Definition: list.c:1136
#define elog(elevel,...)
Definition: elog.h:226
Definition: pg_list.h:45
#define lfirst_oid(lc)
Definition: pg_list.h:108

◆ RelationIncrementReferenceCount()

void RelationIncrementReferenceCount ( Relation  rel)

Definition at line 2057 of file relcache.c.

References CurrentResourceOwner, IsBootstrapProcessingMode, RelationData::rd_refcnt, ResourceOwnerEnlargeRelationRefs(), and ResourceOwnerRememberRelationRef().

Referenced by heap_beginscan(), index_beginscan_internal(), PartitionDirectoryLookup(), RelationBuildLocalRelation(), RelationCacheInitializePhase3(), RelationFlushRelation(), and RelationIdGetRelation().

2058 {
2060  rel->rd_refcnt += 1;
2063 }
ResourceOwner CurrentResourceOwner
Definition: resowner.c:142
void ResourceOwnerRememberRelationRef(ResourceOwner owner, Relation rel)
Definition: resowner.c:1063
void ResourceOwnerEnlargeRelationRefs(ResourceOwner owner)
Definition: resowner.c:1052
#define IsBootstrapProcessingMode()
Definition: miscadmin.h:374
int rd_refcnt
Definition: rel.h:58