|
PostgreSQL Source Code git master
|
#include "postgres.h"#include <unistd.h>#include "access/heapam.h"#include "access/heapam_xlog.h"#include "access/heaptoast.h"#include "access/rewriteheap.h"#include "access/transam.h"#include "access/xact.h"#include "access/xloginsert.h"#include "common/file_utils.h"#include "lib/ilist.h"#include "miscadmin.h"#include "pgstat.h"#include "replication/slot.h"#include "storage/bufmgr.h"#include "storage/bulk_write.h"#include "storage/fd.h"#include "storage/procarray.h"#include "utils/memutils.h"#include "utils/rel.h"
Go to the source code of this file.
Data Structures | |
| struct | RewriteStateData |
| struct | TidHashKey |
| struct | UnresolvedTupData |
| struct | OldToNewMappingData |
| struct | RewriteMappingFile |
| struct | RewriteMappingDataEntry |
Definition at line 185 of file rewriteheap.c.
Definition at line 177 of file rewriteheap.c.
| RewriteState begin_heap_rewrite | ( | Relation | old_heap, |
| Relation | new_heap, | ||
| TransactionId | oldest_xmin, | ||
| TransactionId | freeze_xid, | ||
| MultiXactId | cutoff_multi | ||
| ) |
Definition at line 234 of file rewriteheap.c.
References ALLOCSET_DEFAULT_SIZES, AllocSetContextCreate, CurrentMemoryContext, fb(), HASH_BLOBS, HASH_CONTEXT, hash_create(), HASH_ELEM, logical_begin_heap_rewrite(), MAIN_FORKNUM, MemoryContextSwitchTo(), palloc0_object, RelationGetNumberOfBlocks, and smgr_bulk_start_rel().
Referenced by heapam_relation_copy_for_cluster().
Definition at line 1157 of file rewriteheap.c.
References AllocateDir(), CloseTransientFile(), data_sync_elevel(), DEBUG1, elog, ereport, errcode_for_file_access(), errmsg(), ERROR, fb(), fd(), FreeDir(), fsync_fname(), get_dirent_type(), GetRedoRecPtr(), LOGICAL_REWRITE_FORMAT, MAXPGPATH, OpenTransientFile(), PG_BINARY, pg_fsync(), PG_LOGICAL_MAPPINGS_DIR, PGFILETYPE_ERROR, PGFILETYPE_REG, pgstat_report_wait_end(), pgstat_report_wait_start(), ReadDir(), ReplicationSlotsComputeLogicalRestartLSN(), snprintf, and XLogRecPtrIsValid.
Referenced by CheckPointGuts().
| void end_heap_rewrite | ( | RewriteState | state | ) |
Definition at line 297 of file rewriteheap.c.
References fb(), hash_seq_init(), hash_seq_search(), ItemPointerSetInvalid(), logical_end_heap_rewrite(), MemoryContextDelete(), raw_heap_insert(), smgr_bulk_finish(), and smgr_bulk_write().
Referenced by heapam_relation_copy_for_cluster().
| void heap_xlog_logical_rewrite | ( | XLogReaderState * | r | ) |
Definition at line 1075 of file rewriteheap.c.
References CloseTransientFile(), data, data_sync_elevel(), ereport, errcode_for_file_access(), errmsg(), ERROR, fb(), fd(), len, LOGICAL_REWRITE_FORMAT, LSN_FORMAT_ARGS, MAXPGPATH, OpenTransientFile(), PG_BINARY, pg_fsync(), PG_LOGICAL_MAPPINGS_DIR, pg_pwrite, pgstat_report_wait_end(), pgstat_report_wait_start(), snprintf, XLogRecGetData, and XLogRecGetXid.
Referenced by heap2_redo().
|
static |
Definition at line 761 of file rewriteheap.c.
References fb(), GetXLogInsertRecPtr(), HASH_BLOBS, HASH_CONTEXT, hash_create(), HASH_ELEM, InvalidTransactionId, ProcArrayGetReplicationSlotXmin(), and RelationIsAccessibleInLogicalDecoding.
Referenced by begin_heap_rewrite().
|
static |
Definition at line 907 of file rewriteheap.c.
References data_sync_elevel(), ereport, errcode_for_file_access(), errmsg(), ERROR, fb(), FileClose(), FileSync(), hash_seq_init(), hash_seq_search(), logical_heap_rewrite_flush_mappings(), RewriteMappingFile::path, and RewriteMappingFile::vfd.
Referenced by end_heap_rewrite().
|
static |
Definition at line 809 of file rewriteheap.c.
References Assert, dlist_mutable_iter::cur, dclist_container, dclist_count(), dclist_delete_from(), dclist_foreach_modify, DEBUG1, elog, ereport, errcode_for_file_access(), errmsg(), ERROR, fb(), FileWrite(), hash_seq_init(), hash_seq_search(), InvalidOid, len, RewriteMappingFile::mappings, MyDatabaseId, RewriteMappingFile::off, palloc(), RewriteMappingFile::path, pfree(), RelationGetRelid, RewriteMappingFile::vfd, RewriteMappingFile::xid, XLOG_HEAP2_REWRITE, XLogBeginInsert(), XLogInsert(), and XLogRegisterData().
Referenced by logical_end_heap_rewrite(), and logical_rewrite_log_mapping().
|
static |
Definition at line 1001 of file rewriteheap.c.
References fb(), HEAP_XMAX_IS_LOCKED_ONLY(), HeapTupleHeaderGetUpdateXid(), HeapTupleHeaderGetXmin(), logical_rewrite_log_mapping(), LogicalRewriteMappingData::new_locator, LogicalRewriteMappingData::new_tid, LogicalRewriteMappingData::old_locator, LogicalRewriteMappingData::old_tid, TransactionIdEquals, TransactionIdIsNormal, and TransactionIdPrecedes().
Referenced by rewrite_heap_tuple().
|
static |
Definition at line 937 of file rewriteheap.c.
References dclist_init(), dclist_push_tail(), ereport, errcode_for_file_access(), errmsg(), ERROR, fb(), GetCurrentTransactionId(), HASH_ENTER, hash_search(), InvalidOid, logical_heap_rewrite_flush_mappings(), LOGICAL_REWRITE_FORMAT, LSN_FORMAT_ARGS, RewriteMappingFile::mappings, MAXPGPATH, MemoryContextAlloc(), MyDatabaseId, RewriteMappingFile::off, RewriteMappingFile::path, PathNameOpenFile(), PG_BINARY, PG_LOGICAL_MAPPINGS_DIR, RelationGetRelid, snprintf, and RewriteMappingFile::vfd.
Referenced by logical_rewrite_heap_tuple().
|
static |
Definition at line 596 of file rewriteheap.c.
References Assert, elog, ereport, errcode(), errmsg(), ERROR, fb(), HEAP_DEFAULT_FILLFACTOR, heap_freetuple(), HEAP_INSERT_NO_LOGICAL, HEAP_INSERT_SKIP_FSM, heap_toast_insert_or_update(), HeapTupleHasExternal(), InvalidOffsetNumber, ItemPointerIsValid(), ItemPointerSet(), len, MAXALIGN, MaxHeapTupleSize, PageAddItem, PageGetHeapFreeSpace(), PageGetItem(), PageGetItemId(), PageInit(), RelationGetTargetPageFreeSpace, smgr_bulk_get_buf(), smgr_bulk_write(), and TOAST_TUPLE_THRESHOLD.
Referenced by end_heap_rewrite(), and rewrite_heap_tuple().
| bool rewrite_heap_dead_tuple | ( | RewriteState | state, |
| HeapTuple | old_tuple | ||
| ) |
Definition at line 546 of file rewriteheap.c.
References Assert, fb(), HASH_FIND, HASH_REMOVE, hash_search(), heap_freetuple(), and HeapTupleHeaderGetXmin().
Referenced by heapam_relation_copy_for_cluster().
| void rewrite_heap_tuple | ( | RewriteState | state, |
| HeapTuple | old_tuple, | ||
| HeapTuple | new_tuple | ||
| ) |
Definition at line 341 of file rewriteheap.c.
References Assert, fb(), HASH_ENTER, HASH_FIND, HASH_REMOVE, hash_search(), 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(), raw_heap_insert(), and TransactionIdPrecedes().
Referenced by reform_and_rewrite_tuple().