PostgreSQL Source Code
git master
|
#include "postgres.h"
#include "access/heapam.h"
#include "access/hio.h"
#include "access/htup_details.h"
#include "access/visibilitymap.h"
#include "storage/bufmgr.h"
#include "storage/freespace.h"
#include "storage/lmgr.h"
#include "storage/smgr.h"
Go to the source code of this file.
Functions | |
void | RelationPutHeapTuple (Relation relation, Buffer buffer, HeapTuple tuple, bool token) |
static Buffer | ReadBufferBI (Relation relation, BlockNumber targetBlock, ReadBufferMode mode, BulkInsertState bistate) |
static void | GetVisibilityMapPins (Relation relation, Buffer buffer1, Buffer buffer2, BlockNumber block1, BlockNumber block2, Buffer *vmbuffer1, Buffer *vmbuffer2) |
static void | RelationAddExtraBlocks (Relation relation, BulkInsertState bistate) |
Buffer | RelationGetBufferForTuple (Relation relation, Size len, Buffer otherBuffer, int options, BulkInsertState bistate, Buffer *vmbuffer, Buffer *vmbuffer_other) |
|
static |
Definition at line 139 of file hio.c.
References Assert(), BUFFER_LOCK_EXCLUSIVE, BUFFER_LOCK_UNLOCK, BufferGetPage(), BufferIsValid(), InvalidBuffer, LockBuffer(), PageIsAllVisible(), visibilitymap_pin(), and visibilitymap_pin_ok().
Referenced by RelationGetBufferForTuple().
|
static |
Definition at line 89 of file hio.c.
References Assert(), BufferGetBlockNumber(), BulkInsertStateData::current_buf, IncrBufferRefCount(), InvalidBuffer, MAIN_FORKNUM, mode, RBM_ZERO_AND_CLEANUP_LOCK, RBM_ZERO_AND_LOCK, ReadBufferExtended(), ReleaseBuffer(), and BulkInsertStateData::strategy.
Referenced by RelationAddExtraBlocks(), and RelationGetBufferForTuple().
|
static |
Definition at line 195 of file hio.c.
References BufferGetBlockNumber(), BufferGetPage(), BufferGetPageSize(), elog(), ERROR, FreeSpaceMapVacuumRange(), InvalidBlockNumber, Min, P_NEW, PageIsNew(), RBM_ZERO_AND_LOCK, ReadBufferBI(), RecordPageWithFreeSpace(), RelationExtensionLockWaiterCount(), RelationGetRelationName, SizeOfPageHeaderData, and UnlockReleaseBuffer().
Referenced by RelationGetBufferForTuple().
Buffer RelationGetBufferForTuple | ( | Relation | relation, |
Size | len, | ||
Buffer | otherBuffer, | ||
int | options, | ||
BulkInsertState | bistate, | ||
Buffer * | vmbuffer, | ||
Buffer * | vmbuffer_other | ||
) |
Definition at line 333 of file hio.c.
References Assert(), BUFFER_LOCK_EXCLUSIVE, BUFFER_LOCK_UNLOCK, BufferGetBlockNumber(), BufferGetPage(), BufferGetPageSize(), ConditionalLockBuffer(), ConditionalLockRelationForExtension(), BulkInsertStateData::current_buf, elog(), ereport, errcode(), errmsg(), ERROR, ExclusiveLock, GetPageWithFreeSpace(), GetVisibilityMapPins(), HEAP_DEFAULT_FILLFACTOR, HEAP_INSERT_FROZEN, HEAP_INSERT_SKIP_FSM, InvalidBlockNumber, InvalidBuffer, len, LockBuffer(), LockRelationForExtension(), MarkBufferDirty(), Max, MAXALIGN, MaxHeapTupleSize, MaxHeapTuplesPerPage, P_NEW, PageGetHeapFreeSpace(), PageGetMaxOffsetNumber(), PageInit(), PageIsAllVisible(), PageIsNew(), PANIC, RBM_NORMAL, RBM_ZERO_AND_LOCK, ReadBuffer(), ReadBufferBI(), RecordAndGetPageWithFreeSpace(), RELATION_IS_LOCAL, RelationAddExtraBlocks(), RelationGetNumberOfBlocks, RelationGetRelationName, RelationGetTargetBlock, RelationGetTargetPageFreeSpace, RelationSetTargetBlock, ReleaseBuffer(), unlikely, UnlockRelationForExtension(), UnlockReleaseBuffer(), and visibilitymap_pin().
Referenced by heap_insert(), heap_multi_insert(), and heap_update().
Definition at line 36 of file hio.c.
References Assert(), BufferGetBlockNumber(), BufferGetPage(), elog(), HEAP_XMAX_COMMITTED, HEAP_XMAX_IS_MULTI, HeapTupleHeaderIsSpeculative, InvalidOffsetNumber, ItemPointerSet(), PageAddItem, PageGetItem(), PageGetItemId(), PANIC, HeapTupleHeaderData::t_ctid, HeapTupleData::t_data, HeapTupleHeaderData::t_infomask, HeapTupleData::t_len, HeapTupleData::t_self, and token.
Referenced by heap_insert(), heap_multi_insert(), and heap_update().