31#define REPL_PLUGIN_NAME "pgrepack"
80 errmsg(
"could not map dynamic shared memory segment"));
290#ifdef USE_ASSERT_CHECKING
403 elog(
DEBUG1,
"REPACK: confirmed receive location %X/%X",
427 errmsg(
"could not read WAL record"));
474 errmsg(
"waiting for WAL failed"));
void BackgroundWorkerUnblockSignals(void)
void BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid, uint32 flags)
void BufFileWrite(BufFile *file, const void *ptr, size_t size)
BufFile * BufFileCreateFileSet(FileSet *fileset, const char *name)
void BufFileClose(BufFile *file)
#define Assert(condition)
#define OidIsValid(objectId)
void ConditionVariableSignal(ConditionVariable *cv)
void LogicalDecodingProcessRecord(LogicalDecodingContext *ctx, XLogReaderState *record)
void dsm_detach(dsm_segment *seg)
void * dsm_segment_address(dsm_segment *seg)
dsm_segment * dsm_attach(dsm_handle h)
int errcode(int sqlerrcode)
#define ereport(elevel,...)
void ExecDropSingleTupleTableSlot(TupleTableSlot *slot)
#define palloc0_object(type)
void before_shmem_exit(pg_on_exit_callback function, Datum arg)
void LogicalConfirmReceivedLocation(XLogRecPtr lsn)
void FreeDecodingContext(LogicalDecodingContext *ctx)
void DecodingContextFindStartpoint(LogicalDecodingContext *ctx)
LogicalDecodingContext * CreateInitDecodingContext(const char *plugin, List *output_plugin_options, bool need_full_snapshot, XLogRecPtr restart_lsn, XLogReaderRoutine *xl_routine, LogicalOutputPluginWriterPrepareWrite prepare_write, LogicalOutputPluginWriterWrite do_write, LogicalOutputPluginWriterUpdateProgress update_progress)
void CheckLogicalDecodingRequirements(void)
void EnsureLogicalDecodingEnabled(void)
void pfree(void *pointer)
MemoryContext CurrentMemoryContext
#define AllocSetContextCreate
#define ALLOCSET_DEFAULT_SIZES
#define CHECK_FOR_INTERRUPTS()
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
static char buf[DEFAULT_XLOG_SEG_SIZE]
static uint32 DatumGetUInt32(Datum X)
static Datum PointerGetDatum(const void *X)
static Pointer DatumGetPointer(Datum X)
void pq_set_parallel_leader(pid_t pid, ProcNumber procNumber)
void pq_redirect_to_shm_mq(dsm_segment *seg, shm_mq_handle *mqh)
int SendProcSignal(pid_t pid, ProcSignalReason reason, ProcNumber procNumber)
#define RelFileLocatorEquals(locator1, locator2)
void DecodingWorkerFileName(char *fname, Oid relid, uint32 seq)
static void RepackWorkerShutdown(int code, Datum arg)
static void repack_cleanup_logical_decoding(LogicalDecodingContext *ctx)
static RelFileLocator repacked_rel_toast_locator
bool AmRepackWorker(void)
static bool decode_concurrent_changes(LogicalDecodingContext *ctx, DecodingWorkerShared *shared)
bool change_useless_for_repack(XLogRecordBuffer *buf)
static XLogSegNo repack_current_segment
static void export_initial_snapshot(Snapshot snapshot, DecodingWorkerShared *shared)
static LogicalDecodingContext * repack_setup_logical_decoding(Oid relid)
static RelFileLocator repacked_rel_locator
void RepackWorkerMain(Datum main_arg)
static bool am_repack_worker
ResourceOwner CurrentResourceOwner
void SharedFileSetAttach(SharedFileSet *fileset, dsm_segment *seg)
void shm_mq_set_sender(shm_mq *mq, PGPROC *proc)
shm_mq_handle * shm_mq_attach(shm_mq *mq, dsm_segment *seg, BackgroundWorkerHandle *handle)
void ReplicationSlotCreate(const char *name, bool db_specific, ReplicationSlotPersistency persistency, bool two_phase, bool failover, bool synced)
void ReplicationSlotDropAcquired(void)
void CheckSlotPermissions(void)
Snapshot SnapBuildInitialSnapshot(SnapBuild *builder)
void SerializeSnapshot(Snapshot snapshot, char *start_address)
Size EstimateSnapshotSpace(Snapshot snapshot)
void InvalidateCatalogSnapshot(void)
static void SpinLockRelease(volatile slock_t *lock)
static void SpinLockAcquire(volatile slock_t *lock)
bool BecomeLockGroupMember(PGPROC *leader, int pid)
char error_queue[FLEXIBLE_ARRAY_MEMBER]
ProcNumber backend_proc_number
void * output_writer_private
RelFileLocator rd_locator
DecodedXLogRecord * record
XLogReaderRoutine routine
void table_close(Relation relation, LOCKMODE lockmode)
Relation table_open(Oid relationId, LOCKMODE lockmode)
#define TransactionIdIsValid(xid)
TransactionId GetTopTransactionIdIfAny(void)
void StartTransactionCommand(void)
void CommitTransactionCommand(void)
#define XACT_REPEATABLE_READ
#define XLByteToSeg(xlrp, logSegNo, wal_segsz_bytes)
#define XLogRecPtrIsValid(r)
#define InvalidXLogRecPtr
bool XLogRecGetBlockTagExtended(XLogReaderState *record, uint8 block_id, RelFileLocator *rlocator, ForkNumber *forknum, BlockNumber *blknum, Buffer *prefetch_buffer)
XLogRecord * XLogReadRecord(XLogReaderState *state, char **errormsg)
void wal_segment_close(XLogReaderState *state)
void wal_segment_open(XLogReaderState *state, XLogSegNo nextSegNo, TimeLineID *tli_p)
int read_local_xlog_page(XLogReaderState *state, XLogRecPtr targetPagePtr, int reqLen, XLogRecPtr targetRecPtr, char *cur_page)
int read_local_xlog_page_no_wait(XLogReaderState *state, XLogRecPtr targetPagePtr, int reqLen, XLogRecPtr targetRecPtr, char *cur_page)
WaitLSNResult WaitForLSN(WaitLSNType lsnType, XLogRecPtr targetLSN, int64 timeout)
@ WAIT_LSN_RESULT_TIMEOUT
@ WAIT_LSN_RESULT_SUCCESS
@ WAIT_LSN_TYPE_PRIMARY_FLUSH