codekingpro/portable-devtools
114k
1/*-------------------------------------------------------------------------2 *3 * rewriteheap.h4 * Declarations for heap rewrite support functions5 *6 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group7 * Portions Copyright (c) 1994-5, Regents of the University of California8 *9 * src/include/access/rewriteheap.h10 *11 *-------------------------------------------------------------------------12 */13#ifndef REWRITE_HEAP_H14#define REWRITE_HEAP_H15 16#include "access/htup.h"17#include "storage/itemptr.h"18#include "storage/relfilelocator.h"19#include "utils/relcache.h"20 21/* struct definition is private to rewriteheap.c */22typedef struct RewriteStateData *RewriteState;23 24extern RewriteState begin_heap_rewrite(Relation old_heap, Relation new_heap,25 TransactionId oldest_xmin, TransactionId freeze_xid,26 MultiXactId cutoff_multi);27extern void end_heap_rewrite(RewriteState state);28extern void rewrite_heap_tuple(RewriteState state, HeapTuple old_tuple,29 HeapTuple new_tuple);30extern bool rewrite_heap_dead_tuple(RewriteState state, HeapTuple old_tuple);31 32/*33 * On-Disk data format for an individual logical rewrite mapping.34 */35typedef struct LogicalRewriteMappingData36{37 RelFileLocator old_locator;38 RelFileLocator new_locator;39 ItemPointerData old_tid;40 ItemPointerData new_tid;41} LogicalRewriteMappingData;42 43/* ---44 * The filename consists of the following, dash separated,45 * components:46 * 1) database oid or InvalidOid for shared relations47 * 2) the oid of the relation48 * 3) upper 32bit of the LSN at which a rewrite started49 * 4) lower 32bit of the LSN at which a rewrite started50 * 5) xid we are mapping for51 * 6) xid of the xact performing the mapping52 * ---53 */54#define LOGICAL_REWRITE_FORMAT "map-%x-%x-%X_%X-%x-%x"55extern void CheckPointLogicalRewriteHeap(void);56 57#endif /* REWRITE_HEAP_H */58 