|
PostgreSQL Source Code git master
|
#include "postgres.h"#include "access/heapam.h"#include "access/heapam_xlog.h"#include "access/htup_details.h"#include "access/multixact.h"#include "access/transam.h"#include "access/visibilitymapdefs.h"#include "access/xlog.h"#include "access/xloginsert.h"#include "commands/vacuum.h"#include "executor/instrument.h"#include "miscadmin.h"#include "pgstat.h"#include "storage/bufmgr.h"#include "utils/rel.h"#include "utils/snapmgr.h"
Go to the source code of this file.
Data Structures | |
| struct | PruneState |
| void heap_get_root_tuples | ( | Page | page, |
| OffsetNumber * | root_offsets | ||
| ) |
Definition at line 1895 of file pruneheap.c.
References Assert, fb(), FirstOffsetNumber, HeapTupleHeaderGetUpdateXid(), HeapTupleHeaderGetXmin(), HeapTupleHeaderIndicatesMovedPartitions(), HeapTupleHeaderIsHeapOnly(), HeapTupleHeaderIsHotUpdated(), InvalidOffsetNumber, InvalidTransactionId, ItemIdGetRedirect, ItemIdIsDead, ItemIdIsNormal, ItemIdIsRedirected, ItemIdIsUsed, ItemPointerGetOffsetNumber(), MaxHeapTuplesPerPage, MemSet, OffsetNumberNext, PageGetItem(), PageGetItemId(), PageGetMaxOffsetNumber(), HeapTupleHeaderData::t_ctid, TransactionIdEquals, and TransactionIdIsValid.
Referenced by heapam_index_build_range_scan(), and heapam_index_validate_scan().
Definition at line 2022 of file pruneheap.c.
Referenced by heap_log_freeze_plan().
|
inlinestatic |
Definition at line 2006 of file pruneheap.c.
Referenced by heap_log_freeze_plan().
|
inlinestatic |
|
static |
Definition at line 2088 of file pruneheap.c.
References Assert, fb(), heap_log_freeze_cmp(), heap_log_freeze_eq(), heap_log_freeze_new_plan(), i, and qsort.
Referenced by log_heap_prune_and_freeze().
| void heap_page_prune_and_freeze | ( | PruneFreezeParams * | params, |
| PruneFreezeResult * | presult, | ||
| OffsetNumber * | off_loc, | ||
| TransactionId * | new_relfrozen_xid, | ||
| MultiXactId * | new_relmin_mxid | ||
| ) |
Definition at line 819 of file pruneheap.c.
References Assert, PruneFreezeParams::buffer, BufferGetPage(), END_CRIT_SECTION, fb(), heap_freeze_prepared_tuples(), heap_page_prune_execute(), heap_page_will_freeze(), InvalidBuffer, InvalidTransactionId, log_heap_prune_and_freeze(), MarkBufferDirty(), MarkBufferDirtyHint(), PageClearFull(), PageIsFull(), pgWalUsage, prune_freeze_plan(), prune_freeze_setup(), PruneFreezeParams::reason, PruneFreezeParams::relation, RelationGetRelid, RelationNeedsWAL, START_CRIT_SECTION, TransactionIdFollows(), and WalUsage::wal_fpi.
Referenced by heap_page_prune_opt(), and lazy_scan_prune().
| void heap_page_prune_execute | ( | Buffer | buffer, |
| bool | lp_truncate_only, | ||
| OffsetNumber * | redirected, | ||
| int | nredirected, | ||
| OffsetNumber * | nowdead, | ||
| int | ndead, | ||
| OffsetNumber * | nowunused, | ||
| int | nunused | ||
| ) |
Definition at line 1671 of file pruneheap.c.
References Assert, BufferGetPage(), fb(), HeapTupleHeaderIsHeapOnly(), i, ItemIdGetRedirect, ItemIdHasStorage, ItemIdIsDead, ItemIdIsNormal, ItemIdIsRedirected, ItemIdIsUsed, ItemIdSetDead, ItemIdSetRedirect, ItemIdSetUnused, page_verify_redirects(), PageGetItem(), PageGetItemId(), PageRepairFragmentation(), PageTruncateLinePointerArray(), and PG_USED_FOR_ASSERTS_ONLY.
Referenced by heap_page_prune_and_freeze(), and heap_xlog_prune_freeze().
Definition at line 209 of file pruneheap.c.
References BUFFER_LOCK_UNLOCK, BufferGetPage(), ConditionalLockBufferForCleanup(), fb(), GlobalVisTestFor(), GlobalVisTestIsRemovableXid(), HEAP_DEFAULT_FILLFACTOR, heap_page_prune_and_freeze(), LockBuffer(), Max, PageGetHeapFreeSpace(), PageIsFull(), pgstat_update_heap_dead_tuples(), PRUNE_ON_ACCESS, RecoveryInProgress(), PruneFreezeParams::relation, RelationGetTargetPageFreeSpace, and TransactionIdIsValid.
Referenced by BitmapHeapScanNextBlock(), heap_prepare_pagescan(), and heapam_index_fetch_tuple().
|
static |
Definition at line 663 of file pruneheap.c.
References Assert, fb(), heap_pre_freeze_checks(), RelationNeedsWAL, TransactionIdRetreat, XLogCheckBufferNeedsBackup(), and XLogHintBitIsNeeded.
Referenced by heap_page_prune_and_freeze().
|
static |
Definition at line 1103 of file pruneheap.c.
References Assert, elog, ERROR, fb(), FirstOffsetNumber, heap_prune_record_dead_or_unused(), heap_prune_record_redirect(), heap_prune_record_unchanged_lp_normal(), heap_prune_record_unchanged_lp_redirect(), heap_prune_record_unused(), HEAPTUPLE_DEAD, HEAPTUPLE_DELETE_IN_PROGRESS, HEAPTUPLE_INSERT_IN_PROGRESS, HEAPTUPLE_LIVE, HEAPTUPLE_RECENTLY_DEAD, HeapTupleHeaderAdvanceConflictHorizon(), HeapTupleHeaderGetUpdateXid(), HeapTupleHeaderGetXmin(), HeapTupleHeaderIndicatesMovedPartitions(), HeapTupleHeaderIsHotUpdated(), htsv_get_valid_status(), i, InvalidTransactionId, ItemIdGetRedirect, ItemIdIsDead, ItemIdIsNormal, ItemIdIsRedirected, ItemIdIsUsed, ItemPointerGetBlockNumber(), ItemPointerGetOffsetNumber(), MaxHeapTuplesPerPage, PageGetItem(), PageGetItemId(), HeapTupleHeaderData::t_ctid, TransactionIdEquals, and TransactionIdIsValid.
Referenced by prune_freeze_plan().
|
static |
Definition at line 1350 of file pruneheap.c.
References Assert, fb(), and MaxHeapTuplesPerPage.
Referenced by heap_prune_record_dead_or_unused().
|
static |
Definition at line 1385 of file pruneheap.c.
References fb(), heap_prune_record_dead(), heap_prune_record_unused(), and unlikely.
Referenced by heap_prune_chain().
|
static |
Definition at line 1305 of file pruneheap.c.
References Assert, fb(), TransactionIdIsNormal, TransactionIdIsValid, and TransactionIdPrecedes().
Referenced by heap_prune_record_unchanged_lp_normal().
|
static |
Definition at line 1319 of file pruneheap.c.
References Assert, fb(), and MaxHeapTuplesPerPage.
Referenced by heap_prune_chain().
|
static |
Definition at line 1618 of file pruneheap.c.
Referenced by prune_freeze_plan().
|
static |
Definition at line 1435 of file pruneheap.c.
References Assert, elog, ERROR, fb(), heap_prepare_freeze_tuple(), heap_prune_record_prunable(), HEAPTUPLE_DELETE_IN_PROGRESS, HEAPTUPLE_INSERT_IN_PROGRESS, HEAPTUPLE_LIVE, HEAPTUPLE_RECENTLY_DEAD, HeapTupleHeaderGetUpdateXid(), HeapTupleHeaderGetXmin(), HeapTupleHeaderXminCommitted(), PageGetItem(), PageGetItemId(), TransactionIdFollows(), TransactionIdIsNormal, and TransactionIdPrecedes().
Referenced by heap_prune_chain(), and prune_freeze_plan().
|
static |
Definition at line 1646 of file pruneheap.c.
Referenced by heap_prune_chain().
|
static |
Definition at line 1424 of file pruneheap.c.
Referenced by prune_freeze_plan().
|
static |
Definition at line 1402 of file pruneheap.c.
References Assert, fb(), and MaxHeapTuplesPerPage.
Referenced by heap_prune_chain(), heap_prune_record_dead_or_unused(), and prune_freeze_plan().
|
static |
Definition at line 1021 of file pruneheap.c.
References fb(), GlobalVisTestIsRemovableXid(), HEAPTUPLE_DEAD, HEAPTUPLE_RECENTLY_DEAD, HeapTupleSatisfiesVacuumHorizon(), NormalTransactionIdPrecedes, and TransactionIdIsValid.
Referenced by prune_freeze_plan().
|
inlinestatic |
Definition at line 1064 of file pruneheap.c.
References Assert, HEAPTUPLE_DEAD, and HEAPTUPLE_DELETE_IN_PROGRESS.
Referenced by heap_prune_chain().
| void log_heap_prune_and_freeze | ( | Relation | relation, |
| Buffer | buffer, | ||
| Buffer | vmbuffer, | ||
| uint8 | vmflags, | ||
| TransactionId | conflict_xid, | ||
| bool | cleanup_lock, | ||
| PruneReason | reason, | ||
| HeapTupleFreeze * | frozen, | ||
| int | nfrozen, | ||
| OffsetNumber * | redirected, | ||
| int | nredirected, | ||
| OffsetNumber * | dead, | ||
| int | ndead, | ||
| OffsetNumber * | unused, | ||
| int | nunused | ||
| ) |
Definition at line 2167 of file pruneheap.c.
References Assert, BufferGetPage(), BufferIsDirty(), data, elog, ERROR, fb(), heap_log_freeze_plan(), MaxHeapTuplesPerPage, xlhp_prune_items::ntargets, PageSetLSN(), PRUNE_ON_ACCESS, PRUNE_VACUUM_CLEANUP, PRUNE_VACUUM_SCAN, REGBUF_NO_IMAGE, REGBUF_STANDARD, RelationIsAccessibleInLogicalDecoding, SizeOfHeapPrune, TransactionIdIsValid, VISIBILITYMAP_ALL_FROZEN, VISIBILITYMAP_ALL_VISIBLE, VISIBILITYMAP_VALID_BITS, XLHP_CLEANUP_LOCK, XLHP_HAS_CONFLICT_HORIZON, XLHP_HAS_DEAD_ITEMS, XLHP_HAS_FREEZE_PLANS, XLHP_HAS_NOW_UNUSED_ITEMS, XLHP_HAS_REDIRECTIONS, XLHP_IS_CATALOG_REL, XLHP_VM_ALL_FROZEN, XLHP_VM_ALL_VISIBLE, XLOG_HEAP2_PRUNE_ON_ACCESS, XLOG_HEAP2_PRUNE_VACUUM_CLEANUP, XLOG_HEAP2_PRUNE_VACUUM_SCAN, XLogBeginInsert(), XLogHintBitIsNeeded, XLogInsert(), XLogRegisterBufData(), XLogRegisterBuffer(), and XLogRegisterData().
Referenced by heap_page_prune_and_freeze(), and lazy_vacuum_heap_page().
Definition at line 1847 of file pruneheap.c.
References Assert, fb(), FirstOffsetNumber, HeapTupleHeaderIsHeapOnly(), ItemIdGetRedirect, ItemIdHasStorage, ItemIdIsNormal, ItemIdIsRedirected, ItemIdIsUsed, OffsetNumberNext, PageGetItem(), PageGetItemId(), and PageGetMaxOffsetNumber().
Referenced by heap_page_prune_execute().
|
static |
Definition at line 458 of file pruneheap.c.
References Assert, BufferGetBlockNumber(), BufferGetPage(), elog, ERROR, fb(), FirstOffsetNumber, heap_prune_chain(), heap_prune_record_unchanged_lp_dead(), heap_prune_record_unchanged_lp_normal(), heap_prune_record_unchanged_lp_unused(), heap_prune_record_unused(), heap_prune_satisfies_vacuum(), HEAPTUPLE_DEAD, HeapTupleHeaderAdvanceConflictHorizon(), HeapTupleHeaderIsHeapOnly(), HeapTupleHeaderIsHotUpdated(), i, InvalidOffsetNumber, ItemIdGetLength, ItemIdIsDead, ItemIdIsNormal, ItemIdIsRedirected, ItemIdIsUsed, ItemPointerSet(), likely, OffsetNumberNext, OffsetNumberPrev, PageGetItem(), PageGetItemId(), PageGetMaxOffsetNumber(), HeapTupleData::t_tableOid, and unlikely.
Referenced by heap_page_prune_and_freeze().
|
static |
Definition at line 330 of file pruneheap.c.
References Assert, PruneFreezeParams::cutoffs, fb(), HEAP_PAGE_PRUNE_FREEZE, HEAP_PAGE_PRUNE_MARK_UNUSED_NOW, InvalidMultiXactId, InvalidTransactionId, PruneFreezeParams::options, and PruneFreezeParams::vistest.
Referenced by heap_page_prune_and_freeze().