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  PartitionKeyData
 
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 RelationGetDescr(relation)   ((relation)->rd_att)
 
#define RelationGetRelationName(relation)   (NameStr((relation)->rd_rel->relname))
 
#define RelationGetNamespace(relation)   ((relation)->rd_rel->relnamespace)
 
#define RelationIsMapped(relation)   ((relation)->rd_rel->relfilenode == InvalidOid)
 
#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 PartitionKeyData PartitionKeyData
 
typedef struct PartitionKeyDataPartitionKey
 
typedef struct RelationData RelationData
 
typedef struct ForeignKeyCacheInfo ForeignKeyCacheInfo
 
typedef struct AutoVacOpts AutoVacOpts
 
typedef struct StdRdOptions StdRdOptions
 
typedef struct ViewOptions ViewOptions
 

Functions

static int get_partition_strategy (PartitionKey key)
 
static int get_partition_natts (PartitionKey key)
 
static Listget_partition_exprs (PartitionKey key)
 
static int16 get_partition_col_attnum (PartitionKey key, int col)
 
static Oid get_partition_col_typid (PartitionKey key, int col)
 
static int32 get_partition_col_typmod (PartitionKey key, int col)
 
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 286 of file rel.h.

◆ InvalidRelation

#define InvalidRelation   ((Relation) NULL)

Definition at line 400 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:451

Definition at line 532 of file rel.h.

Referenced by _bt_getbuf(), BloomNewBuffer(), brin_getinsertbuffer(), btvacuumscan(), GinNewBuffer(), ginvacuumcleanup(), gistNewBuffer(), gistvacuumcleanup(), 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 481 of file rel.h.

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

◆ RelationGetDescr

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

Definition at line 437 of file rel.h.

Referenced by _bt_check_unique(), _bt_checkkeys(), _bt_compare(), _bt_load(), _bt_mkscankey(), _hash_checkqual(), acquire_inherited_sample_rows(), AddEnumLabel(), AddRelationNewConstraints(), AddRoleMems(), 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(), ApplyExtensionUpdates(), ApplySetting(), ATExecAddOf(), ATExecAlterColumnGenericOptions(), ATExecAttachPartition(), ATExecChangeOwner(), ATExecDetachPartition(), ATExecDropNotNull(), ATExecGenericOptions(), ATExecSetOptions(), ATExecSetRelOptions(), ATGetQueueEntry(), ATPrepAlterColumnType(), ATRewriteTable(), BeginCopy(), BeginCopyFrom(), brin_build_desc(), brin_page_items(), btbeginscan(), btinsert(), build_row_from_class(), BuildEventTriggerCache(), CatalogCacheInitializeCache(), CatalogIndexInsert(), change_owner_fix_column_acls(), check_default_allows_bound(), check_exclusion_or_unique_constraint(), check_selective_binary_conversion(), CheckAttributeType(), CollationCreate(), comparetup_index_btree(), compute_index_stats(), ConstructTupleDescriptor(), conversion_error_callback(), copy_heap_data(), CopyFrom(), copyTemplateDependencies(), CopyTo(), copytup_index(), create_proc_lang(), CreateAccessMethod(), CreateCast(), CreateComments(), CreateConstraintEntry(), createdb(), CreatePolicy(), CreatePublication(), CreateRole(), CreateSharedComments(), CreateSubscription(), CreateTransform(), currtid_for_view(), DefineQueryRewrite(), DefineSequence(), DelRoleMems(), deparseAnalyzeSql(), deparseTargetList(), do_autovacuum(), DoCopy(), EnumValuesCreate(), errtablecol(), EventTriggerSQLDropAddObject(), ExecAlterExtensionStmt(), ExecBRInsertTriggers(), ExecBRUpdateTriggers(), ExecCheckPlanOutput(), ExecConstraints(), ExecDelete(), 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(), ExecInitIndexScan(), ExecInitTidScan(), ExecInsert(), ExecIRInsertTriggers(), ExecIRUpdateTriggers(), ExecPartitionCheck(), ExecSetupPartitionTupleRouting(), ExecSetupTransitionCaptureState(), ExecWithCheckOptions(), extension_config_remove(), ExtractReplicaIdentity(), file_acquire_sample_rows(), find_language_template(), generateClonedIndexStmt(), get_actual_variable_range(), get_file_fdw_attribute_options(), get_object_address_attrdef(), get_partition_dispatch_recurse(), get_primary_key_attnos(), get_relation_constraint_attnos(), GetComment(), GetSecurityLabel(), GetSharedSecurityLabel(), hashbuildCallback(), hashinsert(), HeapDetermineModifiedColumns(), heapgettup(), heapgettup_pagemode(), IndexBuildHeapRangeScan(), IndexCheckExclusion(), initGinState(), InitializeAttributeOids(), InitScanRelation(), 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(), 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(), pgoutput_change(), pltcl_build_tuple_result(), pltcl_trigger_handler(), PLy_exec_trigger(), PLy_modify_tuple(), PLy_trigger_build_args(), postgresAcquireSampleRowsFunc(), postgresBeginDirectModify(), postgresBeginForeignModify(), postgresBeginForeignScan(), postgresPlanForeignModify(), ProcedureCreate(), publication_add_relation(), RangeCreate(), readtup_index(), recordExtensionInitPrivWorker(), recordExtObjInitPriv(), RelationBuildRowSecurity(), RelationBuildRuleLock(), RelationFindReplTupleSeq(), RelationNameGetTupleDesc(), RelidByRelfilenode(), RemoveRoleFromObjectPolicy(), RenameRole(), ReorderBufferToastAppendChunk(), ReorderBufferToastReplace(), replorigin_create(), ri_KeysEqual(), sepgsql_relation_setattr_extra(), set_relation_column_names(), SetDefaultACL(), SetSecurityLabel(), SetSharedSecurityLabel(), SetSubscriptionRelState(), shdepChangeDep(), slot_fill_defaults(), spgbeginscan(), statext_store(), StoreCatalogInheritance1(), StorePartitionBound(), StorePartitionKey(), transformTableLikeClause(), TriggerEnabled(), tuplesort_putindextuplevalues(), TypeCreate(), unique_key_recheck(), update_attstats(), UpdateIndexRelation(), validate_index_heapscan(), validateCheckConstraint(), and validateDomainConstraint().

◆ RelationGetFillFactor

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

Definition at line 301 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 335 of file rel.h.

Referenced by get_relation_info().

◆ RelationGetPartitionDesc

◆ RelationGetPartitionKey

◆ RelationGetRelationName

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

Definition at line 445 of file rel.h.

Referenced by _bt_buildadd(), _bt_check_unique(), _bt_checkpage(), _bt_findinsertloc(), _bt_findsplitloc(), _bt_first(), _bt_get_endpoint(), _bt_getroot(), _bt_getrootheight(), _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_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(), 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(), ATExecChangeOwner(), 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(), BeginCopy(), BeginCopyFrom(), BeginCopyTo(), blbuild(), brin_desummarize_range(), brin_doinsert(), brin_doupdate(), brin_getinsertbuffer(), brin_summarize_range(), brinbuild(), brinRevmapDesummarizeRange(), bt_check_every_level(), bt_check_level_from_leftmost(), bt_downlink_check(), bt_index_check_internal(), bt_metap(), bt_page_items(), bt_page_stats(), bt_right_page_check_scankey(), bt_target_page_check(), btbuild(), btree_index_checkable(), build_row_from_class(), BuildRelationExtStatistics(), CatalogCacheInitializeCache(), check_default_allows_bound(), 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(), CheckTableNotInUse(), CheckValidResultRel(), CheckValidRowMarkRel(), closerel(), CommentObject(), comparetup_index_btree(), conversion_error_callback(), copy_heap_data(), copy_table(), 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(), EvalPlanQualFetch(), EvalPlanQualFetchRowMarks(), ExecCheckIndexConstraints(), ExecConstraints(), ExecFindPartition(), ExecLockRows(), ExecOpenScanRelation(), ExecPartitionCheck(), ExecRefreshMatView(), ExecSecLabelStmt(), ExecuteTruncate(), 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(), GetNewOid(), gin_clean_pending_list(), ginbuild(), ginFinishSplit(), GinFormTuple(), ginHeapTupleFastInsert(), ginNewScanKey(), ginVacuumEntryPage(), gistbuild(), gistbulkdelete(), gistcheckpage(), gistdoinsert(), gistFindPath(), gistfixsplit(), gistplacetopage(), gistrescan(), gistSplit(), gistUserPicksplit(), hash_bitmap_info(), hashbuild(), heap_acquire_tuplock(), heap_get_latest_tid(), heap_lock_tuple(), heap_open(), heap_openrv(), heap_openrv_extended(), index_build(), index_check_primary_key(), index_getprocinfo(), index_open(), IndexBuildHeapRangeScan(), init_sequence(), initGinState(), InsertOneNull(), lastval(), lazy_cleanup_index(), lazy_scan_heap(), lazy_truncate_heap(), lazy_vacuum_heap(), lazy_vacuum_index(), lazy_vacuum_rel(), load_relcache_init_file(), logicalrep_write_rel(), make_inh_translation_list(), MergeAttributes(), MergeAttributesIntoExisting(), MergeConstraintsIntoExisting(), MergeWithExistingConstraint(), nextval_internal(), palloc_btree_page(), pg_sequence_last_value(), pgrowlocks(), pgstat_relation(), pgstatginindex_internal(), pgstathashindex(), pgstatindex_impl(), pgstattuple_approx_internal(), plpgsql_exec_trigger(), postgresAcquireSampleRowsFunc(), PrintRelCacheLeakWarning(), process_owned_by(), publication_add_relation(), PublicationAddTables(), PublicationDropTables(), quoteRelationName(), read_seq_tuple(), RebuildConstraintComment(), refresh_by_match_merge(), relation_mark_replica_identity(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), RelationBuildRuleLock(), RelationBuildTriggers(), RelationBuildTupleDesc(), RelationCacheInitializePhase3(), RelationGetBufferForTuple(), RelationGetExclusionInfo(), RelationGetFKeyList(), RelationInitIndexAccessInfo(), RelationInitPhysicalAddr(), 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(), StoreAttrDefault(), StoreRelCheck(), systable_beginscan_ordered(), test_rls_hooks_permissive(), test_rls_hooks_restrictive(), toast_fetch_datum(), toast_fetch_datum_slice(), transformFkeyCheckAttrs(), transformFkeyGetPrimaryKey(), transformIndexConstraint(), transformOnConflictArbiter(), transformPartitionBound(), transformPartitionCmd(), transformTableLikeClause(), transformUpdateTargetList(), triggered_change_notification(), truncate_check_rel(), vacuum_rel(), vacuumLeafPage(), validate_index_heapscan(), validateDomainConstraint(), ValidatePartitionConstraints(), visibilitymap_clear(), visibilitymap_get_status(), visibilitymap_set(), visibilitymap_truncate(), writeListPage(), and XactLockTableWaitErrorCb().

◆ RelationGetRelid

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

Definition at line 425 of file rel.h.

Referenced by acquire_inherited_sample_rows(), acquire_sample_rows(), addRangeTableEntry(), addRangeTableEntryForRelation(), AddRelationNewConstraints(), afterTriggerInvokeEvents(), AfterTriggerSaveEvent(), AlterObjectNamespace_internal(), AlterObjectOwner_internal(), AlterObjectRename_internal(), AlterPublicationTables(), AlterSchemaOwner_internal(), AlterSeqNamespaces(), AlterTableNamespaceInternal(), analyze_rel(), ATAddCheckConstraint(), ATAddForeignKeyConstraint(), ATExecAddColumn(), ATExecAddConstraint(), ATExecAddIdentity(), ATExecAddIndex(), ATExecAddInherit(), ATExecAddOf(), ATExecAlterColumnGenericOptions(), ATExecAlterColumnType(), ATExecAlterConstraint(), ATExecAttachPartition(), ATExecCmd(), ATExecColumnDefault(), ATExecDetachPartition(), ATExecDisableRowSecurity(), ATExecDropColumn(), ATExecDropConstraint(), ATExecDropIdentity(), ATExecDropInherit(), ATExecDropNotNull(), ATExecDropOf(), ATExecEnableRowSecurity(), ATExecForceNoForceRowSecurity(), ATExecGenericOptions(), ATExecReplicaIdentity(), ATExecSetIdentity(), ATExecSetNotNull(), ATExecSetOptions(), ATExecSetRelOptions(), ATExecSetStatistics(), ATExecSetStorage(), ATExecSetTableSpace(), ATExecValidateConstraint(), ATGetQueueEntry(), ATPrepAlterColumnType(), ATPrepChangePersistence(), ATPrepSetStatistics(), ATRewriteTable(), ATSimplePermissions(), ATSimpleRecursion(), AttrDefaultFetch(), BeginCopyFrom(), bringetbitmap(), brininsert(), brinvacuumcleanup(), build_replindex_scan_key(), BuildIndexInfo(), BuildIndexValueDescription(), BuildRelationExtStatistics(), CacheInvalidateHeapTuple(), CacheInvalidateRelcache(), check_default_allows_bound(), check_for_column_name_collision(), check_index_is_clusterable(), check_object_ownership(), CheckConstraintFetch(), checkFkeyPermissions(), CheckTableNotInUse(), ComputePartitionAttrs(), CopyFrom(), create_estate_for_relation(), create_toast_table(), createForeignKeyTriggers(), CreateInheritance(), CreateStatistics(), CreateTrigger(), currtid_byrelname(), currtid_byreloid(), DefineIndex(), DefineRelation(), deparseAnalyzeSql(), deparseRelation(), do_analyze_rel(), DoCopy(), EnableDisableRule(), EnableDisableTrigger(), errtablecol(), ExecBSDeleteTriggers(), ExecBSInsertTriggers(), ExecBSUpdateTriggers(), ExecBuildSlotPartitionKeyDescription(), ExecConstraints(), ExecDelete(), ExecFindPartition(), ExecGetTriggerResultRel(), ExecInsert(), ExecInsertIndexTuples(), ExecModifyTable(), ExecPartitionCheck(), ExecProcessReturning(), ExecSetupPartitionTupleRouting(), ExecSetupTransitionCaptureState(), ExecUpdate(), ExecuteTruncate(), 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(), GetRelationPublicationActions(), GetTupleForTrigger(), heap_abort_speculative(), heap_beginscan_catalog(), heap_beginscan_internal(), heap_beginscan_parallel(), heap_create_with_catalog(), heap_delete(), heap_fetch(), heap_get_latest_tid(), heap_hot_search_buffer(), heap_lock_tuple(), heap_page_is_all_visible(), heap_parallelscan_initialize(), heap_prepare_insert(), heap_prune_chain(), heap_truncate_check_FKs(), heap_update(), heapgetpage(), index_beginscan_parallel(), index_build(), index_check_primary_key(), index_constraint_create(), index_create(), index_parallelscan_initialize(), index_update_stats(), IndexCheckExclusion(), IsCatalogRelation(), IsSystemRelation(), lazy_scan_heap(), lazy_vacuum_rel(), logical_heap_rewrite_flush_mappings(), logical_rewrite_log_mapping(), logicalrep_write_delete(), logicalrep_write_insert(), logicalrep_write_rel(), logicalrep_write_update(), MergeAttributes(), MergeAttributesIntoExisting(), MergeConstraintsIntoExisting(), MergeWithExistingConstraint(), OpenTableList(), pg_decode_change(), pgoutput_change(), pgrowlocks(), pgstat_report_analyze(), plpython_call_handler(), pltcl_trigger_handler(), postgresAcquireSampleRowsFunc(), postgresAnalyzeForeignTable(), postgresBeginDirectModify(), postgresBeginForeignModify(), postgresIsForeignRelUpdatable(), PrepareToInvalidateCacheTuple(), process_owned_by(), publication_add_relation(), PublicationAddTables(), PublicationDropTables(), rebuild_relation(), reindex_relation(), relation_has_policies(), relation_mark_replica_identity(), RelationBuildDesc(), RelationBuildLocalRelation(), RelationBuildPartitionDesc(), RelationBuildPartitionKey(), RelationBuildRowSecurity(), RelationBuildRuleLock(), RelationBuildTriggers(), RelationBuildTupleDesc(), RelationCacheInitializePhase3(), RelationCacheInvalidate(), RelationClearRelation(), RelationGetExclusionInfo(), RelationGetFKeyList(), RelationGetIndexList(), RelationGetStatExtList(), RelationInitIndexAccessInfo(), RelationInitLockInfo(), RelationInitPhysicalAddr(), RelationReloadIndexInfo(), RelationSetNewRelfilenode(), RemoveInheritance(), RewriteQuery(), rewriteTargetListIU(), ri_FetchConstraintInfo(), RI_Initial_Check(), search_plan_tree(), SetMatViewPopulatedState(), SetRelationNumChecks(), statapprox_heap(), StoreAttrDefault(), StorePartitionBound(), StorePartitionKey(), StoreRelCheck(), systable_beginscan(), systable_beginscan_ordered(), systable_recheck_tuple(), TidListEval(), toast_get_valid_index(), toast_open_indexes(), toast_save_datum(), toastrel_valueid_exists(), transformIndexConstraint(), transformOnConflictArbiter(), transformPartitionBound(), transformTableLikeClause(), truncate_check_rel(), vac_update_relstats(), vacuum_rel(), validateForeignKeyConstraint(), ValidatePartitionConstraints(), 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 309 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 293 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 386 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 365 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 374 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:92
#define XLogLogicalInfoActive()
Definition: xlog.h:163
#define RelationIsUsedAsCatalogTable(relation)
Definition: rel.h:324

Definition at line 568 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:92
#define XLogLogicalInfoActive()
Definition: xlog.h:163

Definition at line 584 of file rel.h.

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

◆ RelationIsMapped

#define RelationIsMapped (   relation)    ((relation)->rd_rel->relfilenode == InvalidOid)

◆ RelationIsPopulated

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

Definition at line 561 of file rel.h.

Referenced by cluster_rel(), and ExecRefreshMatView().

◆ RelationIsScannable

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

Definition at line 553 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 356 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)
#define RELKIND_MATVIEW
Definition: pg_class.h:165
#define RELKIND_RELATION
Definition: pg_class.h:160

Definition at line 324 of file rel.h.

Referenced by ATRewriteTables(), and transformOnConflictArbiter().

◆ RelationIsValid

◆ RelationNeedsWAL

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

Definition at line 514 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(), _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(), copy_heap_data(), 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(), gistbulkdelete(), gistdoinsert(), gistplacetopage(), gistvacuumpage(), 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(), 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)
Value:
do { \
if ((relation)->rd_smgr == NULL) \
smgrsetowner(&((relation)->rd_smgr), smgropen((relation)->rd_node, (relation)->rd_backend)); \
} while (0)
SMgrRelation smgropen(RelFileNode rnode, BackendId backend)
Definition: smgr.c:137

Definition at line 469 of file rel.h.

Referenced by _bt_blwritepage(), _bt_load(), _hash_alloc_buckets(), ATExecSetTableSpace(), autoprewarm_database_main(), end_heap_rewrite(), FlushRelationBuffers(), FreeSpaceMapTruncateRel(), fsm_extend(), fsm_readbuf(), heap_create(), heap_create_init_fork(), index_build(), pg_prewarm(), pg_truncate_visibility_map(), PrefetchBuffer(), raw_heap_insert(), ReadBufferExtended(), RelationGetNumberOfBlocksInFork(), RelationTruncate(), visibilitymap_truncate(), vm_extend(), and vm_readbuf().

◆ RelationSetTargetBlock

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

Definition at line 504 of file rel.h.

Referenced by 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

◆ PartitionKey

Definition at line 77 of file rel.h.

◆ PartitionKeyData

◆ RelationData

◆ StdRdOptions

◆ ViewOptions

Function Documentation

◆ get_partition_col_attnum()

static int16 get_partition_col_attnum ( PartitionKey  key,
int  col 
)
inlinestatic

Definition at line 620 of file rel.h.

References PartitionKeyData::partattrs.

Referenced by ExecBuildSlotPartitionKeyDescription(), and is_partition_attr().

621 {
622  return key->partattrs[col];
623 }
AttrNumber * partattrs
Definition: rel.h:56

◆ get_partition_col_typid()

static Oid get_partition_col_typid ( PartitionKey  key,
int  col 
)
inlinestatic

Definition at line 626 of file rel.h.

References PartitionKeyData::parttypid.

Referenced by ExecBuildSlotPartitionKeyDescription(), and transformPartitionBound().

627 {
628  return key->parttypid[col];
629 }
Oid * parttypid
Definition: rel.h:69

◆ get_partition_col_typmod()

static int32 get_partition_col_typmod ( PartitionKey  key,
int  col 
)
inlinestatic

Definition at line 632 of file rel.h.

References PartitionKeyData::parttypmod.

Referenced by transformPartitionBound().

633 {
634  return key->parttypmod[col];
635 }
int32 * parttypmod
Definition: rel.h:70

◆ get_partition_exprs()

static List* get_partition_exprs ( PartitionKey  key)
inlinestatic

Definition at line 611 of file rel.h.

References PartitionKeyData::partexprs.

Referenced by is_partition_attr(), and transformPartitionBound().

612 {
613  return key->partexprs;
614 }
List * partexprs
Definition: rel.h:58

◆ get_partition_natts()

static int get_partition_natts ( PartitionKey  key)
inlinestatic

Definition at line 605 of file rel.h.

References PartitionKeyData::partnatts.

Referenced by ExecBuildSlotPartitionKeyDescription(), is_partition_attr(), and transformPartitionBound().

606 {
607  return key->partnatts;
608 }
int16 partnatts
Definition: rel.h:55

◆ get_partition_strategy()

static int get_partition_strategy ( PartitionKey  key)
inlinestatic

Definition at line 599 of file rel.h.

References PartitionKeyData::strategy.

Referenced by transformPartitionBound().

600 {
601  return key->strategy;
602 }
char strategy
Definition: rel.h:54

◆ RelationDecrementReferenceCount()

void RelationDecrementReferenceCount ( Relation  rel)

Definition at line 2147 of file relcache.c.

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

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

2148 {
2149  Assert(rel->rd_refcnt > 0);
2150  rel->rd_refcnt -= 1;
2153 }
ResourceOwner CurrentResourceOwner
Definition: resowner.c:138
void ResourceOwnerForgetRelationRef(ResourceOwner owner, Relation rel)
Definition: resowner.c:1014
#define Assert(condition)
Definition: c.h:670
#define IsBootstrapProcessingMode()
Definition: miscadmin.h:367
int rd_refcnt
Definition: rel.h:88

◆ RelationGetRepsetList()

List* RelationGetRepsetList ( Relation  rel)

◆ RelationHasUnloggedIndex()

bool RelationHasUnloggedIndex ( Relation  rel)

Definition at line 5998 of file relcache.c.

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

5999 {
6000  List *indexoidlist;
6001  ListCell *indexoidscan;
6002  bool result = false;
6003 
6004  indexoidlist = RelationGetIndexList(rel);
6005 
6006  foreach(indexoidscan, indexoidlist)
6007  {
6008  Oid indexoid = lfirst_oid(indexoidscan);
6009  HeapTuple tp;
6010  Form_pg_class reltup;
6011 
6012  tp = SearchSysCache1(RELOID, ObjectIdGetDatum(indexoid));
6013  if (!HeapTupleIsValid(tp))
6014  elog(ERROR, "cache lookup failed for relation %u", indexoid);
6015  reltup = (Form_pg_class) GETSTRUCT(tp);
6016 
6017  if (reltup->relpersistence == RELPERSISTENCE_UNLOGGED)
6018  result = true;
6019 
6020  ReleaseSysCache(tp);
6021 
6022  if (result == true)
6023  break;
6024  }
6025 
6026  list_free(indexoidlist);
6027 
6028  return result;
6029 }
#define GETSTRUCT(TUP)
Definition: htup_details.h:661
#define RELPERSISTENCE_UNLOGGED
Definition: pg_class.h:171
unsigned int Oid
Definition: postgres_ext.h:31
#define ObjectIdGetDatum(X)
Definition: postgres.h:513
#define ERROR
Definition: elog.h:43
HeapTuple SearchSysCache1(int cacheId, Datum key1)
Definition: syscache.c:1112
void ReleaseSysCache(HeapTuple tuple)
Definition: syscache.c:1160
#define HeapTupleIsValid(tuple)
Definition: htup.h:77
List * RelationGetIndexList(Relation relation)
Definition: relcache.c:4360
FormData_pg_class * Form_pg_class
Definition: pg_class.h:95
void list_free(List *list)
Definition: list.c:1133
#define elog
Definition: elog.h:219
Definition: pg_list.h:45
#define lfirst_oid(lc)
Definition: pg_list.h:108

◆ RelationIncrementReferenceCount()

void RelationIncrementReferenceCount ( Relation  rel)

Definition at line 2134 of file relcache.c.

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

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

2135 {
2137  rel->rd_refcnt += 1;
2140 }
ResourceOwner CurrentResourceOwner
Definition: resowner.c:138
void ResourceOwnerRememberRelationRef(ResourceOwner owner, Relation rel)
Definition: resowner.c:1005
void ResourceOwnerEnlargeRelationRefs(ResourceOwner owner)
Definition: resowner.c:994
#define IsBootstrapProcessingMode()
Definition: miscadmin.h:367
int rd_refcnt
Definition: rel.h:88