|
PostgreSQL Source Code git master
|
#include "postgres.h"#include "access/gin_private.h"#include "access/ginxlog.h"#include "access/xloginsert.h"#include "commands/vacuum.h"#include "miscadmin.h"#include "storage/indexfsm.h"#include "storage/lmgr.h"#include "storage/predicate.h"#include "storage/read_stream.h"#include "utils/memutils.h"
Go to the source code of this file.
Data Structures | |
| struct | GinVacuumState |
| struct | DataPageDeleteStack |
Typedefs | |
| typedef struct DataPageDeleteStack | DataPageDeleteStack |
Functions | |
| ItemPointer | ginVacuumItemPointers (GinVacuumState *gvs, ItemPointerData *items, int nitem, int *nremaining) |
| static void | xlogVacuumPage (Relation index, Buffer buffer) |
| static void | ginDeletePostingPage (GinVacuumState *gvs, Buffer dBuffer, Buffer lBuffer, Buffer pBuffer, OffsetNumber myoff, bool isParentRoot) |
| static bool | ginScanPostingTreeToDelete (GinVacuumState *gvs, DataPageDeleteStack *myStackItem) |
| static bool | ginVacuumPostingTreeLeaves (GinVacuumState *gvs, BlockNumber blkno) |
| static void | ginVacuumPostingTree (GinVacuumState *gvs, BlockNumber rootBlkno) |
| static Page | ginVacuumEntryPage (GinVacuumState *gvs, Buffer buffer, BlockNumber *roots, uint32 *nroot) |
| IndexBulkDeleteResult * | ginbulkdelete (IndexVacuumInfo *info, IndexBulkDeleteResult *stats, IndexBulkDeleteCallback callback, void *callback_state) |
| IndexBulkDeleteResult * | ginvacuumcleanup (IndexVacuumInfo *info, IndexBulkDeleteResult *stats) |
| bool | GinPageIsRecyclable (Page page) |
| IndexBulkDeleteResult * ginbulkdelete | ( | IndexVacuumInfo * | info, |
| IndexBulkDeleteResult * | stats, | ||
| IndexBulkDeleteCallback | callback, | ||
| void * | callback_state | ||
| ) |
Definition at line 602 of file ginvacuum.c.
References ALLOCSET_DEFAULT_SIZES, AllocSetContextCreate, AmAutoVacuumWorkerProcess, Assert, DataPageDeleteStack::buffer, BufferGetPage(), callback(), CurrentMemoryContext, END_CRIT_SECTION, fb(), FirstOffsetNumber, GIN_EXCLUSIVE, GIN_ROOT_BLKNO, GIN_SHARE, GIN_UNLOCK, GinGetDownlink, ginInsertCleanup(), GinPageGetOpaque, GinPageIsData, GinPageIsLeaf, ginVacuumEntryPage(), ginVacuumPostingTree(), i, IndexVacuumInfo::index, initGinState(), InvalidBlockNumber, LockBuffer(), MAIN_FORKNUM, MarkBufferDirty(), MemoryContextDelete(), IndexBulkDeleteResult::num_index_tuples, PageGetItem(), PageGetItemId(), PageGetMaxOffsetNumber(), PageRestoreTempPage(), palloc0_object, RBM_NORMAL, ReadBufferExtended(), START_CRIT_SECTION, IndexVacuumInfo::strategy, GinVacuumState::tmpCxt, UnlockReleaseBuffer(), vacuum_delay_point(), and xlogVacuumPage().
Referenced by ginhandler().
|
static |
Definition at line 152 of file ginvacuum.c.
References Assert, BufferGetBlockNumber(), BufferGetPage(), data, END_CRIT_SECTION, fb(), GinDataPageGetPostingItem, GinPageDeletePostingItem(), GinPageGetDeleteXid, GinPageGetOpaque, GinPageSetDeleted, GinPageSetDeleteXid, MarkBufferDirty(), DataPageDeleteStack::myoff, PageSetLSN(), PostingItemGetBlockNumber, PredicateLockPageCombine(), ReadNextTransactionId(), REGBUF_STANDARD, RelationNeedsWAL, START_CRIT_SECTION, XLOG_GIN_DELETE_PAGE, XLogBeginInsert(), XLogInsert(), XLogRegisterBuffer(), and XLogRegisterData().
Referenced by ginScanPostingTreeToDelete().
Definition at line 862 of file ginvacuum.c.
References fb(), GinPageGetDeleteXid, GinPageIsDeleted, GlobalVisCheckRemovableXid(), PageIsNew(), and TransactionIdIsValid.
Referenced by GinNewBuffer(), and ginvacuumcleanup().
|
static |
Definition at line 269 of file ginvacuum.c.
References Assert, DataPageDeleteStack::buffer, BufferGetPage(), BufferIsValid(), fb(), FirstOffsetNumber, GIN_EXCLUSIVE, GinDataLeafPageIsEmpty, GinDataPageGetPostingItem, ginDeletePostingPage(), GinPageGetOpaque, GinPageIsData, GinPageIsLeaf, GinPageRightMost, ginScanPostingTreeToDelete(), i, InvalidBuffer, LockBuffer(), MAIN_FORKNUM, palloc0_object, PostingItemGetBlockNumber, RBM_NORMAL, ReadBufferExtended(), and UnlockReleaseBuffer().
Referenced by ginScanPostingTreeToDelete(), and ginVacuumPostingTree().
| IndexBulkDeleteResult * ginvacuumcleanup | ( | IndexVacuumInfo * | info, |
| IndexBulkDeleteResult * | stats | ||
| ) |
Definition at line 725 of file ginvacuum.c.
References AmAutoVacuumWorkerProcess, IndexVacuumInfo::analyze_only, Assert, block_range_read_stream_cb(), DataPageDeleteStack::buffer, BufferGetPage(), BlockRangeReadStreamPrivate::current_blocknum, IndexVacuumInfo::estimated_count, IndexBulkDeleteResult::estimated_count, ExclusiveLock, fb(), GIN_ROOT_BLKNO, GIN_SHARE, ginInsertCleanup(), GinPageIsData, GinPageIsLeaf, GinPageIsList, GinPageIsRecyclable(), ginUpdateStats(), IndexVacuumInfo::index, IndexFreeSpaceMapVacuum(), initGinState(), InvalidBuffer, BlockRangeReadStreamPrivate::last_exclusive, LockBuffer(), LockRelationForExtension(), MAIN_FORKNUM, Max, IndexVacuumInfo::num_heap_tuples, IndexBulkDeleteResult::num_index_tuples, IndexBulkDeleteResult::num_pages, PageGetMaxOffsetNumber(), IndexBulkDeleteResult::pages_free, palloc0_object, read_stream_begin_relation(), read_stream_end(), READ_STREAM_FULL, READ_STREAM_MAINTENANCE, read_stream_next_buffer(), READ_STREAM_USE_BATCHING, RecordFreeIndexPage(), RELATION_IS_LOCAL, RelationGetNumberOfBlocks, IndexVacuumInfo::strategy, UnlockRelationForExtension(), UnlockReleaseBuffer(), and vacuum_delay_point().
Referenced by ginhandler().
|
static |
Definition at line 493 of file ginvacuum.c.
References attnum, DataPageDeleteStack::buffer, BufferGetPage(), elog, ERROR, fb(), FirstOffsetNumber, ginCompressPostingList(), GinFormTuple(), GinGetDownlink, GinGetNPosting, GinGetPosting, GinIsPostingTree, GinItupIsCompressed, GinMaxItemSize, ginPostingListDecode(), gintuple_get_attrnum(), gintuple_get_key(), ginVacuumItemPointers(), i, IndexTupleSize(), items, nitems, PageAddItem, PageGetItem(), PageGetItemId(), PageGetMaxOffsetNumber(), PageGetTempPageCopy(), PageIndexTupleDelete(), pfree(), RelationGetRelationName, and SizeOfGinPostingList.
Referenced by ginbulkdelete().
| ItemPointer ginVacuumItemPointers | ( | GinVacuumState * | gvs, |
| ItemPointerData * | items, | ||
| int | nitem, | ||
| int * | nremaining | ||
| ) |
Definition at line 48 of file ginvacuum.c.
References fb(), i, items, palloc_array, and remaining.
Referenced by ginVacuumEntryPage(), and ginVacuumPostingTreeLeaf().
|
static |
Definition at line 442 of file ginvacuum.c.
References Assert, DataPageDeleteStack::buffer, DataPageDeleteStack::child, fb(), ginScanPostingTreeToDelete(), ginVacuumPostingTreeLeaves(), InvalidBuffer, InvalidOffsetNumber, LockBufferForCleanup(), MAIN_FORKNUM, pfree(), PG_USED_FOR_ASSERTS_ONLY, RBM_NORMAL, ReadBufferExtended(), root, and UnlockReleaseBuffer().
Referenced by ginbulkdelete().
|
static |
Definition at line 379 of file ginvacuum.c.
References Assert, DataPageDeleteStack::buffer, BufferGetPage(), fb(), FirstOffsetNumber, GIN_EXCLUSIVE, GIN_SHARE, GIN_UNLOCK, GinDataLeafPageIsEmpty, GinDataPageGetPostingItem, GinPageGetOpaque, GinPageIsData, GinPageIsLeaf, ginVacuumPostingTreeLeaf(), InvalidBlockNumber, LockBuffer(), MAIN_FORKNUM, MemoryContextReset(), MemoryContextSwitchTo(), PageGetMaxOffsetNumber(), PostingItemGetBlockNumber, RBM_NORMAL, ReadBufferExtended(), and UnlockReleaseBuffer().
Referenced by ginVacuumPostingTree().
Definition at line 90 of file ginvacuum.c.
References Assert, BufferGetPage(), fb(), GinPageIsData, GinPageIsLeaf, PageSetLSN(), REGBUF_FORCE_IMAGE, REGBUF_STANDARD, RelationNeedsWAL, XLOG_GIN_VACUUM_PAGE, XLogBeginInsert(), XLogInsert(), and XLogRegisterBuffer().
Referenced by ginbulkdelete().