PostgreSQL Source Code
git master
|
#include "access/htup.h"
#include "storage/itemptr.h"
#include "storage/relfilenode.h"
#include "utils/relcache.h"
Go to the source code of this file.
Data Structures | |
struct | LogicalRewriteMappingData |
Macros | |
#define | LOGICAL_REWRITE_FORMAT "map-%x-%x-%X_%X-%x-%x" |
Typedefs | |
typedef struct RewriteStateData * | RewriteState |
typedef struct LogicalRewriteMappingData | LogicalRewriteMappingData |
Functions | |
RewriteState | begin_heap_rewrite (Relation OldHeap, Relation NewHeap, TransactionId OldestXmin, TransactionId FreezeXid, MultiXactId MultiXactCutoff) |
void | end_heap_rewrite (RewriteState state) |
void | rewrite_heap_tuple (RewriteState state, HeapTuple oldTuple, HeapTuple newTuple) |
bool | rewrite_heap_dead_tuple (RewriteState state, HeapTuple oldTuple) |
void | CheckPointLogicalRewriteHeap (void) |
#define LOGICAL_REWRITE_FORMAT "map-%x-%x-%X_%X-%x-%x" |
Definition at line 54 of file rewriteheap.h.
Referenced by CheckPointLogicalRewriteHeap(), heap_xlog_logical_rewrite(), logical_rewrite_log_mapping(), and UpdateLogicalMappings().
typedef struct LogicalRewriteMappingData LogicalRewriteMappingData |
typedef struct RewriteStateData* RewriteState |
Definition at line 22 of file rewriteheap.h.
RewriteState begin_heap_rewrite | ( | Relation | OldHeap, |
Relation | NewHeap, | ||
TransactionId | OldestXmin, | ||
TransactionId | FreezeXid, | ||
MultiXactId | MultiXactCutoff | ||
) |
Definition at line 237 of file rewriteheap.c.
References ALLOCSET_DEFAULT_SIZES, AllocSetContextCreate, CurrentMemoryContext, HASHCTL::entrysize, HASH_BLOBS, HASH_CONTEXT, hash_create(), HASH_ELEM, HASHCTL::hcxt, HASHCTL::keysize, logical_begin_heap_rewrite(), MemoryContextSwitchTo(), palloc(), palloc0(), RelationGetNumberOfBlocks, RewriteStateData::rs_blockno, RewriteStateData::rs_buffer, RewriteStateData::rs_buffer_valid, RewriteStateData::rs_cutoff_multi, RewriteStateData::rs_cxt, RewriteStateData::rs_freeze_xid, RewriteStateData::rs_new_rel, RewriteStateData::rs_old_new_tid_map, RewriteStateData::rs_old_rel, RewriteStateData::rs_oldest_xmin, and RewriteStateData::rs_unresolved_tups.
Referenced by heapam_relation_copy_for_cluster().
void CheckPointLogicalRewriteHeap | ( | void | ) |
Definition at line 1193 of file rewriteheap.c.
References AllocateDir(), CloseTransientFile(), dirent::d_name, data_sync_elevel(), DEBUG1, elog, ereport, errcode_for_file_access(), errmsg(), ERROR, fd(), FreeDir(), GetRedoRecPtr(), InvalidXLogRecPtr, LOGICAL_REWRITE_FORMAT, lstat, MAXPGPATH, OpenTransientFile(), PG_BINARY, pg_fsync(), pgstat_report_wait_end(), pgstat_report_wait_start(), ReadDir(), ReplicationSlotsComputeLogicalRestartLSN(), S_ISREG, snprintf, stat::st_mode, and WAIT_EVENT_LOGICAL_REWRITE_CHECKPOINT_SYNC.
Referenced by CheckPointGuts().
void end_heap_rewrite | ( | RewriteState | state | ) |
Definition at line 300 of file rewriteheap.c.
References hash_seq_init(), hash_seq_search(), ItemPointerSetInvalid, log_newpage(), logical_end_heap_rewrite(), MAIN_FORKNUM, MemoryContextDelete(), PageSetChecksumInplace(), raw_heap_insert(), RelationData::rd_node, RelationData::rd_smgr, RelationNeedsWAL, RelationOpenSmgr, RewriteStateData::rs_blockno, RewriteStateData::rs_buffer, RewriteStateData::rs_buffer_valid, RewriteStateData::rs_cxt, RewriteStateData::rs_new_rel, RewriteStateData::rs_unresolved_tups, smgrextend(), smgrimmedsync(), HeapTupleHeaderData::t_ctid, HeapTupleData::t_data, and UnresolvedTupData::tuple.
Referenced by heapam_relation_copy_for_cluster().
bool rewrite_heap_dead_tuple | ( | RewriteState | state, |
HeapTuple | oldTuple | ||
) |
Definition at line 564 of file rewriteheap.c.
References Assert, HASH_FIND, HASH_REMOVE, hash_search(), heap_freetuple(), HeapTupleHeaderGetXmin, RewriteStateData::rs_unresolved_tups, HeapTupleData::t_data, HeapTupleData::t_self, TidHashKey::tid, UnresolvedTupData::tuple, and TidHashKey::xmin.
Referenced by heapam_relation_copy_for_cluster().
void rewrite_heap_tuple | ( | RewriteState | state, |
HeapTuple | oldTuple, | ||
HeapTuple | newTuple | ||
) |
Definition at line 362 of file rewriteheap.c.
References Assert, HASH_ENTER, HASH_FIND, HASH_REMOVE, hash_search(), HEAP2_XACT_MASK, heap_copytuple(), heap_freetuple(), heap_freeze_tuple(), HEAP_UPDATED, HEAP_XACT_MASK, HEAP_XMAX_INVALID, HeapTupleHeaderGetUpdateXid, HeapTupleHeaderGetXmin, HeapTupleHeaderIndicatesMovedPartitions, HeapTupleHeaderIsOnlyLocked(), ItemPointerEquals(), ItemPointerSetInvalid, logical_rewrite_heap_tuple(), MemoryContextSwitchTo(), OldToNewMappingData::new_tid, UnresolvedTupData::old_tid, raw_heap_insert(), RelationData::rd_rel, RewriteStateData::rs_cutoff_multi, RewriteStateData::rs_cxt, RewriteStateData::rs_freeze_xid, RewriteStateData::rs_old_new_tid_map, RewriteStateData::rs_old_rel, RewriteStateData::rs_oldest_xmin, RewriteStateData::rs_unresolved_tups, HeapTupleHeaderData::t_choice, HeapTupleHeaderData::t_ctid, HeapTupleData::t_data, HeapTupleHeaderData::t_heap, HeapTupleHeaderData::t_infomask, HeapTupleHeaderData::t_infomask2, HeapTupleData::t_self, TidHashKey::tid, TransactionIdPrecedes(), UnresolvedTupData::tuple, and TidHashKey::xmin.
Referenced by reform_and_rewrite_tuple().